diff --git a/app/Http/Controllers/V3/CMMSMachinesController.php b/app/Http/Controllers/V3/CMMSMachinesController.php index ffba9760..e575d179 100644 --- a/app/Http/Controllers/V3/CMMSMachinesController.php +++ b/app/Http/Controllers/V3/CMMSMachinesController.php @@ -14,7 +14,7 @@ class CMMSMachinesController extends Controller public function list(): JsonResponse { - $machinesList = CMMSMachine::query()->get(['machine_code', 'id']); + $machinesList = CMMSMachine::query()->get(['machine_code', 'id', 'plak_number', 'car_name']); return $this->successResponse($machinesList); } @@ -23,7 +23,7 @@ class CMMSMachinesController extends Controller { $matchedSearchedMachines = CMMSMachine::query() ->where('machine_code', 'LIKE', "%{$request->machine_code}%") - ->get(['machine_code', 'id']); + ->get(['machine_code', 'id', 'plak_number', 'car_name']); return $this->successResponse($matchedSearchedMachines); } diff --git a/app/Http/Controllers/V3/FMSVehicleManagementController.php b/app/Http/Controllers/V3/FMSVehicleManagementController.php new file mode 100644 index 00000000..f50221a7 --- /dev/null +++ b/app/Http/Controllers/V3/FMSVehicleManagementController.php @@ -0,0 +1,31 @@ +setInputParameters([ + "machineCode" => $request->machineCode, + "startDT" => $request->startDT, + "endDT" => $request->endDT, + "minStopDuration" => $request->minStopDuration + ]); + + $data = $getVehicleActivityService->run(); + return $this->successResponse($data); + } +} diff --git a/app/Http/Controllers/V3/RoadPatrolProjectController.php b/app/Http/Controllers/V3/RoadPatrolProjectController.php index 21b505db..0ef03630 100644 --- a/app/Http/Controllers/V3/RoadPatrolProjectController.php +++ b/app/Http/Controllers/V3/RoadPatrolProjectController.php @@ -37,7 +37,7 @@ class RoadPatrolProjectController extends Controller 'operator_name', 'officer_plaque', 'officer_phone_number', 'officer_name', 'supervisor_description', 'supervising_time', 'supervisor_name', 'status', 'status_fa', 'distance', 'province_id', 'province_fa', 'edare_id', 'edare_name', - 'start_time', 'end_time','description' + 'start_time', 'end_time','description', 'cmmsMachines.machine_code' ); $allowedFilters = $columns; @@ -47,13 +47,16 @@ class RoadPatrolProjectController extends Controller $query = null; if ($user->hasPermissionTo('show-road-patrol-supervise-cartable')) { - $query = RoadPatrol::query(); + $query = RoadPatrol::query() + ->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number']); } elseif ($user->hasPermissionTo('show-road-patrol-supervise-cartable-province')) { if (is_null($user->province_id)) { return $this->errorResponse('استانی برای شما در سامانه ثبت نشده است!'); } - $query = RoadPatrol::query()->where('province_id', '=', $user->province_id); + $query = RoadPatrol::query() + ->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number']) + ->where('province_id', '=', $user->province_id); } $data = DataTableFacade::run( @@ -123,13 +126,15 @@ class RoadPatrolProjectController extends Controller $columns = array( 'id', 'start_lat', 'start_lon', 'end_lat', 'end_lon', 'officer_plaque', 'officer_phone_number', 'officer_name', 'supervisor_description', 'supervising_time', - 'supervisor_name', 'status', 'status_fa', 'distance', 'start_time', 'end_time' + 'supervisor_name', 'status', 'status_fa', 'distance', 'start_time', 'end_time', 'cmmsMachines.machine_code' ); $allowedFilters = $columns; $allowedSortings = $columns; - $query = RoadPatrol::query()->where('operator_id', '=', auth()->user()->id); + $query = RoadPatrol::query() + ->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number']) + ->where('operator_id', '=', auth()->user()->id); $data = DataTableFacade::run( $query, @@ -192,6 +197,9 @@ class RoadPatrolProjectController extends Controller 'description' => $request->description ?? null, ]); + $road_patrol->rahdaran()->attach($request->rahdaran_id); + $road_patrol->cmmsMachines()->attach($request->machines_id); + if ($request->observed_items) { foreach ($request->observed_items as $index => $item) { $info_item = InfoItem::where('item', $item['item_id']) @@ -285,6 +293,9 @@ class RoadPatrolProjectController extends Controller 'message' => 'اقدام مربوطه قبلا رسیدگی شده است.' ], 400); } + + $road_item->rahdaran()->attach($request->rahdaran_id); + $road_item->cmmsMachines()->attach($request->machines_id); } } } @@ -297,10 +308,7 @@ class RoadPatrolProjectController extends Controller return $road_patrol; }); - return response()->json([ - 'road_patrol_id' => $road_patrol->id, - 'message' => 'succussful' - ]); + return $this->successResponse(); } public function getReport(RoadPatrol $roadPatrol): JsonResponse diff --git a/app/Http/Requests/V3/RoadPatrolProject/StoreRequest.php b/app/Http/Requests/V3/RoadPatrolProject/StoreRequest.php index 9dbd916a..fcdb3d2a 100644 --- a/app/Http/Requests/V3/RoadPatrolProject/StoreRequest.php +++ b/app/Http/Requests/V3/RoadPatrolProject/StoreRequest.php @@ -11,7 +11,7 @@ class StoreRequest extends FormRequest */ public function authorize(): bool { - return false; + return true; } /** @@ -47,7 +47,16 @@ class StoreRequest extends FormRequest 'observed_items.*.priority' => 'integer|in:1,2,3|required_if:instant_action,0', 'observed_items.*.priority_fa' => 'string|required_if:instant_action,0', 'description' => 'string|required_with:observed_items', + 'machines_id' => 'required|array', + 'machines_id.*' => 'required|exists:cmms_machines,id', + 'rahdaran_id' => 'required|array', + 'rahdaran_id.*' => 'required|exists:rahdaran,id', + ]; + } + public function attributes(): array + { + return [ 'start_time' => 'ساعت شروع گشت', 'end_time' => 'ساعت پایان گشت', ]; diff --git a/app/Models/RoadPatrol.php b/app/Models/RoadPatrol.php index d439e2d8..c39af8c2 100644 --- a/app/Models/RoadPatrol.php +++ b/app/Models/RoadPatrol.php @@ -4,6 +4,8 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\HasMany; +use Illuminate\Database\Eloquent\Relations\MorphToMany; class RoadPatrol extends Model { @@ -11,8 +13,28 @@ class RoadPatrol extends Model protected $guarded = ['id']; - public function observedItems() + public function observedItems(): HasMany { return $this->hasMany(ObservedItem::class); } + + public function cmmsMachines(): MorphToMany + { + return $this->morphToMany(CMMSMachine::class, + 'machinable', + 'machinables', + 'machinable_id', + 'machine_id' + ); + } + + public function rahdaran(): MorphToMany + { + return $this->morphToMany(Rahdaran::class, + 'rahdarable', + 'rahdarables', + 'rahdarable_id', + 'rahdar_id', + ); + } } diff --git a/routes/v3.php b/routes/v3.php index 46e28e75..cab2d0a7 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -5,6 +5,7 @@ use App\Http\Controllers\V3\Azmayesh\AzmayeshController; use App\Http\Controllers\V3\Azmayesh\AzmayeshSampleController; 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\ProfileController; use App\Http\Controllers\V3\RahdaranController; @@ -170,3 +171,10 @@ Route::prefix('rahdaran') Route::get('/list', 'list')->name('list'); Route::get('/search', 'search')->name('search'); }); + +Route::prefix('fms_vehicle') + ->name('fmsVehicle.') + ->controller(FMSVehicleManagementController::class) + ->group(function () { + Route::get('/get_activity', 'getActivity')->name('getActivity'); + });