소스 검색

Admin > Accounting Items: filter by pro & client

Vijayakrishnan Krishnan 1 주 전
부모
커밋
03da8b7978
2개의 변경된 파일50개의 추가작업 그리고 0개의 파일을 삭제
  1. 28 0
      app/Http/Controllers/AdminController.php
  2. 22 0
      resources/views/app/admin/accounting-items.blade.php

+ 28 - 0
app/Http/Controllers/AdminController.php

@@ -1034,6 +1034,16 @@ class AdminController extends Controller
         elseif($request->input('active') == 'inactive')
             $conditions[] = 'ai.is_active IS FALSE';
 
+        if($request->input('pro')) {
+            $conditions[] = 'p.uid = :proUid';
+            $params['proUid'] = $request->input('pro');
+        }
+
+        if($request->input('client')) {
+            $conditions[] = 'cl.uid = :clientUid';
+            $params['clientUid'] = $request->input('client');
+        }
+
         // execute
         $columns = implode(",\n", $columns);
         $tables = implode("\n", $tables);
@@ -1085,12 +1095,30 @@ class AdminController extends Controller
             $paginator->setPath(route('accounting-items'));
         }
 
+        // all clients
+        $allClientsSQL = "SELECT DISTINCT(ai.client_id), cl.uid as client_uid, cl.name_first, cl.name_last
+        FROM 
+            $tables
+        WHERE
+            $conditions";
+        $allClientsResult = DB::select($allClientsSQL, $params);
+
+        // all pros
+        $allProsSQL = "SELECT DISTINCT(ai.pro_id), p.uid as pro_uid, p.name_first, p.name_last
+        FROM 
+            $tables
+        WHERE
+            $conditions";
+        $allProsResult = DB::select($allProsSQL, $params);
+
         $html = view('app.admin.accounting-items', [
             'total' => $countResult[0]->count,
             'records' => $dataResult,
             'paginator' => $paginator,
             'expected_total' => $expectedTotal,
             'received_total' => $receivedTotal,
+            'all_clients' => $allClientsResult,
+            'all_pros' => $allProsResult,
         ]);
 
         if($request->input('_ql')) printQueryLog(DB::getQueryLog());

+ 22 - 0
resources/views/app/admin/accounting-items.blade.php

@@ -61,6 +61,28 @@
                             <option value="inactive" {{ selectIf(request()->input('active') == 'inactive') }}>Inactive</option>
                         </select>
                     </div>
+                    <div class="d-inline-flex align-items-baseline mr-3">
+                        <span class="text-secondary mr-2">Pro</span>
+                        <select name="pro" class="form-control form-control-sm max-width-110px min-width-unset">
+                            <option value="" {{ selectIf(!request()->input('pro')) }}>All</option>
+                            @foreach($all_pros as $p)
+                                <option value="{{$p->pro_uid}}" {{ selectIf(request()->input('pro') == $p->pro_uid) }}>
+                                    {{implode(', ', [$p->name_last, $p->name_first])}}
+                                </option>
+                            @endforeach
+                        </select>
+                    </div>
+                    <div class="d-inline-flex align-items-baseline mr-3">
+                        <span class="text-secondary mr-2">Client</span>
+                        <select name="client" class="form-control form-control-sm max-width-110px min-width-unset">
+                            <option value="" {{ selectIf(!request()->input('client')) }}>All</option>
+                            @foreach($all_clients as $c)
+                                <option value="{{$c->client_uid}}" {{ selectIf(request()->input('client') == $c->client_uid) }}>
+                                    {{implode(', ', [$c->name_last, $c->name_first])}}
+                                </option>
+                            @endforeach
+                        </select>
+                    </div>
                     <label class="d-inline-flex align-items-center mr-3 mb-0">
                         <input type="checkbox" name="paginate" class="mr-1" {{request()->input('paginate') ? 'checked' : ''}}>
                         <span>Paginate</span>