Merge branch 'feature/debug' into 'develop'
Feature/debug See merge request witelgroup/rms_v2!142
This commit is contained in:
@@ -37,8 +37,8 @@ class RequestPortalController extends Controller
|
|||||||
'username' => $user->username,
|
'username' => $user->username,
|
||||||
'province_id' => $user->province_id,
|
'province_id' => $user->province_id,
|
||||||
'province_name' => $user->province_fa,
|
'province_name' => $user->province_fa,
|
||||||
'edare_shahri_id' => $user->edare_shahri_id ?? null,
|
'edare_shahri_id' => $user->edarate_shahri_id ?? null,
|
||||||
'edare_shahri_name' => $user->edare_shahri_name ?? null,
|
'edare_shahri_name' => $user->edarate_shahri_name ?? null,
|
||||||
'state_id' => $state,
|
'state_id' => $state,
|
||||||
'state_name' => MissionStates::name($state),
|
'state_name' => MissionStates::name($state),
|
||||||
'requested_machines' => json_encode($request->requested_machines),
|
'requested_machines' => json_encode($request->requested_machines),
|
||||||
@@ -100,7 +100,10 @@ class RequestPortalController extends Controller
|
|||||||
|
|
||||||
$mission->rahdaran()->sync($request->rahdaran);
|
$mission->rahdaran()->sync($request->rahdaran);
|
||||||
if ($request->category_id == 3){
|
if ($request->category_id == 3){
|
||||||
$mission->roadObserved()->attach($request->road_observed_id);
|
RoadObserved::query()
|
||||||
|
->find($request->road_observed_id)
|
||||||
|
->missions()
|
||||||
|
->sync($mission->id);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,12 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers\V3;
|
namespace App\Http\Controllers\V3;
|
||||||
|
|
||||||
|
use App\Enums\MissionStates;
|
||||||
use App\Exceptions\ProhibitedAction;
|
use App\Exceptions\ProhibitedAction;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Traits\ApiResponse;
|
use App\Http\Traits\ApiResponse;
|
||||||
use App\Models\EdarateOstani;
|
use App\Models\EdarateOstani;
|
||||||
|
use App\Models\Mission;
|
||||||
use App\Models\RoadItemsProject;
|
use App\Models\RoadItemsProject;
|
||||||
use App\Models\RoadObserved;
|
use App\Models\RoadObserved;
|
||||||
use App\Models\SafetyAndPrivacy;
|
use App\Models\SafetyAndPrivacy;
|
||||||
@@ -28,6 +30,7 @@ class NotificationController extends Controller
|
|||||||
'roadItem' => $this->roadItemNotifications(),
|
'roadItem' => $this->roadItemNotifications(),
|
||||||
'safetyAndPrivacy' => $this->safetyAndPrivacyNotifications(),
|
'safetyAndPrivacy' => $this->safetyAndPrivacyNotifications(),
|
||||||
'roadObserved' => $this->roadObservedNotifications(),
|
'roadObserved' => $this->roadObservedNotifications(),
|
||||||
|
'mission' => $this->missionNotification(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -185,4 +188,35 @@ class NotificationController extends Controller
|
|||||||
|
|
||||||
return $road_observations;
|
return $road_observations;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function missionNotification(): array
|
||||||
|
{
|
||||||
|
$user = auth()->user();
|
||||||
|
$missions = [
|
||||||
|
'request_portal' => Mission::query()
|
||||||
|
->where([
|
||||||
|
['state_id', '=', MissionStates::REJECT_BY_TRANSPORTATION->value],
|
||||||
|
['user_id', '=', $user->id]
|
||||||
|
])->count(),
|
||||||
|
'transportation' => 0,
|
||||||
|
'control' => 0,
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($user->hasPermissionTo('manage-transportation-unit')) {
|
||||||
|
$missions['transportation'] = Mission::query()->where([
|
||||||
|
['state_id', '=', MissionStates::REQUEST_CREATED->value],
|
||||||
|
['edare_shahri_id', '=', $user->edarate_shahri_id]
|
||||||
|
])->count();
|
||||||
|
}
|
||||||
|
if ($user->hasPermissionTo('manage-control-unit')) {
|
||||||
|
$missions['control'] = Mission::query()->where([
|
||||||
|
['state_id', '=', MissionStates::PENDING_CONFIRMATION->value],
|
||||||
|
['edare_shahri_id', '=', $user->edarate_shahri_id]
|
||||||
|
])->count();
|
||||||
|
}
|
||||||
|
|
||||||
|
$missions['total'] = $missions['request_portal'] + $missions['transportation'] + $missions['control'];
|
||||||
|
|
||||||
|
return $missions;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ class ProfileController extends Controller
|
|||||||
$user = Auth::user();
|
$user = Auth::user();
|
||||||
|
|
||||||
return $this->successResponse([
|
return $this->successResponse([
|
||||||
|
'id' => $user->id,
|
||||||
'username' => $user->username,
|
'username' => $user->username,
|
||||||
'first_name' => $user->first_name,
|
'first_name' => $user->first_name,
|
||||||
'last_name' => $user->last_name,
|
'last_name' => $user->last_name,
|
||||||
|
|||||||
@@ -61,16 +61,10 @@ class RahdaranController extends Controller
|
|||||||
|
|
||||||
public function search(Request $request): JsonResponse
|
public function search(Request $request): JsonResponse
|
||||||
{
|
{
|
||||||
if ($request->has('code')) {
|
$matchedSearchedRahdaran = Rahdaran::query()
|
||||||
$matchedSearchedRahdaran = Rahdaran::query()
|
->where('code', 'LIKE', "%{$request->search}%")
|
||||||
->where('code', 'LIKE', "%{$request->code}%")
|
->orWhere('name', 'LIKE', "%{$request->search}%")
|
||||||
->get();
|
->get();
|
||||||
}
|
|
||||||
else {
|
|
||||||
$matchedSearchedRahdaran = Rahdaran::query()
|
|
||||||
->where('name', 'LIKE', "%{$request->name}%")
|
|
||||||
->get();
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->successResponse($matchedSearchedRahdaran);
|
return $this->successResponse($matchedSearchedRahdaran);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,23 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\V3\Dashboard\RoadItem;
|
namespace App\Http\Controllers\V3\WebServices;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\V3\RoadItem\WebService\CheckRequest;
|
use App\Http\Requests\V3\WebServices\RoadItem\IndexRequest;
|
||||||
use App\Http\Traits\ApiResponse;
|
use App\Http\Traits\ApiResponse;
|
||||||
use App\Models\RoadItemsProject;
|
use App\Models\RoadItemsProject;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
class WebServiceController extends Controller
|
class RoadItemController extends Controller
|
||||||
{
|
{
|
||||||
use ApiResponse;
|
use ApiResponse;
|
||||||
public function getRoadItem(CheckRequest $request): JsonResponse
|
public function index(IndexRequest $request): JsonResponse
|
||||||
{
|
{
|
||||||
$fromDate = $request->from_date;
|
$fromDate = $request->from_date;
|
||||||
$toDate = $request->to_date;
|
$toDate = $request->to_date;
|
||||||
$roadItems = RoadItemsProject::query()
|
$roadItems = RoadItemsProject::query()
|
||||||
->whereBetween('created_at', [$fromDate, $toDate])
|
->where('is_new', '=', 1)
|
||||||
|
->whereBetween('activity_date_time', [$fromDate, $toDate])
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
return $this->successResponse($roadItems);
|
return $this->successResponse($roadItems);
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\V3\WebServices;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Http\Requests\V3\WebServices\RoadMaintenanceStation\IndexRequest;
|
||||||
|
use App\Http\Traits\ApiResponse;
|
||||||
|
use App\Models\RahdariPoint;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class RoadMaintenanceStationController extends Controller
|
||||||
|
{
|
||||||
|
use ApiResponse;
|
||||||
|
|
||||||
|
public function index(IndexRequest $request): JsonResponse
|
||||||
|
{
|
||||||
|
$province = $request->province;
|
||||||
|
$status = $request->status;
|
||||||
|
$type = $request->type;
|
||||||
|
|
||||||
|
$data = RahdariPoint::query()
|
||||||
|
->when($status, fn ($query, $status) => $query->where('status', $status))
|
||||||
|
->when($type, fn ($query, $type) => $query->where('type', $type))
|
||||||
|
->when($province, fn($query, $province) => $query->where('province_id', $province))
|
||||||
|
->get([
|
||||||
|
'id', 'province_name', 'city_name', 'name', 'status', 'type_fa', 'phone',
|
||||||
|
'code', 'lat', 'lng',
|
||||||
|
]);
|
||||||
|
|
||||||
|
return $this->successResponse($data);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ namespace App\Http\Requests\V3\Mission\ControlUnit;
|
|||||||
use App\Enums\MissionStates;
|
use App\Enums\MissionStates;
|
||||||
use Illuminate\Contracts\Validation\ValidationRule;
|
use Illuminate\Contracts\Validation\ValidationRule;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
class StartRequest extends FormRequest
|
class StartRequest extends FormRequest
|
||||||
{
|
{
|
||||||
@@ -13,7 +14,7 @@ class StartRequest extends FormRequest
|
|||||||
*/
|
*/
|
||||||
public function authorize(): bool
|
public function authorize(): bool
|
||||||
{
|
{
|
||||||
return ($this->mission->state_id == MissionStates::PENDING_CONFIRMATION->value && $this->mission->code == $this->code);
|
return $this->mission->state_id == MissionStates::PENDING_CONFIRMATION->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -27,4 +28,18 @@ class StartRequest extends FormRequest
|
|||||||
'code' => 'required|string',
|
'code' => 'required|string',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function after(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
function (Validator $validator) {
|
||||||
|
if ($this->mission->code != $this->code){
|
||||||
|
$validator->errors()->add(
|
||||||
|
'code',
|
||||||
|
'کد وارد شده صحیح نمی باشد'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ class StoreRequest extends FormRequest
|
|||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
function (Validator $validator) {
|
function (Validator $validator) {
|
||||||
if ($this->type === 1){
|
if ($this->type == 1){
|
||||||
$start = Carbon::parse($this->start_date);
|
$start = Carbon::parse($this->start_date);
|
||||||
$end = Carbon::parse($this->end_date);
|
$end = Carbon::parse($this->end_date);
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +1,27 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Requests\V3\RoadItem\WebService;
|
namespace App\Http\Requests\V3\WebServices\RoadItem;
|
||||||
|
|
||||||
use App\Models\User;
|
use Illuminate\Contracts\Validation\ValidationRule;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Auth;
|
|
||||||
use Illuminate\Support\Facades\Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
|
||||||
class CheckRequest extends FormRequest
|
class IndexRequest extends FormRequest
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Determine if the user is authorized to make this request.
|
* Determine if the user is authorized to make this request.
|
||||||
*/
|
*/
|
||||||
public function authorize(): bool
|
public function authorize(): bool
|
||||||
{
|
{
|
||||||
$user = Auth::user();
|
return
|
||||||
return (
|
$this->username === 'service_user257' &&
|
||||||
$user->username === 'service_user257'&&
|
Hash::check('S3rv1ce@123', $this->password);
|
||||||
Hash::check('S3rv1ce@123', $user->password) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the validation rules that apply to the request.
|
* Get the validation rules that apply to the request.
|
||||||
*
|
*
|
||||||
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
* @return array<string, ValidationRule|array|string>
|
||||||
*/
|
*/
|
||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests\V3\WebServices\RoadMaintenanceStation;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Validation\ValidationRule;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
|
||||||
|
class IndexRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return
|
||||||
|
$this->username === 'service_user257' &&
|
||||||
|
Hash::check('S3rv1ce@123', $this->password);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array<string, ValidationRule|array|string>
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'province' => 'exists:provinces,id',
|
||||||
|
'status' => 'in:0,1',
|
||||||
|
'type' => 'in:1,2,3',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,6 +13,7 @@ class Mission extends Model
|
|||||||
use HasFactory;
|
use HasFactory;
|
||||||
|
|
||||||
protected $guarded = [];
|
protected $guarded = [];
|
||||||
|
protected $hidden = ['pivot'];
|
||||||
|
|
||||||
protected function requestedMachines(): Attribute
|
protected function requestedMachines(): Attribute
|
||||||
{
|
{
|
||||||
@@ -70,11 +71,12 @@ class Mission extends Model
|
|||||||
|
|
||||||
public function roadObserved(): MorphToMany
|
public function roadObserved(): MorphToMany
|
||||||
{
|
{
|
||||||
return $this->morphToMany(RoadObserved::class,
|
return $this->morphedByMany(
|
||||||
|
RoadObserved::class,
|
||||||
'missionable',
|
'missionable',
|
||||||
'missionables',
|
'missionables',
|
||||||
'mission_id',
|
'mission_id',
|
||||||
'missionable_id',
|
'missionable_id'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ class RoadObserved extends Model
|
|||||||
'rms_start_latlng' => 'array',
|
'rms_start_latlng' => 'array',
|
||||||
'rms_end_latlng' => 'array'
|
'rms_end_latlng' => 'array'
|
||||||
];
|
];
|
||||||
|
protected $hidden = ['pivot'];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all of the project's files.
|
* Get all of the project's files.
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class ControlUnitService
|
|||||||
->whereIn('state_id', [
|
->whereIn('state_id', [
|
||||||
MissionStates::PENDING_CONFIRMATION->value, MissionStates::START_MISSION->value
|
MissionStates::PENDING_CONFIRMATION->value, MissionStates::START_MISSION->value
|
||||||
])
|
])
|
||||||
->where('edare_shahri_name', '=', Auth::user()->edarate_shahri_id);
|
->where('edare_shahri_id', '=', Auth::user()->edarate_shahri_id);
|
||||||
|
|
||||||
return DataTableFacade::run(
|
return DataTableFacade::run(
|
||||||
$query,
|
$query,
|
||||||
@@ -30,7 +30,8 @@ class ControlUnitService
|
|||||||
allowedSelects: [
|
allowedSelects: [
|
||||||
'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name',
|
'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name',
|
||||||
'description', 'requested_machines', 'type', 'type_fa', 'start_date', 'state_id',
|
'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'
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class RequestPortalService
|
|||||||
public function datatable(Request $request)
|
public function datatable(Request $request)
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
$query = Mission::query();
|
$query = Mission::query()->with('roadObserved:id');
|
||||||
|
|
||||||
if ($user->hasPermissionTo('manage-request-portal-city')) {
|
if ($user->hasPermissionTo('manage-request-portal-city')) {
|
||||||
$query->where('edare_shahri_id', '=', $user->edarate_shahri_id);
|
$query->where('edare_shahri_id', '=', $user->edarate_shahri_id);
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class TransportationUnitService
|
|||||||
{
|
{
|
||||||
$query = Mission::query()
|
$query = Mission::query()
|
||||||
->where('state_id', '=', MissionStates::REQUEST_CREATED->value)
|
->where('state_id', '=', MissionStates::REQUEST_CREATED->value)
|
||||||
->where('edare_shahri_name', '=', Auth::user()->edarate_shahri_id);
|
->where('edare_shahri_id', '=', Auth::user()->edarate_shahri_id);
|
||||||
|
|
||||||
return DataTableFacade::run(
|
return DataTableFacade::run(
|
||||||
$query,
|
$query,
|
||||||
@@ -24,7 +24,8 @@ class TransportationUnitService
|
|||||||
allowedSelects: [
|
allowedSelects: [
|
||||||
'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name',
|
'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name',
|
||||||
'description', 'requested_machines', 'type', 'type_fa', 'start_date', 'state_id',
|
'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'
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
Schema::create('missionables', function (Blueprint $table) {
|
Schema::create('missionables', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->foreignId('mission_id')->constrained('missions')->noActionOnDelete();
|
$table->foreignId('mission_id')->constrained('missions')->cascadeOnDelete();
|
||||||
$table->morphs('missionable');
|
$table->morphs('missionable');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ use App\Http\Controllers\V3\Dashboard\Mission\RequestPortalController;
|
|||||||
use App\Http\Controllers\V3\Dashboard\Mission\TransportationUnitController;
|
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\OtpManagementController;
|
use App\Http\Controllers\V3\Dashboard\OtpManagementController;
|
||||||
use App\Http\Controllers\V3\Dashboard\RoadItem\WebServiceController;
|
|
||||||
use App\Http\Controllers\V3\Dashboard\RoadMaintenanceStationController;
|
use App\Http\Controllers\V3\Dashboard\RoadMaintenanceStationController;
|
||||||
use App\Http\Controllers\V3\Dashboard\RoadPatrol\ReportController;
|
use App\Http\Controllers\V3\Dashboard\RoadPatrol\ReportController;
|
||||||
use App\Http\Controllers\V3\Dashboard\SafetyAndPrivacy\OperatorController;
|
use App\Http\Controllers\V3\Dashboard\SafetyAndPrivacy\OperatorController;
|
||||||
@@ -28,6 +27,7 @@ use App\Http\Controllers\V3\NotificationController;
|
|||||||
use App\Http\Controllers\V3\PermissionManagementController;
|
use App\Http\Controllers\V3\PermissionManagementController;
|
||||||
use App\Http\Controllers\V3\ProfileController;
|
use App\Http\Controllers\V3\ProfileController;
|
||||||
use App\Http\Controllers\V3\RahdaranController;
|
use App\Http\Controllers\V3\RahdaranController;
|
||||||
|
use App\Http\Controllers\V3\WebServices\RoadItemController;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
Route::get('admin/permissions', function () {
|
Route::get('admin/permissions', function () {
|
||||||
@@ -160,7 +160,7 @@ Route::prefix('road_items')
|
|||||||
});
|
});
|
||||||
Route::prefix('webservice')
|
Route::prefix('webservice')
|
||||||
->name('webservice.')
|
->name('webservice.')
|
||||||
->controller(WebServiceController::class)
|
->controller(RoadItemController::class)
|
||||||
->group(function () {
|
->group(function () {
|
||||||
Route::get('/', 'getRoadItems')->name('getRoadItem');
|
Route::get('/', 'getRoadItems')->name('getRoadItem');
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user