add form request to start and finish api

This commit is contained in:
2025-06-28 08:54:15 +03:30
parent 47dd5afb47
commit 7769133bc3
7 changed files with 84 additions and 25 deletions

View File

@@ -4,6 +4,8 @@ namespace App\Http\Controllers\V3\Dashboard\Mission;
use App\Enums\MissionStates;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\Mission\ControlUnit\FinishRequest;
use App\Http\Requests\V3\Mission\ControlUnit\StartRequest;
use App\Http\Traits\ApiResponse;
use App\Models\Mission;
use App\Services\Cartables\Mission\ControlUnitService;
@@ -19,7 +21,7 @@ class ControlUnitController extends Controller
return response()->json($controlUnitService->datatable($request));
}
public function start(Request $request, Mission $mission): JsonResponse
public function start(StartRequest $request, Mission $mission): JsonResponse
{
DB::transaction(function () use ($request, $mission) {
$mission->histories()->create([
@@ -38,7 +40,7 @@ class ControlUnitController extends Controller
return $this->successResponse();
}
public function finish(Request $request, Mission $mission): JsonResponse
public function finish(FinishRequest $request, Mission $mission): JsonResponse
{
DB::transaction(function () use ($request, $mission) {
$mission->histories()->create([

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Http\Requests\V3\Mission\ControlUnit;
use App\Enums\MissionStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class FinishRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return $this->mission->state_id == MissionStates::START_MISSION->value;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{
return [
//
];
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Http\Requests\V3\Mission\ControlUnit;
use App\Enums\MissionStates;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class StartRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return $this->mission->state_id == MissionStates::PENDING_CONFIRMATION->value;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{
return [
//
];
}
}

View File

@@ -16,14 +16,10 @@ class ControlUnitService
public function dataTable(Request $request)
{
$fields = [
'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name',
'description', 'requested_machines', 'type', 'type_fa', 'start_date',
'end_date', 'request_date', 'end_point', 'area', 'zone', 'zone_fa'
];
$query = Mission::query()
->where('state_id', '=', MissionStates::PENDING_CONFIRMATION->value)
->whereIn('state_id', [
MissionStates::PENDING_CONFIRMATION->value, MissionStates::START_MISSION->value
])
->where('edare_shahri_name', '=', Auth::user()->edarate_shahri_id);
return DataTableFacade::run(
@@ -31,7 +27,11 @@ class ControlUnitService
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
allowedSelects: $fields
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'
]
);
}
}

View File

@@ -15,11 +15,6 @@ class RequestPortalService
public function datatable(Request $request)
{
$user = auth()->user();
$fields = [
'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name',
'description', 'requested_machines', 'type', 'type_fa', 'start_date',
'end_date', 'request_date', 'end_point', 'area', 'zone', 'zone_fa'
];
$query = Mission::query();
if ($user->hasPermissionTo('manage-request-portal-city')) {
@@ -34,7 +29,11 @@ class RequestPortalService
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
allowedSelects: $fields
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'
]
);
}
}

View File

@@ -12,12 +12,6 @@ class TransportationUnitService
{
public function dataTable(Request $request)
{
$fields = [
'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name',
'description', 'requested_machines', 'type', 'type_fa', 'start_date',
'end_date', 'request_date', 'end_point', 'area', 'zone', 'zone_fa'
];
$query = Mission::query()
->where('state_id', '=', MissionStates::REQUEST_CREATED->value)
->where('edare_shahri_name', '=', Auth::user()->edarate_shahri_id);
@@ -27,7 +21,11 @@ class TransportationUnitService
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
allowedSelects: $fields
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'
]
);
}
}

View File

@@ -202,8 +202,8 @@ Route::prefix('road_patrol')
->controller(\App\Http\Controllers\V3\Dashboard\RoadPatrol\DetailController::class)
->group(function () {
Route::get('/{roadPatrol}', 'show')->name('show');
Route::get('/machines/{roadPatrol}', 'roadPatrolMachine')->name('roadPatrolMachine');
Route::get('/rahdaran/{roadPatrol}', 'roadPatrolRahdar')->name('roadPatrolRahdar');
Route::get('/machines/{roadPatrol}', 'machines')->name('machines');
Route::get('/rahdaran/{roadPatrol}', 'rahdaran')->name('rahdaran');
});
Route::prefix('operator')