diff --git a/wildlifecompliance/components/users/api.py b/wildlifecompliance/components/users/api.py index d8cec9449..8f8b43e05 100644 --- a/wildlifecompliance/components/users/api.py +++ b/wildlifecompliance/components/users/api.py @@ -1110,17 +1110,44 @@ def get(self, request, format=None): return Response() search_term = request.GET.get('term', '') + search_option = request.GET.get('option', 'contains') if search_term: + data_transform = [] - user_data = EmailUser.objects.annotate( - search_name=Concat('first_name', Value(' '), 'last_name') - ).annotate( - legal_search_name=Concat('legal_first_name', Value(' '), 'legal_last_name') - ).filter( - Q(search_name__icontains=search_term) | - Q(legal_search_name__icontains=search_term) | - Q(email__icontains=search_term) - )[:10] + user_data = [] + if search_option == 'contains': + user_data = EmailUser.objects.annotate( + search_name=Concat('first_name', Value(' '), 'last_name') + ).annotate( + legal_search_name=Concat('legal_first_name', Value(' '), 'legal_last_name') + ).filter( + Q(search_name__icontains=search_term) | + Q(legal_search_name__icontains=search_term) | + Q(email__icontains=search_term) + )[:40] + + if search_option == 'starts_with': + user_data = EmailUser.objects.annotate( + search_name=Concat('first_name', Value(' '), 'last_name') + ).annotate( + legal_search_name=Concat('legal_first_name', Value(' '), 'legal_last_name') + ).filter( + Q(search_name__istartswith=search_term) | + Q(legal_search_name__istartswith=search_term) | + Q(email__istartswith=search_term) + )[:40] + + if search_option == 'ends_with': + user_data = EmailUser.objects.annotate( + search_name=Concat('first_name', Value(' '), 'last_name') + ).annotate( + legal_search_name=Concat('legal_first_name', Value(' '), 'legal_last_name') + ).filter( + Q(search_name__iendswith=search_term) | + Q(legal_search_name__iendswith=search_term) | + Q(email__iendswith=search_term) + )[:40] + for email_user in user_data: if email_user.dob: text = '{} {} (DOB: {})'.format(get_first_name(email_user), diff --git a/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/search.vue b/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/search.vue index f5c96654d..d6f2d7636 100644 --- a/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/search.vue +++ b/wildlifecompliance/frontend/wildlifecompliance/src/components/internal/search.vue @@ -13,8 +13,22 @@
-
-
+
+
+
+ + +
+
+ + +
+
+ + +
+
+