From 311f03921c87d10004b42e63f45212bb6106b70e Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sat, 4 Jan 2025 14:57:43 +0330 Subject: [PATCH] create datatable for observed item --- .../Controllers/V3/ObservedItemController.php | 60 +++++++++++++++++++ .../V3/ObservedItem/FilterRequest.php | 39 ++++++++++++ routes/v3.php | 10 +++- 3 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/V3/ObservedItemController.php create mode 100644 app/Http/Requests/V3/ObservedItem/FilterRequest.php diff --git a/app/Http/Controllers/V3/ObservedItemController.php b/app/Http/Controllers/V3/ObservedItemController.php new file mode 100644 index 00000000..64a2167e --- /dev/null +++ b/app/Http/Controllers/V3/ObservedItemController.php @@ -0,0 +1,60 @@ +successResponse($observed_item); + } + + public function searchByFilter(FilterRequest $request): JsonResponse + { + $columns = array( + 'id', 'item_id', 'sub_item_id' + ); + + $allowedFilters = $columns; + $allowedSortings = $columns; + + $data = ObservedItem::query()->whereNull('road_item_id') + ->when($request->start_date, function (Builder $query) use ($request) { + return $query->whereHas('roadPatrol', function (Builder $query) use ($request) { + $query->WhereBetween('start_time', [$request->start_date.' 00:00:00', $request->end_date.' 23:59:59']) + ->orWhereBetween('end_time', [$request->start_date.' 00:00:00', $request->end_date.' 23:59:59']); + }); + }) + ->when($request->road_patrol_id, function (Builder $query) use ($request) { + return $query->where('road_patrol_id', $request->road_patrol_id); + }) + ->when($request->item_id, function (Builder $query) use ($request) { + return $query->where('item_id', $request->item_id); + }) + ->selectRaw('id as item, item_id, item_name, sub_item_id, sub_item_name, local_name'); + + if($data->get()->isEmpty()) { + return $this->errorResponse('موردی یافت نشد'); + } + + $dataTable = DataTableFacade::run( + $data, + $request, + allowedFilters: $allowedFilters, + allowedSortings: $allowedSortings); + + + return response()->json($dataTable); + } +} diff --git a/app/Http/Requests/V3/ObservedItem/FilterRequest.php b/app/Http/Requests/V3/ObservedItem/FilterRequest.php new file mode 100644 index 00000000..5c67f2c3 --- /dev/null +++ b/app/Http/Requests/V3/ObservedItem/FilterRequest.php @@ -0,0 +1,39 @@ +|string> + */ + public function rules(): array + { + return [ + 'start_date' => 'date_format:Y-m-d', + 'end_date' => 'date_format:Y-m-d|after_or_equal:start_date', + 'road_patrol_id' => 'numeric', + 'item_id' => 'numeric', + ]; + } + + public function attributes(): array + { + return [ + 'start_date' => 'ساعت شروع گشت', + 'end_date' => 'ساعت پایان گشت', + ]; + } +} diff --git a/routes/v3.php b/routes/v3.php index cab2d0a7..dda1d4e8 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -7,6 +7,7 @@ use App\Http\Controllers\V3\Azmayesh\AzmayeshTypeController; use App\Http\Controllers\V3\CMMSMachinesController; use App\Http\Controllers\V3\FMSVehicleManagementController; use App\Http\Controllers\V3\Harim\DivarkeshiController; +use App\Http\Controllers\V3\ObservedItemController; use App\Http\Controllers\V3\ProfileController; use App\Http\Controllers\V3\RahdaranController; use App\Http\Controllers\V3\RoadItemsProjectController; @@ -176,5 +177,12 @@ Route::prefix('fms_vehicle') ->name('fmsVehicle.') ->controller(FMSVehicleManagementController::class) ->group(function () { - Route::get('/get_activity', 'getActivity')->name('getActivity'); + Route::post('/get_activity', 'getActivity')->name('getActivity'); + }); + +Route::prefix('obseved_item') + ->name('observedItem.') + ->controller(ObservedItemController::class) + ->group(function () { + Route::post('/filter', 'filter')->name('filter'); });