diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index 4bf30f65..5316a5dc 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -2,7 +2,6 @@ namespace App\Http\Controllers\V3\Dashboard\Mission; -use App\Enums\FMSResultCode; use App\Enums\MissionCategory; use App\Enums\MissionStates; use App\Enums\MissionTypes; @@ -10,7 +9,6 @@ use App\Enums\MissionViolationStatus; use App\Enums\MissionZones; use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; -use App\Http\Controllers\V3\Dashboard\RoadPatrol\OperatorController; use App\Http\Requests\V3\Mission\RequestPortal\ChangeStateRequest; use App\Http\Requests\V3\Mission\RequestPortal\ClarifyUnauthorizedExitRequest; use App\Http\Requests\V3\Mission\RequestPortal\ContinueMissionRequest; @@ -23,7 +21,6 @@ use App\Models\Mission; use App\Models\MissionViolation; use App\Models\Rahdaran; use App\Models\RahdariPoint; -use App\Models\RoadObserved; use App\Services\Cartables\Mission\RequestPortalService; use App\Services\FMS\GetErrorRateService; use Carbon\Carbon; @@ -65,6 +62,8 @@ class RequestPortalController extends Controller $user = auth()->user(); $mission = Mission::query()->create([ + 'item_id' => $request->item_id, + 'sub_item_id' => $request->sub_item_id, 'user_id' => $user->id, 'username' => $user->username, 'province_id' => $user->province_id, @@ -83,7 +82,6 @@ class RequestPortalController extends Controller 'start_date' => $request->start_date, 'end_date' => $request->end_date, 'request_date' => now(), - 'description' => $request->description, 'end_point' => $request->end_point, 'encoded_route' => $request->encoded_route, 'category_id' => $request->category_id, @@ -137,6 +135,8 @@ class RequestPortalController extends Controller $machine = CMMSMachine::query()->find($request->machine_id, ['id', 'machine_code', 'car_type']); $newMission = Mission::query()->create([ + 'item_id' => $request->item_id, + 'sub_item_id' => $request->sub_item_id, 'user_id' => $user->id, 'username' => $user->username, 'province_id' => $user->province_id, @@ -154,7 +154,6 @@ class RequestPortalController extends Controller 'start_date' => now(), 'end_date' => $request->end_date, 'request_date' => now(), - 'description' => $request->description, 'end_point' => $request->end_point, 'encoded_route' => $request->encoded_route, 'category_id' => $request->category_id, @@ -185,6 +184,8 @@ class RequestPortalController extends Controller DB::transaction(function () use ($mission, $request) { $state = MissionStates::REQUEST_CREATED->value; $mission->update([ + 'item_id' => $request->item_id, + 'sub_item_id' => $request->sub_item_id, 'state_id' => $state, 'state_name' => MissionStates::name($state), 'requested_machines' => json_encode($request->requested_machines), @@ -194,7 +195,6 @@ class RequestPortalController extends Controller 'zone_fa' => MissionZones::name($request->zone), 'start_date' => $request->start_date, 'end_date' => $request->end_date, - 'description' => $request->description, 'end_point' => $request->end_point, 'encoded_route' => $request->encoded_route, 'category_id' => $request->category_id, @@ -247,6 +247,8 @@ class RequestPortalController extends Controller $machine = CMMSMachine::query()->where('machine_code', '=', $violation->machine_code)->first(['id', 'machine_code', 'car_type']); $mission = Mission::query()->create([ + 'item_id' => $request->item_id, + 'sub_item_id' => $request->sub_item_id, 'user_id' => $user->id, 'username' => $user->username, 'province_id' => $user->province_id, diff --git a/app/Http/Requests/V3/Mission/RequestPortal/ClarifyUnauthorizedExitRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/ClarifyUnauthorizedExitRequest.php index a0129c2c..54eeb4f6 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/ClarifyUnauthorizedExitRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/ClarifyUnauthorizedExitRequest.php @@ -25,6 +25,8 @@ class ClarifyUnauthorizedExitRequest extends FormRequest public function rules(): array { return [ + 'item_id' => 'required|exists:info_items,item', + 'sub_item_id' => 'required|exists:info_items,sub_item', 'rahdaran' => 'array', 'rahdaran.*' => 'exists:rahdaran,id', 'driver' => 'required|integer|exists:rahdaran,id', diff --git a/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php index 46fc0cea..8b75bd61 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php @@ -26,6 +26,8 @@ class ContinueMissionRequest extends FormRequest public function rules(): array { return [ + 'item_id' => 'required|exists:info_items,item', + 'sub_item_id' => 'required|exists:info_items,sub_item', 'rahdaran' => 'array', 'rahdaran.*' => 'exists:rahdaran,id', 'machine_id' => 'required|integer|exists:cmms_machines,id', @@ -33,7 +35,6 @@ class ContinueMissionRequest extends FormRequest 'type' => 'required|in:1,2', 'zone' => 'required|in:1,2,3', 'end_date' => 'required|date', - 'description' => 'string', 'end_point' => 'required|string', 'encoded_route' => 'required|string', 'explanation' => 'required|string', diff --git a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php index 0e787c12..7f586a8f 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php @@ -25,6 +25,8 @@ class StoreRequest extends FormRequest public function rules(): array { return [ + 'item_id' => 'required|exists:info_items,item', + 'sub_item_id' => 'required|exists:info_items,sub_item', 'rahdaran' => 'array', 'rahdaran.*' => 'exists:rahdaran,id', 'requested_machines' => 'required|array', @@ -32,7 +34,6 @@ class StoreRequest extends FormRequest 'zone' => 'required|in:1,2,3', 'start_date' => 'required|date', 'end_date' => 'required|date', - 'description' => 'string', 'end_point' => 'required|string', 'encoded_route' => 'required|string', 'explanation' => 'required|string', diff --git a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php index ce8858fa..04e38858 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php @@ -26,6 +26,8 @@ class UpdateRequest extends FormRequest public function rules(): array { return [ + 'item_id' => 'required|exists:info_items,item', + 'sub_item_id' => 'required|exists:info_items,sub_item', 'rahdaran' => 'array', 'rahdaran.*' => 'exists:rahdaran,id', 'requested_machines' => 'required|array', @@ -33,7 +35,6 @@ class UpdateRequest extends FormRequest 'zone' => 'required|in:1,2,3', 'start_date' => 'required|date', 'end_date' => 'required|date', - 'description' => 'string', 'end_point' => 'required|string', 'encoded_route' => 'required|string', 'explanation' => 'required|string', diff --git a/app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php b/app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php index c5d763d2..f48c14f9 100644 --- a/app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php +++ b/app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php @@ -13,8 +13,8 @@ class DeallocateRequest extends FormRequest */ public function authorize(): bool { - return $this->mission->station_id == auth()->user()->station_id && - in_array($this->mission->state_id, [MissionStates::REQUEST_CREATED->value, MissionStates::PENDING_CONFIRMATION->value]) + return ($this->mission->station_id == auth()->user()->station_id && + in_array($this->mission->state_id, [MissionStates::REQUEST_CREATED->value, MissionStates::PENDING_CONFIRMATION->value])) || auth()->user()->username === 'witel'; } diff --git a/app/Models/Mission.php b/app/Models/Mission.php index a277162a..3c745d8c 100644 --- a/app/Models/Mission.php +++ b/app/Models/Mission.php @@ -14,7 +14,7 @@ class Mission extends Model { use HasFactory; - protected $guarded = []; + protected $guarded = ['id']; protected $hidden = ['pivot']; protected $casts = [ 'start_time' => 'datetime', diff --git a/app/Models/MissionViolation.php b/app/Models/MissionViolation.php index ad94c62a..31457d90 100644 --- a/app/Models/MissionViolation.php +++ b/app/Models/MissionViolation.php @@ -10,7 +10,7 @@ use Illuminate\Database\Eloquent\Relations\HasOne; class MissionViolation extends Model { use HasFactory; - protected $guarded =[]; + protected $guarded =['id']; public function mission(): BelongsTo { diff --git a/database/migrations/2026_06_21_120836_add_item_and_subitems_to_missions_table.php b/database/migrations/2026_06_21_120836_add_item_and_subitems_to_missions_table.php new file mode 100644 index 00000000..224a480f --- /dev/null +++ b/database/migrations/2026_06_21_120836_add_item_and_subitems_to_missions_table.php @@ -0,0 +1,29 @@ +unsignedInteger('item_id')->nullable(); + $table->unsignedInteger('sub_item_id')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('missions', function (Blueprint $table) { + $table->dropColumn('item_id', 'sub_item_id'); + }); + } +};