|
@@ -2338,20 +2338,101 @@ ORDER BY c.name_last, c.name_first
|
|
|
public function clientsBdtDevices(Request $request){
|
|
|
$filters = $request->all();
|
|
|
|
|
|
- $devices = ClientBDTDevice::select('client_bdt_device.*')
|
|
|
+ $devices = ClientBDTDevice::select(
|
|
|
+ 'client_bdt_device.*',
|
|
|
+ DB::raw('(SELECT COUNT(*) FROM bdt_measurement WHERE bdt_measurement.bdt_device_id = client_bdt_device.device_id AND is_cellular_zero IS FALSE) as num_of_measurements'))
|
|
|
+ // DB::raw('(SELECT ts_date_time FROM bdt_measurement WHERE bdt_measurement.bdt_device_id = client_bdt_device.device_id AND is_cellular_zero IS FALSE ORDER BY ts_date_time DESC LIMIT 1) as most_recent_none_zero_measurement_at'))
|
|
|
->join('client', 'client.id', '=', 'client_bdt_device.client_id');
|
|
|
|
|
|
if($this->performer->pro->pro_type !== 'ADMIN'){
|
|
|
$devices = $devices->where('client.mcp_pro_id', $this->performer->pro->id);
|
|
|
}
|
|
|
|
|
|
- $this->filterMultiQuery($request, $devices, 'client_bdt_device.created_at', 'date_category', 'date_value_1', 'date_value_2');
|
|
|
+ $this->filterMultiQuery($request, $devices, 'client_bdt_device.most_recent_measurement_at', 'date_category', 'date_value_1', 'date_value_2');
|
|
|
+
|
|
|
+ // $dateKeyName = $request->get('date_category');
|
|
|
+ // $date1 = $request->get('date_value_1');
|
|
|
+ // $date2 = $request->get('date_value_2');
|
|
|
+ // $dateColumnName = "(SELECT (MAX(ts_date_time))::DATE FROM bdt_measurement WHERE bdt_measurement.bdt_device_id = client_bdt_device.device_id AND is_cellular_zero IS FALSE)";
|
|
|
+ // switch($dateKeyName) {
|
|
|
+ // case 'EXACTLY':
|
|
|
+ // if($date1) {
|
|
|
+ // $devices->whereRaw($dateColumnName." = '$date1'::DATE");
|
|
|
+ // }
|
|
|
+ // break;
|
|
|
+ // case 'LESS_THAN':
|
|
|
+ // if($date1) {
|
|
|
+ // $devices->whereRaw($dateColumnName. "< '$date1'::DATE" );
|
|
|
+ // }
|
|
|
+ // break;
|
|
|
+ // case 'GREATER_THAN':
|
|
|
+ // if($date1) {
|
|
|
+ // $devices->whereRaw($dateColumnName. "> '$date1'::DATE");
|
|
|
+ // }
|
|
|
+ // break;
|
|
|
+ // case 'BETWEEN':
|
|
|
+ // if($date1 && $date2) {
|
|
|
+ // $devices
|
|
|
+ // ->whereRaw($dateColumnName. ">= '$date1'::DATE")
|
|
|
+ // ->whereRaw($dateColumnName. "<= '$date2'::DATE");
|
|
|
+ // }
|
|
|
+ // break;
|
|
|
+ // case 'NOT_BETWEEN':
|
|
|
+ // if($date2 && $date1) {
|
|
|
+ // $devices
|
|
|
+ // ->where(function ($q) use ($request, $dateColumnName, $date1, $date2) {
|
|
|
+ // $q->whereRaw($dateColumnName. "< '$date1'::DATE")
|
|
|
+ // ->orWhereRaw($dateColumnName. "> '$date2'::DATE");
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
+
|
|
|
+ $keyName = $request->get('measurement_count_category');
|
|
|
+ $value1 = $request->get('measurement_count_value_1');
|
|
|
+ $value2 = $request->get('measurement_count_value_2');
|
|
|
+ $columnName = "(SELECT COUNT(*) FROM bdt_measurement WHERE bdt_measurement.bdt_device_id = client_bdt_device.device_id AND is_cellular_zero IS FALSE)";
|
|
|
+ switch($keyName) {
|
|
|
+ case 'EXACTLY':
|
|
|
+ if($value1) {
|
|
|
+ $devices->whereRaw($columnName.'='.$value1);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 'LESS_THAN':
|
|
|
+ if($value1) {
|
|
|
+ $devices->whereRaw($columnName. '<' .$value1);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 'GREATER_THAN':
|
|
|
+ if($value1) {
|
|
|
+ $devices->whereRaw($columnName. '>'. $value1);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 'BETWEEN':
|
|
|
+ if($value1 && $value2) {
|
|
|
+ $devices
|
|
|
+ ->whereRaw($columnName. '>=' . $value1)
|
|
|
+ ->whereRaw($columnName. '<=' . $value1);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 'NOT_BETWEEN':
|
|
|
+ if($value1 && $value2) {
|
|
|
+ $devices
|
|
|
+ ->where(function ($q) use ($request, $columnName, $value1, $value2) {
|
|
|
+ $q->whereRaw($columnName. '<'. $value1)
|
|
|
+ ->orWhereRaw($columnName. '>'.$value2);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
$status = $request->get('status');
|
|
|
if($status){
|
|
|
if($status === 'ACTIVE') $devices = $devices->where('client_bdt_device.is_active', true);
|
|
|
if($status === 'DEACTIVATED') $devices = $devices->where('client_bdt_device.is_active', false);
|
|
|
}
|
|
|
- $devices = $devices->orderBy('created_at', 'DESC')->paginate(20);
|
|
|
+
|
|
|
+ $devices = $devices->orderBy('num_of_measurements', 'DESC')->paginate(20);
|
|
|
return view('app.practice-management.clients_bdt_devices', compact('devices','filters'));
|
|
|
}
|
|
|
|