join('cmms_machines as cm', 'cm.id', '=', 'missions.machine_id') ->where('state_id', '=', 4) ->when($request->province_id, function ($q) use ($request) { $q->where('missions.province_id', $request->province_id); }) ->selectRaw( 'cm.car_name, missions.machine_code, missions.machine_id, COUNT(*) as missions, SUM(missions.end_km - missions.km) as func' ) ->groupBy('missions.machine_id') ->orderByRaw('COUNT(*) DESC'); $fields = ['machine_code','machine_id','cm.car_name','missions', 'func']; return DataTableFacade::run( $query, $request, allowedFilters: $fields, allowedSortings: $fields, ); } public function machineTypesActivity(Request $request): array { $query = Mission::query() ->join('cmms_machines as cm', 'cm.id', '=', 'missions.machine_id') ->where('missions.state_id','=', 4) ->when($request->province_id, function ($q) use ($request) { $q->where('missions.province_id', $request->province_id); }) ->selectRaw( 'cm.car_type, COUNT(*) as missions, SUM(missions.end_km - missions.km) as func' ) ->groupBy('cm.car_type') ->orderByRaw('COUNT(*) DESC'); $fields = ['car_type','missions', 'func']; return DataTableFacade::run( $query, $request, allowedFilters: $fields, allowedSortings: $fields, ); } public function machineDriversActivity(Request $request): array { $query = Mission::query() ->selectRaw( 'driver_id, driver_name, COUNT(*) as missions, SUM(end_km - km) as func' ) ->where('state_id', '=', 4) ->when($request->province_id, function ($query) use ($request) { $query->where('province_id', '=', $request->province_id); }) ->groupBy('driver_id') ->orderByRaw('COUNT(*) DESC'); $fields = ['driver_id','driver_name','missions', 'func']; return DataTableFacade::run( $query, $request, allowedFilters: $fields, allowedSortings: $fields, ); } }