diff --git a/app/Http/Controllers/V3/RoadPatrolProjectController.php b/app/Http/Controllers/V3/RoadPatrolProjectController.php index 21b505db..90519087 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']) @@ -297,10 +305,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', + ); + } }