diff --git a/app/Enums/MissionCategory.php b/app/Enums/MissionCategory.php index 686135e9..fe36f026 100644 --- a/app/Enums/MissionCategory.php +++ b/app/Enums/MissionCategory.php @@ -4,17 +4,17 @@ namespace App\Enums; enum MissionCategory: int { - case ROAD_ITEM= 0; - case ROAD_PATROL = 1; - case ROAD_OBSERVATION = 2; + case ROAD_ITEM= 1; + case ROAD_PATROL = 2; + case ROAD_OBSERVATION = 3; public static function name(int $state): string { $mapArray = [ - 0 => "فعالیت روزانه", - 1 => "گشت راهداری", - 2 => "واکنش سریع", + 1 => "فعالیت روزانه", + 2 => "گشت راهداری", + 3 => "واکنش سریع", ]; return $mapArray[$state]; diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index 9543f208..82bff184 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -58,6 +58,9 @@ class RequestPortalController extends Controller ]); $mission->rahdaran()->attach($request->rahdaran); + if ($request->category_id == 3){ + $mission->roadObserved()->attach($request->road_observed_id); + } }); return $this->successResponse(); @@ -92,6 +95,9 @@ class RequestPortalController extends Controller ]); $mission->rahdaran()->sync($request->rahdaran); + if ($request->category_id == 3){ + $mission->roadObserved()->attach($request->road_observed_id); + } }); return $this->successResponse(); diff --git a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php index 0a466b8b..1c9018ae 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php @@ -2,8 +2,10 @@ namespace App\Http\Requests\V3\Mission\RequestPortal; +use Carbon\Carbon; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Validator; class StoreRequest extends FormRequest { @@ -33,8 +35,32 @@ class StoreRequest extends FormRequest 'description' => 'string', 'end_point' => 'required|string', 'area' => 'required|array', + 'area.type' => 'required|string', + 'area.coordinates' => 'required|array', 'explanation' => 'required|string', 'category_id' => 'required|in:1,2,3', + 'road_observed_id' => 'required_if:category_id,3|exists:road_observed,id', + ]; + } + + public function after(): array + { + return [ + function (Validator $validator) { + if ($this->type === 1){ + + $start = Carbon::parse($this->start_date); + $end = Carbon::parse($this->end_date); + + if ($start->diffInMinutes($end) > 480 ){ + $validator->errors()->add( + 'end_date', + 'مدت مأموریت روزانه نباید بیشتر از ۸ ساعت باشد.' + ); + } + + } + } ]; } } diff --git a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php index dfdc6241..18082c7f 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php @@ -3,8 +3,10 @@ namespace App\Http\Requests\V3\Mission\RequestPortal; use App\Enums\MissionStates; +use Carbon\Carbon; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Validator; class UpdateRequest extends FormRequest { @@ -34,8 +36,33 @@ class UpdateRequest extends FormRequest 'description' => 'string', 'end_point' => 'required|string', 'area' => 'required|array', + 'area.type' => 'required|string', + 'area.coordinates' => 'required|array', 'explanation' => 'required|string', 'category_id' => 'required|in:1,2,3', + 'road_observed_id' => 'required_if:category_id,3|exists:road_observed,id', + ]; + } + + + public function after(): array + { + return [ + function (Validator $validator) { + if ($this->type === 1){ + + $start = Carbon::parse($this->start_date); + $end = Carbon::parse($this->end_date); + + if ($start->diffInMinutes($end) > 480 ){ + $validator->errors()->add( + 'end_date', + 'مدت مأموریت روزانه نباید بیشتر از ۸ ساعت باشد.' + ); + } + + } + } ]; } } diff --git a/app/Models/Mission.php b/app/Models/Mission.php index ba3878ad..5e9408cd 100644 --- a/app/Models/Mission.php +++ b/app/Models/Mission.php @@ -67,8 +67,9 @@ class Mission extends Model 'rahdar_id', ); } - public function road_patrol():HasMany + + public function roadObserved(): MorphToMany { - return $this->hasMany(RoadPatrol::class); + return $this->morphToMany(RoadObserved::class, 'missionable'); } }