add transportation routes
This commit is contained in:
@@ -9,8 +9,7 @@ enum MissionStates: int
|
|||||||
case START_MISSION = 3;
|
case START_MISSION = 3;
|
||||||
case END_MISSION = 4;
|
case END_MISSION = 4;
|
||||||
case REJECT_BY_TRANSPORTATION = 5;
|
case REJECT_BY_TRANSPORTATION = 5;
|
||||||
case REJECT_BY_CONTROL_UNIT = 6;
|
case CANCELLED = 6;
|
||||||
case CANCELLED = 7;
|
|
||||||
|
|
||||||
public static function name(int $state): string
|
public static function name(int $state): string
|
||||||
{
|
{
|
||||||
@@ -20,8 +19,7 @@ enum MissionStates: int
|
|||||||
3 => 'درخواست توسط واحد کنترل تایید شد و ماموریت آغاز می شود',
|
3 => 'درخواست توسط واحد کنترل تایید شد و ماموریت آغاز می شود',
|
||||||
4 => 'اتمام ماموریت',
|
4 => 'اتمام ماموریت',
|
||||||
5 => 'عدم تخصیص خودرو توسط واحد نقلیه و بازگشت درخواست به کارتابل کاربر',
|
5 => 'عدم تخصیص خودرو توسط واحد نقلیه و بازگشت درخواست به کارتابل کاربر',
|
||||||
6 => 'عدم تایید توسط واحد کنترل',
|
6 => 'ماموریت لغو شد',
|
||||||
7 => 'ماموریت لغو شد',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
return $mapArray[$state];
|
return $mapArray[$state];
|
||||||
|
|||||||
@@ -25,19 +25,23 @@ class RequestPortalController extends Controller
|
|||||||
public function store(StoreRequest $request): JsonResponse
|
public function store(StoreRequest $request): JsonResponse
|
||||||
{
|
{
|
||||||
DB::transaction(function () use ($request) {
|
DB::transaction(function () use ($request) {
|
||||||
|
$user = auth()->user();
|
||||||
$state = MissionStates::REQUEST_CREATED->value;
|
$state = MissionStates::REQUEST_CREATED->value;
|
||||||
$mission = Mission::query()->create([
|
$mission = Mission::query()->create([
|
||||||
'user_id'=> auth()->user()->id,
|
'user_id'=> $user->id,
|
||||||
|
'username'=> $user->username,
|
||||||
|
'province_id'=> $user->province_id,
|
||||||
|
'province_name'=> $user->province_fa,
|
||||||
|
'edare_shahri_id'=> $user->edare_shahri_id ?? null,
|
||||||
|
'edare_shahri_name'=> $user->edare_shahri_name ?? null,
|
||||||
'state_id' =>$state,
|
'state_id' =>$state,
|
||||||
'state_name' => MissionStates::name($state),
|
'state_name' => MissionStates::name($state),
|
||||||
'requested_machine_type' => $request->requested_machine_type,
|
'requested_machines' => $request->requested_machines,
|
||||||
'requested_machine_numbers' => $request->requested_machine_numbers,
|
|
||||||
'type' => $request->type,
|
'type' => $request->type,
|
||||||
'start_date' => $request->start_date,
|
'start_date' => $request->start_date,
|
||||||
'end_date' => $request->end_date,
|
'end_date' => $request->end_date,
|
||||||
'request_date' => $request->request_date,
|
'request_date' => now(),
|
||||||
'description' => $request->description,
|
'description' => $request->description,
|
||||||
'start_point' => $request->start_point,
|
|
||||||
'end_point' => $request->end_point,
|
'end_point' => $request->end_point,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -59,14 +63,12 @@ class RequestPortalController extends Controller
|
|||||||
$mission->update([
|
$mission->update([
|
||||||
'state_id' =>$state,
|
'state_id' =>$state,
|
||||||
'state_name' => MissionStates::name($state),
|
'state_name' => MissionStates::name($state),
|
||||||
'requested_machine_type' => $request->requested_machine_type,
|
'requested_machines' => $request->requested_machines,
|
||||||
'requested_machine_numbers' => $request->requested_machine_numbers,
|
|
||||||
'type' => $request->type,
|
'type' => $request->type,
|
||||||
'start_date' => $request->start_date,
|
'start_date' => $request->start_date,
|
||||||
'end_date' => $request->end_date,
|
'end_date' => $request->end_date,
|
||||||
'request_date' => $request->request_date,
|
'request_date' => $request->request_date,
|
||||||
'description' => $request->description,
|
'description' => $request->description,
|
||||||
'start_point' => $request->start_point,
|
|
||||||
'end_point' => $request->end_point,
|
'end_point' => $request->end_point,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\V3\Dashboard\Mission;
|
|||||||
use App\Enums\MissionStates;
|
use App\Enums\MissionStates;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\V3\Mission\TransportaionUnit\AllocateRequest;
|
use App\Http\Requests\V3\Mission\TransportaionUnit\AllocateRequest;
|
||||||
|
use App\Http\Requests\V3\Mission\TransportaionUnit\DeallocateRequest;
|
||||||
use App\Http\Traits\ApiResponse;
|
use App\Http\Traits\ApiResponse;
|
||||||
use App\Models\Mission;
|
use App\Models\Mission;
|
||||||
use App\Services\Cartables\Mission\TransportationUnitService;
|
use App\Services\Cartables\Mission\TransportationUnitService;
|
||||||
@@ -33,13 +34,14 @@ class TransportationUnitController extends Controller
|
|||||||
return $this->successResponse();
|
return $this->successResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function deallocate(Mission $mission): JsonResponse
|
public function deallocate(DeallocateRequest $request, Mission $mission): JsonResponse
|
||||||
{
|
{
|
||||||
$state = MissionStates::REJECT_BY_TRANSPORTATION->value;
|
$state = MissionStates::REJECT_BY_TRANSPORTATION->value;
|
||||||
|
|
||||||
$mission->update([
|
$mission->update([
|
||||||
'state_id' => $state,
|
'state_id' => $state,
|
||||||
'state_name' => MissionStates::name($state),
|
'state_name' => MissionStates::name($state),
|
||||||
|
'description' => $request->description
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return $this->successResponse();
|
return $this->successResponse();
|
||||||
|
|||||||
@@ -24,8 +24,7 @@ class StoreRequest extends FormRequest
|
|||||||
return [
|
return [
|
||||||
'rahdaran' => 'required|array',
|
'rahdaran' => 'required|array',
|
||||||
'rahdaran.*' => 'exists:rahdaran,id',
|
'rahdaran.*' => 'exists:rahdaran,id',
|
||||||
'requested_machine_type' => 'required|string|max:255',
|
'requested_machines' => 'required|array',
|
||||||
'requested_machine_numbers'=> 'required|integer|max:255',
|
|
||||||
'type' => 'required|string|max:50',
|
'type' => 'required|string|max:50',
|
||||||
'start_date' => 'required|date',
|
'start_date' => 'required|date',
|
||||||
'end_date' => 'required|date',
|
'end_date' => 'required|date',
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Requests\V3\Mission\RequestPortal;
|
namespace App\Http\Requests\V3\Mission\RequestPortal;
|
||||||
|
|
||||||
|
use App\Enums\MissionStates;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
class UpdateRequest extends FormRequest
|
class UpdateRequest extends FormRequest
|
||||||
@@ -11,7 +12,7 @@ class UpdateRequest extends FormRequest
|
|||||||
*/
|
*/
|
||||||
public function authorize(): bool
|
public function authorize(): bool
|
||||||
{
|
{
|
||||||
return ($this->route('mission'))->user_id === auth()->id();
|
return $this->mission->user_id === auth()->user()->id && $this->mission->state_id == MissionStates::REJECT_BY_TRANSPORTATION->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -24,8 +25,7 @@ class UpdateRequest extends FormRequest
|
|||||||
return [
|
return [
|
||||||
'rahdaran' => 'required|array',
|
'rahdaran' => 'required|array',
|
||||||
'rahdaran.*' => 'exists:rahdaran,id',
|
'rahdaran.*' => 'exists:rahdaran,id',
|
||||||
'requested_machine_type' => 'required|string|max:255',
|
'requested_machines' => 'required|array',
|
||||||
'requested_machine_numbers'=> 'required|integer|max:255',
|
|
||||||
'type' => 'required|string|max:50',
|
'type' => 'required|string|max:50',
|
||||||
'start_date' => 'required|date',
|
'start_date' => 'required|date',
|
||||||
'end_date' => 'required|date',
|
'end_date' => 'required|date',
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Requests\V3\Mission\TransportaionUnit;
|
namespace App\Http\Requests\V3\Mission\TransportaionUnit;
|
||||||
|
|
||||||
|
use App\Enums\MissionStates;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
class AllocateRequest extends FormRequest
|
class AllocateRequest extends FormRequest
|
||||||
@@ -11,7 +12,7 @@ class AllocateRequest extends FormRequest
|
|||||||
*/
|
*/
|
||||||
public function authorize(): bool
|
public function authorize(): bool
|
||||||
{
|
{
|
||||||
return $this->mission->edare_shahri_id == auth()->user()->edarate_shahri_id;
|
return $this->mission->edare_shahri_id == auth()->user()->edarate_shahri_id && $this->mission->state_id == MissionStates::REQUEST_CREATED->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests\V3\Mission\TransportaionUnit;
|
||||||
|
|
||||||
|
use App\Enums\MissionStates;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class DeallocateRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return $this->mission->edare_shahri_id == auth()->user()->edarate_shahri_id && $this->mission->state_id == MissionStates::REQUEST_CREATED->value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'description' => 'string',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,20 +15,26 @@ class RequestPortalService
|
|||||||
public function datatable(Request $request)
|
public function datatable(Request $request)
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
|
$fields = [
|
||||||
|
'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name',
|
||||||
|
'description', 'requested_machines', 'type', 'start_date',
|
||||||
|
'end_date', 'request_date', 'start_point', 'end_point',
|
||||||
|
];
|
||||||
$query = Mission::query();
|
$query = Mission::query();
|
||||||
|
|
||||||
if ($user->hasPermissionTo('mission-manage-city')) {
|
if ($user->hasPermissionTo('manage-request-portal-city')) {
|
||||||
$query->where('edarate_shahri_id', '=', $user->edarate_shahri_id);
|
$query->where('edarate_shahri_id', '=', $user->edarate_shahri_id);
|
||||||
}
|
}
|
||||||
elseif ($user->hasPermissionTo('mission-manage-province')) {
|
elseif ($user->hasPermissionTo('manage-request-portal-province')) {
|
||||||
$query->where('province_id', '=', $user->province_id);
|
$query->where('province_id', '=', $user->province_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
return DataTableFacade::run(
|
return DataTableFacade::run(
|
||||||
$query,
|
$query,
|
||||||
$request,
|
$request,
|
||||||
allowedFilters: ['*'],
|
allowedFilters: ['*'],
|
||||||
allowedSortings: ['*']
|
allowedSortings: ['*'],
|
||||||
|
allowedSelects: $fields
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -14,8 +14,8 @@ class TransportationUnitService
|
|||||||
{
|
{
|
||||||
$fields = [
|
$fields = [
|
||||||
'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name',
|
'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name',
|
||||||
'description', 'requested_machine_type', 'requested_machine_numbers', 'type',
|
'description', 'requested_machines', 'type', 'start_date',
|
||||||
'start_date', 'end_date', 'request_date', 'start_point', 'end_point',
|
'end_date', 'request_date', 'start_point', 'end_point',
|
||||||
];
|
];
|
||||||
|
|
||||||
$query = Mission::query()
|
$query = Mission::query()
|
||||||
|
|||||||
@@ -16,8 +16,6 @@ return new class extends Migration
|
|||||||
$table->unsignedInteger('user_id');
|
$table->unsignedInteger('user_id');
|
||||||
$table->foreign('user_id')->references('id')->on('users');
|
$table->foreign('user_id')->references('id')->on('users');
|
||||||
$table->string('username');
|
$table->string('username');
|
||||||
$table->foreignId('machine_id')->nullable()->constrained('cmms_machines')->noActionOnDelete();
|
|
||||||
$table->foreignId('rahdar_id')->constrained('rahdaran')->noActionOnDelete();
|
|
||||||
$table->foreignId('state_id')->constrained('mission_states')->noActionOnDelete();
|
$table->foreignId('state_id')->constrained('mission_states')->noActionOnDelete();
|
||||||
$table->string('state_name');
|
$table->string('state_name');
|
||||||
$table->unsignedTinyInteger('province_id')->nullable();
|
$table->unsignedTinyInteger('province_id')->nullable();
|
||||||
@@ -26,14 +24,12 @@ return new class extends Migration
|
|||||||
$table->unsignedBigInteger('edare_shahri_id')->nullable();
|
$table->unsignedBigInteger('edare_shahri_id')->nullable();
|
||||||
$table->foreign('edare_shahri_id')->references('id')->on('edarate_shahri')->noActionOnDelete();
|
$table->foreign('edare_shahri_id')->references('id')->on('edarate_shahri')->noActionOnDelete();
|
||||||
$table->string('edare_shahri_name');
|
$table->string('edare_shahri_name');
|
||||||
$table->string('requested_machine_type');
|
$table->json('requested_machines');
|
||||||
$table->integer('requested_machine_numbers');
|
|
||||||
$table->string('type');
|
$table->string('type');
|
||||||
$table->dateTime('start_date');
|
$table->dateTime('start_date');
|
||||||
$table->dateTime('end_date');
|
$table->dateTime('end_date');
|
||||||
$table->dateTime('request_date');
|
$table->dateTime('request_date');
|
||||||
$table->text('description')->nullable();
|
$table->text('description')->nullable();
|
||||||
$table->string('start_point');
|
|
||||||
$table->string('end_point');
|
$table->string('end_point');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ namespace Database\Seeders;
|
|||||||
|
|
||||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||||
use Illuminate\Database\Seeder;
|
use Illuminate\Database\Seeder;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class AxisTypeSeeder extends Seeder
|
class AxisTypeSeeder extends Seeder
|
||||||
{
|
{
|
||||||
@@ -12,6 +13,12 @@ class AxisTypeSeeder extends Seeder
|
|||||||
*/
|
*/
|
||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
//
|
DB::table('axis_types')->insert([
|
||||||
|
['name' => 'آزادراه'],
|
||||||
|
['name' => 'بزرگراه'],
|
||||||
|
['name' => 'اصلی'],
|
||||||
|
['name' => 'فرعی'],
|
||||||
|
['name' => 'روستایی'],
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ class MissionStateSeeder extends Seeder
|
|||||||
['name' => 'درخواست توسط واحد کنترل تایید شد و ماموریت آغاز می شود'],
|
['name' => 'درخواست توسط واحد کنترل تایید شد و ماموریت آغاز می شود'],
|
||||||
['name' => 'اتمام ماموریت'],
|
['name' => 'اتمام ماموریت'],
|
||||||
['name' => 'عدم تخصیص خودرو توسط واحد نقلیه و بازگشت درخواست به کارتابل کاربر'],
|
['name' => 'عدم تخصیص خودرو توسط واحد نقلیه و بازگشت درخواست به کارتابل کاربر'],
|
||||||
['name' => 'عدم تایید توسط واحد کنترل'],
|
|
||||||
['name' => 'ماموریت لغو شد'],
|
['name' => 'ماموریت لغو شد'],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshSampleController;
|
|||||||
use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshTypeController;
|
use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshTypeController;
|
||||||
use App\Http\Controllers\V3\Dashboard\ItemsManagementController;
|
use App\Http\Controllers\V3\Dashboard\ItemsManagementController;
|
||||||
use App\Http\Controllers\V3\Dashboard\Mission\RequestPortalController;
|
use App\Http\Controllers\V3\Dashboard\Mission\RequestPortalController;
|
||||||
|
use App\Http\Controllers\V3\Dashboard\Mission\TransportationUnitController;
|
||||||
use App\Http\Controllers\V3\Dashboard\ObservedItemController;
|
use App\Http\Controllers\V3\Dashboard\ObservedItemController;
|
||||||
use App\Http\Controllers\V3\Dashboard\AccidentReceiptController;
|
use App\Http\Controllers\V3\Dashboard\AccidentReceiptController;
|
||||||
use App\Http\Controllers\V3\Dashboard\OtpManagementController;
|
use App\Http\Controllers\V3\Dashboard\OtpManagementController;
|
||||||
@@ -425,8 +426,12 @@ Route::prefix('road_maintenance_station')
|
|||||||
Route::post('/{rahdariPoint}', 'update')->name('update')->middleware('permission:edit-tollhouse|edit-tollhouse-province');
|
Route::post('/{rahdariPoint}', 'update')->name('update')->middleware('permission:edit-tollhouse|edit-tollhouse-province');
|
||||||
Route::delete('/{rahdariPoint}', 'destroy')->name('destroy')->middleware('permission:delete-tollhouse|delete-tollhouse-province');
|
Route::delete('/{rahdariPoint}', 'destroy')->name('destroy')->middleware('permission:delete-tollhouse|delete-tollhouse-province');
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::prefix('missions')
|
Route::prefix('missions')
|
||||||
->name('missions.')
|
->name('missions.')
|
||||||
|
->group(function () {
|
||||||
|
Route::name('requestPortal.')
|
||||||
|
->middleware('permission:manage-request-portal-city|manage-request-portal-province|manage-request-portal-country')
|
||||||
->controller(RequestPortalController::class)
|
->controller(RequestPortalController::class)
|
||||||
->group(function () {
|
->group(function () {
|
||||||
Route::get('/', 'index')->name('index');
|
Route::get('/', 'index')->name('index');
|
||||||
@@ -435,3 +440,11 @@ Route::prefix('missions')
|
|||||||
Route::post('/{mission}', 'update')->name('update');
|
Route::post('/{mission}', 'update')->name('update');
|
||||||
Route::delete('/{mission}', 'destroy')->name('destroy');
|
Route::delete('/{mission}', 'destroy')->name('destroy');
|
||||||
});
|
});
|
||||||
|
Route::name('transportationUnit.')
|
||||||
|
->controller(TransportationUnitController::class)
|
||||||
|
->group(function () {
|
||||||
|
Route::get('/', 'index')->name('index');
|
||||||
|
Route::post('/allocate/{mission}', 'allocate')->name('allocate');
|
||||||
|
Route::post('/deallocate/{mission}', 'deallocate')->name('deallocate');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user