diff --git a/app/Enums/MissionCategory.php b/app/Enums/MissionCategory.php new file mode 100644 index 00000000..2cf0e26a --- /dev/null +++ b/app/Enums/MissionCategory.php @@ -0,0 +1,22 @@ + "فعالیت روزانه", + 1 => "گشت راهداری", + 2 => "واکنش سریع", + ]; + + return $mapArray[$state]; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index 9c01f36a..8735f4fc 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\V3\Dashboard\Mission; +use App\Enums\CategoryTypeMission; use App\Enums\MissionStates; use App\Enums\MissionTypes; use App\Enums\MissionZones; @@ -29,6 +30,7 @@ class RequestPortalController extends Controller DB::transaction(function () use ($request) { $user = auth()->user(); $state = MissionStates::REQUEST_CREATED->value; + $code = $request->category_id == 2 ? $request->code : null; $mission = Mission::query()->create([ 'user_id' => $user->id, @@ -50,6 +52,10 @@ class RequestPortalController extends Controller 'description' => $request->description, 'end_point' => $request->end_point, 'area' => json_encode($request->area), + 'category_id' => $request->category_id, + 'category_name' => CategoryTypeMission::name($request->category_id), + 'explanation' => $request->explanation, + 'code' => $code, ]); $mission->rahdaran()->attach($request->rahdaran); @@ -67,6 +73,8 @@ class RequestPortalController extends Controller { DB::transaction(function () use ($mission, $request) { $state = MissionStates::REQUEST_CREATED->value; + $code = $request->category_id == 2 ? $request->code : null; + $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), @@ -81,6 +89,10 @@ class RequestPortalController extends Controller 'description' => $request->description, 'end_point' => $request->end_point, 'area' => json_encode($request->area), + 'category_id' => $request->category_id, + 'category_name' => CategoryTypeMission::name($request->category_id), + 'explanation' => $request->explanation, + 'code' => $code, ]); $mission->rahdaran()->sync($request->rahdaran); diff --git a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php index 2e9f2b2f..02a713dd 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php @@ -32,6 +32,9 @@ class StoreRequest extends FormRequest 'description' => 'string', 'end_point' => 'required|string', 'area' => 'required|array', + 'explanation' => 'required|string', + 'code' => 'string', + 'category_id' => 'required|in:1,2,3', ]; } } diff --git a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php index cfb7f81e..9480a56a 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php @@ -33,6 +33,9 @@ class UpdateRequest extends FormRequest 'description' => 'string', 'end_point' => 'required|string', 'area' => 'required|array', + 'explanation' => 'required|string', + 'code' => 'string', + 'category_id' => 'required|in:1,2,3', ]; } } diff --git a/app/Services/Cartables/Mission/RequestPortalService.php b/app/Services/Cartables/Mission/RequestPortalService.php index 2dad6b65..ca765a5e 100644 --- a/app/Services/Cartables/Mission/RequestPortalService.php +++ b/app/Services/Cartables/Mission/RequestPortalService.php @@ -32,7 +32,8 @@ class RequestPortalService allowedSelects: [ 'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name', 'description', 'requested_machines', 'type', 'type_fa', 'start_date', 'state_id', - 'end_date', 'request_date', 'end_point', 'area', 'zone', 'zone_fa', 'start_time', 'finish_time' + 'end_date', 'request_date', 'end_point', 'area', 'zone', 'zone_fa', 'start_time', 'finish_time', + 'code', 'category_id', 'category_name', 'explanation' ] ); } diff --git a/database/migrations/2025_07_12_140818_add_colum_to_missions_table.php b/database/migrations/2025_07_12_140818_add_colum_to_missions_table.php new file mode 100644 index 00000000..62ebdebf --- /dev/null +++ b/database/migrations/2025_07_12_140818_add_colum_to_missions_table.php @@ -0,0 +1,31 @@ +integer('category_id')->nullable(); + $table->string('category_name')->nullable(); + $table->text('explanation')->nullable(); + $table->string('code')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('missions', function (Blueprint $table) { + $table->dropColumn(['category_id', 'category_name', 'explanation', 'code']); + }); + } +};