Browse Source

added filters to bdt devices

= 3 years ago
parent
commit
de8333f6e4

+ 56 - 1
app/Http/Controllers/AdminController.php

@@ -425,8 +425,63 @@ class AdminController extends Controller
     public function bdtDevices(Request $request)
     {
         $filters = $request->all();
+        $bdtDevices = BDTDevice::query();
 
-        $bdtDevices = BDTDevice::paginate(20);
+        $imei = $request->input('imei');
+        if($imei){
+            $bdtDevices = $bdtDevices->where('imei', '=', $imei);
+        }
+        $client = $request->input('client');
+
+        if($client){
+            $client = '%'.$client.'%';
+            $bdtDevices = $bdtDevices->whereHas('clientBDTDevice', function($cbdtdQuery) use ($client) {
+                return $cbdtdQuery->whereHas('client', function($clientQuery) use ($client){
+                    return $clientQuery->where(function($q) use ($client){
+                        return $q->where('name_first', 'ilike', $client)
+                        ->orWhere('name_last', 'ilike', $client)
+                        ->orWhere('cell_number', 'ilike', $client)
+                        ->orWhereRaw("name_first||' '||name_last ILIKE "."'".$client."'"); 
+                    });
+                });
+            });
+        }
+
+        $is_issued = $request->input('is_issued');
+        if($is_issued){
+            if($is_issued == 'YES'){
+                $bdtDevices = $bdtDevices->whereHas('clientBDTDevice');
+            }
+
+            if($is_issued == 'NO'){
+                $bdtDevices = $bdtDevices->whereDoesntHave('clientBDTDevice');
+            }
+        }
+
+        $is_issued = $request->input('is_issued');
+        if($is_issued){
+            if($is_issued == 'YES'){
+                $bdtDevices = $bdtDevices->whereHas('clientBDTDevice');
+            }
+
+            if($is_issued == 'NO'){
+                $bdtDevices = $bdtDevices->whereDoesntHave('clientBDTDevice');
+            }
+        }
+
+        $mcp = $request->input('mcp');
+        if($mcp){
+            $bdtDevices = $bdtDevices->whereHas('clientBDTDevice', function($cbdtdQuery) use ($mcp) {
+                return $cbdtdQuery->whereHas('client', function($clientQuery) use ($mcp){
+                    $mcpPro = Pro::where('uid', $mcp)->first();
+                    return $clientQuery->where('mcp_pro_id', $mcpPro->id);
+                });
+            });
+        }
+
+        $bdtDevices = $bdtDevices->paginate(20);
+        
+       
         return view('app.admin.bdt_devices', compact('bdtDevices', 'filters'));
     }
 

+ 1 - 2
resources/views/app/admin/bdt_devices.blade.php

@@ -11,8 +11,7 @@
                 </strong>
             </div>
                 <div class="p-3">
-                    {{-- @include('app.admin.bdt_devices_filters') --}}
-                    TODO: filters
+                    @include('app.admin.bdt_devices_filters')
                 </div>
                 @include('app.admin.bdt_devices_table')
             </div>

+ 21 - 324
resources/views/app/admin/bdt_devices_filters.blade.php

@@ -21,327 +21,47 @@
 		width: 125px !important;
 	}
 </style>
-<form id="bdt-devices-filters" method="GET" action="{{ route('admin.bdt_devices') }}" class="filter-container" v-cloak>
-	<div class="sm-section">
-		<div class="">
-			<label>Name:</label>
-			<input name="name" class="form-control input-sm" v-model="filters.name">
-		</div>
-	</div>
-
-	<div class="sm-section">
-		<div class="">
-			<label>MCP:</label>
-			<select name="mcp" class="form-control min-width-unset" v-model="filters.mcp">
-				<option value="">--select--</option>
-				<option value="NO_MCP">No MCP</option>
-				<?php $mcpPros = \App\Models\Pro::where('is_active', true)->where('is_enrolled_as_mcp', true)->orderBy('name_display')->get(); ?>
-				@foreach($mcpPros as $mcpPro)
-					<option value="{{$mcpPro->uid}}">{{$mcpPro->name_display}}</option>
-				@endforeach
-			</select>
-		</div>
-	</div>
-
-	<div class="sm-section">
-		<div class="">
-			<label>NA:</label>
-			<select name="na" class="form-control min-width-unset" v-model="filters.na">
-				<option value="">--select--</option>
-				<option value="NO_NA">No NA</option>
-				<?php $naPros = \App\Models\Pro::where('is_active', true)->where('is_considered_for_dna', true)->orWhere('pro_type', '=', 'ADMIN')->orderBy('name_display')->get(); ?>
-				@foreach($naPros as $naPro)
-					<option value="{{$naPro->uid}}">{{$naPro->name_display}}</option>
-				@endforeach
-			</select>
-		</div>
-	</div>
 
-	<!-- AGE	 -->
-	<div class="sm-section">
-		<div class="">
-			<label>Age:</label>
-			<select name="age_category" class="form-control input-sm" v-model="filters.age_category">
-				<option value="">All</option>
-				<option value="EXACTLY">Exactly</option>
-				<option value="LESS_THAN">Less Than</option>
-				<option value="GREATER_THAN">Greater Than</option>
-				<option value="BETWEEN">Between</option>
-				<option value="NOT_BETWEEN">Not Between</option>
-			</select>
-			<div v-show="filters.age_category" class="mt-2">
-				<div>
-					<input  name="age_value_1" v-model="filters.age_value_1" type="number" class="form-control input-sm" :placeholder="(filters.age_category === 'BETWEEN' || filters.age_category === 'NOT_BETWEEN') ? 'From' : 'Age'" />
-				</div>
-				<div v-show="filters.age_category === 'BETWEEN' || filters.age_category === 'NOT_BETWEEN'" class="mt-2">
-					<input name="age_value_2" v-model="filters.age_value_2" type="number" class="form-control input-sm" placeholder="To" />
-				</div>
-			</div>
-		</div>
-	</div>
-	<!-- SEX -->
-	<div class="sm-section">
-		<div class="">
-			<label>Sex:</label>
-			<select name="sex" class="form-control input-sm" v-model="filters.sex">
-				<option value="">All</option>
-				<option value="M">Male</option>
-				<option value="F">Female</option>
-			</select>
-		</div>
-	</div>
-	<!-- BMI -->
+<form id="bdt-devices-filters" method="GET" action="{{ route('admin.bdt_devices') }}" class="filter-container" v-cloak>
+	
 	<div class="sm-section">
 		<div class="">
-			<label>BMI:</label>
-			<select name="bmi_category" class="form-control input-sm" v-model="filters.bmi_category">
-				<option value="">All</option>
-				<option value="EXACTLY">Exactly</option>
-				<option value="LESS_THAN">Less Than</option>
-				<option value="GREATER_THAN">Greater Than</option>
-				<option value="BETWEEN">Between</option>
-				<option value="NOT_BETWEEN">Not Between</option>
-			</select>
-			<div v-show="filters.bmi_category" class="mt-2">
-				<div>
-					<input  name="bmi_value_1" v-model="filters.bmi_value_1" type="number" class="form-control input-sm" :placeholder="(filters.bmi_category === 'BETWEEN' || filters.bmi_category === 'NOT_BETWEEN') ? 'From' : 'BMI'" />
-				</div>
-				<div v-show="filters.bmi_category === 'BETWEEN' || filters.bmi_category === 'NOT_BETWEEN'" class="mt-2">
-					<input name="bmi_value_2" v-model="filters.bmi_value_2" type="number" class="form-control input-sm" placeholder="To" />
-				</div>
-			</div>
+			<label>IMEI:</label>
+			<input name="imei" class="form-control input-sm" v-model="filters.imei">
 		</div>
 	</div>
 
-	<!-- LAST VISIT -->
 	<div class="sm-section">
 		<div class="">
-			<label>Last Visit:</label>
-			<select name="last_visit_category" class="form-control input-sm" v-model="filters.last_visit_category">
-				<option value="">All</option>
-				<option value="EXACTLY">Exactly</option>
-				<option value="LESS_THAN">Less Than</option>
-				<option value="GREATER_THAN">Greater Than</option>
-				<option value="BETWEEN">Between</option>
-				<option value="NOT_BETWEEN">Not Between</option>
-			</select>
-			<div v-show="filters.last_visit_category" class="mt-2">
-				<div>
-					<input  name="last_visit_value_1" v-model="filters.last_visit_value_1" type="number" class="form-control input-sm" :placeholder="(filters.last_visit_category === 'BETWEEN' || filters.last_visit_category === 'NOT_BETWEEN') ? 'From' : 'Last Visit'" />
-				</div>
-				<div v-show="filters.last_visit_category === 'BETWEEN' || filters.last_visit_category === 'NOT_BETWEEN'" class="mt-2">
-					<input name="last_visit_value_2" v-model="filters.last_visit_value_2" type="number" class="form-control input-sm" placeholder="To" />
-				</div>
-			</div>
+			<label>Client:</label>
+			<input name="client" class="form-control input-sm" v-model="filters.client">
 		</div>
 	</div>
 
-	<!-- NEXT APPOINTMENT -->
 	<div class="sm-section">
 		<div class="">
-			<label>Next Appt.:</label>
-			<select name="next_appointment_category" class="form-control input-sm" v-model="filters.next_appointment_category">
+			<label>Issued?</label>
+			<select name="is_issued" class="form-control input-sm" v-model="filters.is_issued">
 				<option value="">All</option>
-				<option value="NONE">None</option>
-				<option value="EXACTLY">Exactly</option>
-				<option value="LESS_THAN">Less Than</option>
-				<option value="GREATER_THAN">Greater Than</option>
-				<option value="BETWEEN">Between</option>
-				<option value="NOT_BETWEEN">Not Between</option>
+				<option value="YES">Yes</option>
+				<option value="NO">No</option>
 			</select>
-			<div v-show="filters.next_appointment_category && filters.next_appointment_category !== 'NONE'" class="mt-2">
-				<div>
-					<input  name="next_appointment_value_1" v-model="filters.next_appointment_value_1" type="number" class="form-control input-sm" :placeholder="(filters.next_appointment_category === 'BETWEEN' || filters.next_appointment_category === 'NOT_BETWEEN') ? 'From' : 'Next Appt.'" />
-				</div>
-				<div v-show="filters.next_appointment_category === 'BETWEEN' || filters.next_appointment_category === 'NOT_BETWEEN'" class="mt-2">
-					<input name="next_appointment_value_2" v-model="filters.next_appointment_value_2" type="number" class="form-control input-sm" placeholder="To" />
-				</div>
-			</div>
 		</div>
 	</div>
 
-	<!-- STATUS -->
 	<div class="sm-section">
 		<div class="">
-			<label>Status:</label>
-			<select name="status" class="form-control input-sm" v-model="filters.status">
-				<option value="">All</option>
-				<option value="ACTIVE">Active</option>
-				<option value="AWAITING_VISIT">Awaiting Visit</option>
-				<option value="INACTIVE">Inactive</option>
-			</select>
-		</div>
-	</div>
-
-	@if($performer->pro->pro_type == 'ADMIN')
-	<div class="sm-section">
-		<div class="">
-			<label>Initiative:</label>
-			<input type="text" name="initiative" class="form-control input-sm" v-model="filters.initiative">
-		</div>
-	</div>
-	<div class="sm-section">
-		<div class="">
-			<label>Insurance:</label>
-			<select class="form-control"  name="insurance" v-model="filters.insurance">
-				<option value=""></option>
-				<option value="MEDICARE">Medicare (Part B)</option>
-				<option value="OTHER">Other</option>
-			</select>
-		</div>
-	</div>
-	@endif
-
-	<div class="sm-section">
-		<div class="">
-			<label>Chart #</label>
-			<input class="form-control"  name="chart_number" v-model="filters.chart_number">
-		</div>
-	</div>
-
-	<!-- Number of measurements	 -->
-	<div class="sm-section">
-		<div class="">
-			<label># Measurements:</label>
-			<select name="number_of_measurements" class="form-control input-sm" v-model="filters.number_of_measurements">
-				<option value="">All</option>
-				<option value="EXACTLY">Exactly</option>
-				<option value="LESS_THAN">Less Than</option>
-				<option value="GREATER_THAN">Greater Than</option>
-				<option value="BETWEEN">Between</option>
-				<option value="NOT_BETWEEN">Not Between</option>
-			</select>
-			<div v-show="filters.number_of_measurements" class="mt-2">
-				<div>
-					<input  name="number_of_measurements_value_1" v-model="filters.number_of_measurements_value_1" type="number" class="form-control input-sm" :placeholder="(filters.number_of_measurements === 'BETWEEN' || filters.number_of_measurements === 'NOT_BETWEEN') ? 'From' : 'Number of measurements'" />
-				</div>
-				<div v-show="filters.number_of_measurements === 'BETWEEN' || filters.number_of_measurements === 'NOT_BETWEEN'" class="mt-2">
-					<input name="number_of_measurements_value_2" v-model="filters.number_of_measurements_value_2" type="number" class="form-control input-sm" placeholder="To" />
-				</div>
-			</div>
-		</div>
-	</div>
-	<div class="sm-section">
-		<div class="">
-			<label>Home Address State:</label>
-			<select name="home_address_state" class="form-control input-sm" v-model="filters.home_address_state">
-				<option value="">All</option>
-				<option value="NONE">Not Available</option>
-				<option value="NOT_MD">Not MD</option>
-				<option value="AL">Alabama</option>	
-				<option value="AK">Alaska</option>	
-				<option value="AZ">Arizona</option>	
-				<option value="AR">Arkansas</option>	
-				<option value="CA">California</option>	
-				<option value="CO">Colorado</option>	
-				<option value="CT">Connecticut</option>	
-				<option value="DE">Delaware</option>	
-				<option value="FL">Florida</option>	
-				<option value="GA">Georgia</option>	
-				<option value="HI">Hawaii</option>	
-				<option value="ID">Idaho</option>	
-				<option value="IL">Illinois</option>	
-				<option value="IN">Indiana</option>	
-				<option value="IA">Iowa</option>	
-				<option value="KS">Kansas</option>	
-				<option value="KY">Kentucky</option>	
-				<option value="LA">Louisiana</option>	
-				<option value="ME">Maine</option>	
-				<option value="MD">Maryland</option>	
-				<option value="MA">Massachusetts</option>	
-				<option value="MI">Michigan</option>	
-				<option value="MN">Minnesota</option>	
-				<option value="MS">Mississippi</option>	
-				<option value="MO">Missouri</option>	
-				<option value="MT">Montana</option>	
-				<option value="NE">Nebraska</option>	
-				<option value="NV">Nevada</option>	
-				<option value="NH">New Hampshire</option>	
-				<option value="NJ">New Jersey</option>	
-				<option value="NM">NewMexico</option>	
-				<option value="NY">New York</option>	
-				<option value="NC">North Carolina</option>	
-				<option value="ND">North Dakota</option>	
-				<option value="OH">Ohio</option>	
-				<option value="OK">Oklahoma</option>	
-				<option value="OR">Oregon</option>	
-				<option value="PA">Pennsylvania</option>	
-				<option value="RI">RhodeIsland</option>	
-				<option value="SC">South Carolina</option>	
-				<option value="SD">South Dakota</option>	
-				<option value="TN">Tennessee</option>	
-				<option value="TX">Texas</option>	
-				<option value="UT">Utah</option>	
-				<option value="VT">Vermont</option>	
-				<option value="VA">Virginia</option>	
-				<option value="WA">Washington</option>	
-				<option value="WV">West Virginia</option>	
-				<option value="WI">Wisconsin</option>	
-				<option value="WY">Wyoming</option>	
+			<label>MCP:</label>
+			<select name="mcp" class="form-control min-width-unset" v-model="filters.mcp">
+				<option value="">--select--</option>
+				<?php $mcpPros = \App\Models\Pro::where('is_active', true)->where('is_enrolled_as_mcp', true)->orderBy('name_display')->get(); ?>
+				@foreach($mcpPros as $mcpPro)
+					<option value="{{$mcpPro->uid}}">{{$mcpPro->name_display}}</option>
+				@endforeach
 			</select>
 		</div>
 	</div>
 
-	@if($performer->pro->pro_type == 'ADMIN')
-	<div class="sm-section">
-		<div class="">
-			<div class="checkbox mt-4 pt-2">
-				<label class="text-nowrap font-weight-normal mr-2">
-					<input type="checkbox" name="include_test_records"  v-model="filters.include_test_records">
-					Incl. Test Records
-				</label>
-			</div>
-		</div>
-	</div>
-	@endif
-
-
-	<!-- LAST WEIGHED-IN -->
-	<!-- <div class="col-md-2 d-none">
-		<div class="">
-			<label>Last Weighed-In:</label>
-			<select name="last_weighed_in_category" class="form-control input-sm" v-model="filters.last_weighed_in_category">
-				<option value="">All</option>
-				<option value="EXACTLY">Exactly</option>
-				<option value="LESS_THAN">Less Than</option>
-				<option value="GREATER_THAN">Greater Than</option>
-				<option value="BETWEEN">Between</option>
-				<option value="NOT_BETWEEN">Not Between</option>
-			</select>
-			<div v-show="filters.last_weighed_in_category" class="mt-2">
-				<div>
-					<input  name="last_weighed_in_value_1" v-model="filters.last_weighed_in_value_1" type="number" class="form-control input-sm" :placeholder="(filters.last_weighed_in_category === 'BETWEEN' || filters.last_weighed_in_category === 'NOT_BETWEEN') ? 'From' : 'Last Weighed'" />
-				</div>
-				<div v-show="filters.last_weighed_in_category === 'BETWEEN' || filters.last_weighed_in_category === 'NOT_BETWEEN'" class="mt-2">
-					<input name="last_weighed_in_value_2" v-model="filters.last_weighed_in_value_2" type="number" class="form-control input-sm" placeholder="To" />
-				</div>
-			</div>
-		</div>
-	</div> -->
-
-	<!-- LAST BP -->
-	<!-- <div class="col-md-2 d-none">
-		<div class="">
-			<label>Last BP:</label>
-			<select name="last_bp_category" class="form-control input-sm" v-model="filters.last_bp_category">
-				<option value="">All</option>
-				<option value="EXACTLY">Exactly</option>
-				<option value="LESS_THAN">Less Than</option>
-				<option value="GREATER_THAN">Greater Than</option>
-				<option value="BETWEEN">Between</option>
-				<option value="NOT_BETWEEN">Not Between</option>
-			</select>
-			<div v-show="filters.last_bp_category" class="mt-2">
-				<div>
-					<input  name="last_bp_value_1" v-model="filters.last_bp_value_1" type="number" class="form-control input-sm" :placeholder="(filters.last_bp_category === 'BETWEEN' || filters.last_bp_category === 'NOT_BETWEEN') ? 'From' : 'Last BP'" />
-				</div>
-				<div v-show="filters.last_bp_category === 'BETWEEN' || filters.last_bp_category === 'NOT_BETWEEN'" class="mt-2">
-					<input name="last_bp_value_2" v-model="filters.last_bp_value_2" type="number" class="form-control input-sm" placeholder="To" />
-				</div>
-			</div>
-		</div>
-	</div> -->
-
 	<div>
 		<div class="">
 			<label>&nbsp;</label>
@@ -356,33 +76,10 @@
 <?php
 $loadedFilters = $filters;
 $allFilterKeys = [
-	'name',
-	'age_category',
-	'age_value_1',
-	'age_value_2',
-	'bmi_category',
-	'bmi_value_1',
-	'bmi_value_2',
-	'last_bp_category',
-	'last_bp_value_1',
-	'last_bp_value_2',
-	'last_visit_category',
-	'last_visit_value_1',
-	'last_visit_value_2',
-	'last_weighed_in_category',
-	'last_weighed_in_value_1',
-	'next_appointment_category',
-	'next_appointment_value_1',
-	'sex',
-	'status',
-	'initiative',
-	'insurance',
-	'include_test_records',
-	'number_of_measurements',
-	'number_of_measurements_value_1',
-	'number_of_measurements_value_2',
-	'home_address_state',
-	'chart_number'
+	'imei',
+	'mcp',
+	'client',
+	'is_issued'
 ];
 for ($i=0; $i < count($allFilterKeys); $i++) {
 	if (!isset($loadedFilters[$allFilterKeys[$i]]) || !$loadedFilters[$allFilterKeys[$i]]) {

+ 22 - 3
resources/views/app/admin/bdt_devices_table.blade.php

@@ -41,21 +41,40 @@
 				</td>
 				<td>
 					@if($bdtDevice->clientBDTDevice)
-						{{count($bdtDevice->clientBDTDevice->supplyOrders)}}
+						@foreach($bdtDevice->clientBDTDevice->supplyOrders as $so)
+							<div class="card p-2 shadow m-2 border">
+								<div>Product: {{$so->product->title}}</div>
+								<div>Is signed by pro: {{$so->is_signed_by_pro ? 'Yes' : 'No'}}</div>
+								@if($so->is_signed_by_pro)
+									<div>Signed by: {{$so->signedPro->name_first}} {{$so->signedPro->name_last}}</div>
+								@endif
+								<div>
+									Has shippiment: {{$so->shipment? 'Yes': 'No'}}
+								</div>
+							</div>
+						@endforeach
 					@else 
 						-
 					@endif 	
 				</td>
 				<td>
 					@if($bdtDevice->clientBDTDevice)
-						{{friendly_date_time($bdtDevice->clientBDTDevice->mostRecentMeasurement->measurement->ts_date_time)}}
+						@if($bdtDevice->clientBDTDevice->mostRecentMeasurement)
+							{{friendly_date_time($bdtDevice->clientBDTDevice->mostRecentMeasurement->measurement->ts_date_time)}}
+						@else 
+							-
+						@endif
 					@else 
 						-
 					@endif 	
 				</td>
 				<td>
 					@if($bdtDevice->clientBDTDevice)
-						{{date_diff(date_create($bdtDevice->clientBDTDevice->mostRecentMeasurement->measurement->ts_date_time), date_create('now'))->days}}
+						@if($bdtDevice->clientBDTDevice->mostRecentMeasurement)
+							{{date_diff(date_create($bdtDevice->clientBDTDevice->mostRecentMeasurement->measurement->ts_date_time), date_create('now'))->days}}
+						@else 
+							-
+						@endif
 					@else 
 						-
 					@endif