summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2024-09-26 11:28:11 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2024-09-26 11:28:11 +0700
commitb920f203ac689497d117f5a5c4def44f87f85bc7 (patch)
treef61ea48d83bfab22329b87b03a9cdfbbaa06a1fe /indoteknik_api/controllers/api_v1
parent2638a9fbfe29520e5be0b88810208f5232aaac7b (diff)
cr api register
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
-rw-r--r--indoteknik_api/controllers/api_v1/user.py28
1 files changed, 17 insertions, 11 deletions
diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py
index 7166bd79..f4fffc0e 100644
--- a/indoteknik_api/controllers/api_v1/user.py
+++ b/indoteknik_api/controllers/api_v1/user.py
@@ -157,20 +157,26 @@ class User(controller.Controller):
user.partner_id.email = email
user.partner_id.mobile = phone
- if type_acc == 'business':
- parameter = [
- ('company_type', '=', 'company'),
- ('name', 'ilike', business_name)
- ]
- match_company = request.env['res.partner'].search(parameter, limit=1)
- match_ratio = 0
- if match_company:
- match_ratio = SequenceMatcher(None, match_company.name, business_name).ratio()
- if match_ratio > 0.8:
+ if type_acc == 'business' and business_name:
+ # Eksekusi query SQL menggunakan Levenshtein distance
+ query = """
+ SELECT name, levenshtein(name::text, %s) AS distance
+ FROM res_partner
+ WHERE levenshtein(name::text, %s) < 3
+ ORDER BY distance ASC
+ """
+ params = (business_name, business_name)
+ request.env.cr.execute(query, params)
+ result = request.env.cr.fetchone()
+
+ if result:
+ match_company_name = result[0]
+ match_company_id = result[2]
+
# Create a user company request
request.env['user.company.request'].create({
'user_id': user.partner_id.id,
- 'user_company_id': match_company.id,
+ 'user_company_id': match_company_id,
'user_input': business_name
})
else: