Pārlūkot izejas kodu

Search end-point for pros remote search

Vijayakrishnan 4 gadi atpakaļ
vecāks
revīzija
c44bdb6ff4

+ 23 - 0
app/Http/Controllers/HomeController.php

@@ -7,6 +7,7 @@ use App\Models\Appointment;
 use App\Models\AppSession;
 use App\Models\ClientSMS;
 use App\Models\Facility;
+use App\Models\ProProAccess;
 use App\Models\Ticket;
 use DateTime;
 
@@ -421,6 +422,28 @@ class HomeController extends Controller
         return view('app/pharmacy-suggest', compact('pharmacies'));
     }
 
+    public function proSuggest(Request $request) {
+        $term = $request->input('term') ? trim($request->input('term')) : '';
+        if (empty($term)) return '';
+        $term = strtolower($term);
+        $pros = Pro::where(function ($q) use ($term) {
+            $q->orWhereRaw('LOWER(name_first::text) LIKE ?', ['%' . $term . '%'])
+                ->orWhereRaw('LOWER(name_last::text) LIKE ?', ['%' . $term . '%'])
+                ->orWhereRaw('cell_number LIKE ?', ['%' . $term . '%']);
+        });
+        if($this->performer->pro && $this->performer->pro->pro_type != 'ADMIN'){
+            $accessiblePros = ProProAccess::where('owner_pro_id', $this->performer->pro->id);
+            $accessibleProIds = [];
+            foreach($accessiblePros as $accessiblePro){
+                $accessibleProIds[] = $accessiblePro->id;
+            }
+            $accessibleProIds[] = $this->performer->pro->id;
+            $pros->whereIn('id', $accessibleProIds);
+        }
+        $suggestedPros = $pros->orderBy('name_last')->orderBy('name_first')->get();
+        return view('app/pro-suggest', compact('suggestedPros'));
+    }
+
     public function unmappedSMS(Request $request, $filter = '')
     {
         $proID = $this->performer()->pro->id;

+ 13 - 0
resources/views/app/pro-suggest.blade.php

@@ -0,0 +1,13 @@
+@if(!count($suggestedPros))
+    <span class="d-block no-suggest-items">No matching pros!</span>
+@endif
+<?php $activeSet = false; ?>
+@foreach($suggestedPros as $suggestedPro)
+    <a native class="d-block suggest-item pro-suggest text-nowrap {{ $activeSet ? '' : 'active'  }}" href="#"
+       data-target-uid="{{$suggestedPro->uid}}"
+       data-name="{{$suggestedPro->displayName()}}">
+        {{$suggestedPro->displayName()}}
+    </a>
+    <?php $activeSet = true; ?>
+@endforeach
+

+ 3 - 0
routes/web.php

@@ -166,6 +166,9 @@ Route::middleware('pro.auth')->group(function () {
     // Pharmacy suggest
     Route::get('/pharmacy-suggest', 'HomeController@pharmacySuggest');
 
+    // Pro suggest
+    Route::get('/pro-suggest', 'HomeController@proSuggest');
+
     // embeddable sections
     Route::get('/embed/{patient}/{section}/{selectable}', 'PatientController@embedSection')->name('embed-section');