diff --git a/app/Console/Commands/RoadObservationProblems.php b/app/Console/Commands/RoadObservationProblems.php index d56da6bb..c778d66c 100755 --- a/app/Console/Commands/RoadObservationProblems.php +++ b/app/Console/Commands/RoadObservationProblems.php @@ -99,7 +99,7 @@ class RoadObservationProblems extends Command 'EndTime' => $value->EndTime ?? null, 'StartDate' => $value->StartDate ?? null, 'EndDate' => $value->EndDate ?? null, - 'StartTime_DateTime' => $value->StartTime_DateTime ?? null, + 'StartTime_DateTime' => $value->StartTime_DateTime ? Carbon::createFromFormat('m/d/Y h:i:s A', $value->StartTime_DateTime)->format('Y-m-d H:i:s') : null, 'StartTime_DateTime_fa' => Verta::instance($value->StartTime_DateTime) ?? null, 'EndTime_DateTime' => $value->EndTime_DateTime ?? null, 'AutoID' => $value->AutoID ?? null, diff --git a/app/Enums/RoadMaintenanceStationTypes.php b/app/Enums/RoadMaintenanceStationTypes.php new file mode 100644 index 00000000..4d557675 --- /dev/null +++ b/app/Enums/RoadMaintenanceStationTypes.php @@ -0,0 +1,21 @@ + "دائمی", + 2 => "موقت", + 3 => "فصلی", + ]; + + return $mapArray[$state]; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Api/BiController.php b/app/Http/Controllers/Api/BiController.php index 91272974..ecb4de03 100644 --- a/app/Http/Controllers/Api/BiController.php +++ b/app/Http/Controllers/Api/BiController.php @@ -150,6 +150,7 @@ class BiController extends Controller public function getDiagram(Request $request) { + ini_set('memory_limit', '-1'); $subjectID = $request->subject_id; $provinceID = $request->province_id; $dateFrom = $request->from_date; @@ -1021,6 +1022,7 @@ class BiController extends Controller public function separationActivityTypeRahdariActivities(Request $request) { + ini_set('memory_limit', '-1'); $dateFrom = $request->from_date; $dateTo = $request->to_date; $provinceID = $request->province_id ?? null; @@ -1198,4 +1200,4 @@ class BiController extends Controller 'data' => round($camps, 2) ]); } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php new file mode 100644 index 00000000..3dd07a5a --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php @@ -0,0 +1,260 @@ +user(); + auth()->user()->addActivityComplete(1019); + + $allowedFilters = ['*']; + $allowedSortings = ['*']; + + $province = $request->province; + $status = $request->status; + $type = $request->type; + + $query = 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)); + + if ($user->hasPermissionTo('show-tollhouse-province')) { + $query->where('province_id', $user->province_id); + } + + $data = DataTableFacade::run( + $query, + $request, + allowedFilters: $allowedFilters, + allowedSortings: $allowedSortings + ); + + + foreach ($data['data'] as &$stations) { + if ($user->hasPermissionTo('edit-tollhouse')) { + $stations['canEdit'] = 1; + } + elseif ($user->hasPermissionTo('edit-tollhouse-province') && $stations->province_id == $user->province_id) { + $stations['canEdit'] = 1; + } + else { + $stations['canEdit'] = 0; + } + + if ($user->hasPermissionTo('delete-tollhouse')) { + $stations['canDelete'] = 1; + } + elseif ($user->hasPermissionTo('delete-tollhouse-province') && $stations->province_id == $user->province_id) { + $stations['canDelete'] = 1; + } + else { + $stations['canDelete'] = 0; + } + } + + return response()->json($data); + } + + /** + * Store a newly created resource in storage. + */ + public function store(StoreRequest $request): JsonResponse + { + $province = Province::query()->find($request->province_id); + + $city = City::query()->find($request->city_id); + + $station = RahdariPoint::query()->create([ + 'province_id' => $province->id, + 'province_name' => $province->name_fa, + 'city_id' => $city->id, + 'city_name' => $city->name_fa, + 'name' => $request->name, + 'status' => $request->status, + 'type' => $request->type, + 'type_fa' =>RoadMaintenanceStationTypes::name($request->type), + 'team_num' => $request->team_num, + 'staff_num' => $request->staff_num, + 'phone' => $request->phone, + 'responsible_name' => $request->responsible_name, + 'responsible_mobile' => $request->responsible_mobile, + 'successor_name' => $request->successor_name, + 'successor_mobile' => $request->successor_mobile, + 'machines_light' => $request->machines_light, + 'machines_sheavy' => $request->machines_sheavy, + 'machines_heavy' => $request->machines_heavy, + 'code' => $request->code, + 'lat' => $request->lat, + 'lng' => $request->lng, + 'updated_at_fa' => verta()->now()->format('Y/m/d H:i:s'), + ]); + + $uploadPaths = [ + 'overview_files_1' => "road_stations/{$station->id}", + 'overview_files_2' => "road_stations/{$station->id}", + 'overview_files_3' => "road_stations/{$station->id}", + 'overview_files_4' => "road_stations/{$station->id}", + 'overview_files_5' => "road_stations/{$station->id}", + ]; + + foreach ($uploadPaths as $field => $path) { + if ($request->hasFile($field)) { + $station->files()->create([ + 'path' => FileFacade::save($request->$field, $path) + ]); + } + } + + return $this->successResponse(); + } + + /** + * Display the specified resource. + */ + public function show(RahdariPoint $rahdariPoint): JsonResponse + { + return $this->successResponse($rahdariPoint->load('files')); + } + + /** + * Update the specified resource in storage. + */ + public function update(UpdateRequest $request, RahdariPoint $rahdariPoint): JsonResponse + { + $province = Province::query()->find($request->province_id); + + $city = City::query()->find($request->city_id); + + RahdariPointHistory::query()->create([ + 'user_id' => $request->user()->id, + 'point_id' => $rahdariPoint->id, + 'previous_province_id' => $province->id, + 'previous_province_name' => $province->name_fa, + 'previous_city_id' => $city->id, + 'previous_city_name' => $city->name_fa, + 'previous_name' => $rahdariPoint->name, + 'previous_status' => $rahdariPoint->status, + 'previous_type' => $rahdariPoint->type, + 'previous_team_num' => $rahdariPoint->team_num, + 'previous_staff_num' => $rahdariPoint->staff_num, + 'previous_phone' => $rahdariPoint->phone, + 'previous_responsible_name' => $rahdariPoint->responsible_name, + 'previous_responsible_mobile' => $rahdariPoint->responsible_mobile, + 'previous_successor_name' => $rahdariPoint->successor_name, + 'previous_successor_mobile' => $rahdariPoint->successor_mobile, + 'previous_machines_light' => $rahdariPoint->machines_light, + 'previous_machines_sheavy' => $rahdariPoint->machines_sheavy, + 'previous_machines_heavy' => $rahdariPoint->machines_heavy, + 'previous_lat' => $rahdariPoint->lat, + 'previous_lng' => $rahdariPoint->lng, + 'new_files' => json_encode($rahdariPoint->files), + ]); + + $rahdariPoint->update([ + 'province_id' => $province->id, + 'province_name' => $province->name_fa, + 'city_id' => $city->id, + 'city_name' => $city->name_fa, + 'name' => $request->input('name'), + 'status' => $request->input('status'), + 'type' => $request->input('type',), + 'type_fa' => RoadMaintenanceStationTypes::name($request->type) ?? $rahdariPoint->type_fa, + 'team_num' => $request->input('team_num'), + 'staff_num' => $request->input('staff_num'), + 'phone' => $request->input('phone'), + 'responsible_name' => $request->input('responsible_name'), + 'responsible_mobile' => $request->input('responsible_mobile'), + 'successor_name' => $request->input('successor_name'), + 'successor_mobile' => $request->input('successor_mobile'), + 'machines_light' => $request->input('machines_light'), + 'machines_sheavy' => $request->input('machines_sheavy'), + 'machines_heavy' => $request->input('machines_heavy'), + 'lat' => $request->input('lat'), + 'lng' => $request->input('lng'), + 'lat_from' => $request->lat_from, + 'lng_from' => $request->lng_from, + 'geometry' => $request->geometry, + 'lat_to' => $request->lat_to, + 'lng_to' => $request->lng_to, + 'color' => $request->color, + 'updated_at_fa' => verta()->now()->format('Y/m/d H:i:s'), + ]); + + $uploadFields = [ + 'overview_files_1', + 'overview_files_2', + 'overview_files_3', + 'overview_files_4', + 'overview_files_5', + ]; + + foreach ($uploadFields as $index => $field) { + if ($request->hasFile($field)) { + $existingFile = $rahdariPoint->files->get($index); + $path = FileFacade::save($request->$field, "road_stations/{$rahdariPoint->id}"); + + if ($existingFile) { + FileFacade::delete($existingFile->path); + $existingFile->update(['path' => $path]); + } else { + $rahdariPoint->files()->create(['path' => $path]); + } + } + } + + return $this->successResponse(); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(RahdariPoint $rahdariPoint): JsonResponse + { + foreach ($rahdariPoint->files as $file) { + FileFacade::delete($file->path); + } + $rahdariPoint->rahdariPointHistories()->delete(); + $rahdariPoint->files()->delete(); + $rahdariPoint->delete(); + + return $this->successResponse(); + } + + public function images(RahdariPoint $rahdariPoint): JsonResponse + { + return $this->successResponse($rahdariPoint->files()->get(['path'])); + } + + public function map(Request $request): JsonResponse + { + auth()->user()->addActivityComplete(1023); + + return response()->json(DataTableFacade::run( + RahdariPoint::query(), + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + allowedSelects: ['id', 'lat', 'lng', 'status', 'type'], + )); + } +} diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacyController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacyController.php index 463a2900..5741f4ff 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacyController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacyController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\V3\Dashboard; use App\Enums\AxisTypes; use App\Exports\V3\SafetyAndPrivacy\CartableReport; +use App\Facades\DataTable\DataTableFacade; use App\Facades\File\FileFacade; use App\Http\Controllers\Controller; use App\Http\Requests\V3\SafetyAndPrivacy\FirstStepStoreRequest; @@ -141,6 +142,7 @@ class SafetyAndPrivacyController extends Controller 'step_fa' => 'گام سوم (برخورد)', 'action_picture' => FileFacade::save($request->action_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/action_picture"), 'action_picture_document_upload_date' => now(), + 'action_date' => $request->action_date, ]); $user->addActivityComplete(1136); @@ -201,4 +203,15 @@ class SafetyAndPrivacyController extends Controller ->select('id', 'item', 'item_str', 'sub_item_str as name', 'sub_item_unit as unit', 'needs_image', 'needs_end_point', 'sub_item') ->get()); } + + public function map(Request $request): JsonResponse + { + return response()->json(DataTableFacade::run( + SafetyAndPrivacy::query(), + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + allowedSelects: ['id', 'lat', 'lon', 'step'] + )); + } } diff --git a/app/Http/Controllers/V3/NotificationController.php b/app/Http/Controllers/V3/NotificationController.php index d322a95a..01d4ae63 100644 --- a/app/Http/Controllers/V3/NotificationController.php +++ b/app/Http/Controllers/V3/NotificationController.php @@ -122,8 +122,11 @@ class NotificationController extends Controller ->get(); } - $safety_and_privacy['step_one'] = isset($activity[0]) ? $activity[0]->cnt : 0; - $safety_and_privacy['step_two'] = isset($activity[1]) ? $activity[1]->cnt : 0; + $step_one = $activity->where('step', '=', 1)->first(); + $step_two = $activity->where('step', '=', 2)->first(); + + $safety_and_privacy['step_one'] = $step_one->cnt ?? 0; + $safety_and_privacy['step_two'] = $step_two->cnt ?? 0; return $safety_and_privacy; } diff --git a/app/Http/Requests/V3/RoadMaintenanceStation/StoreRequest.php b/app/Http/Requests/V3/RoadMaintenanceStation/StoreRequest.php new file mode 100644 index 00000000..e58698ea --- /dev/null +++ b/app/Http/Requests/V3/RoadMaintenanceStation/StoreRequest.php @@ -0,0 +1,57 @@ +user(); + + return $user->hasPermissionTo('add-tollhouse') || + ($user->hasPermissionTo('add-tollhouse-province') && $this->province_id == $user->province_id); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'province_id' => 'required|exists:provinces,id', + 'city_id' => 'required|exists:cities,id', + 'name' => 'required|string|max:255', + 'status' => 'required|in:0,1', + 'type' =>'required|in:1,2,3', + 'team_num' => 'numeric', + 'staff_num' => 'numeric', + 'phone' => 'string|max:50', + 'responsible_name' => 'string|max:255', + 'responsible_mobile' => 'string|max:50', + 'successor_name' => 'string|max:255', + 'successor_mobile' => 'string|max:50', + 'machines_light' => 'numeric', + 'machines_sheavy' => 'numeric', + 'machines_heavy' => 'numeric', + 'code' => 'string|max:50', + 'lat' => 'numeric', + 'lng' => 'numeric', + 'overview_files_1' => 'file|mimes:jpg,jpeg,png,pdf|max:51200', + 'overview_files_2' => 'file|mimes:jpg,jpeg,png,pdf|max:51200', + 'overview_files_3' => 'file|mimes:jpg,jpeg,png,pdf|max:51200', + 'overview_files_4' => 'file|mimes:jpg,jpeg,png,pdf|max:51200', + 'overview_files_5' => 'file|mimes:jpg,jpeg,png,pdf|max:51200', + ]; + } +} diff --git a/app/Http/Requests/V3/RoadMaintenanceStation/UpdateRequest.php b/app/Http/Requests/V3/RoadMaintenanceStation/UpdateRequest.php new file mode 100644 index 00000000..3443e3b1 --- /dev/null +++ b/app/Http/Requests/V3/RoadMaintenanceStation/UpdateRequest.php @@ -0,0 +1,55 @@ +|string> + */ + public function rules(): array + { + return [ + 'province_id' => 'required|exists:provinces,id', + 'city_id' => 'required|exists:cities,id', + 'name' => 'required|string|max:255', + 'status' => 'integer|in:0,1', + 'type' => 'integer|in:1,2,3', + 'team_num' => 'numeric', + 'staff_num' => 'numeric', + 'phone' => 'string|max:50', + 'responsible_name' => 'string|max:255', + 'responsible_mobile' => 'string|max:50', + 'successor_name' => 'string|max:255', + 'successor_mobile' => 'string|max:50', + 'machines_light' => 'numeric', + 'machines_sheavy' => 'numeric', + 'machines_heavy' => 'numeric', + 'lat' => 'numeric', + 'lng' => 'numeric', + 'lat_from' => 'numeric', + 'lng_from' => 'numeric', + 'lat_to' => 'numeric', + 'lng_to' => 'numeric', + 'color' => 'numeric', + 'geometry' => 'numeric', + 'overview_files_1' => 'file|mimes:jpg,jpeg,png,pdf|max:5120', + 'overview_files_2' => 'file|mimes:jpg,jpeg,png,pdf|max:5120', + 'overview_files_3' => 'file|mimes:jpg,jpeg,png,pdf|max:5120', + 'overview_files_4' => 'file|mimes:jpg,jpeg,png,pdf|max:5120', + 'overview_files_5' => 'file|mimes:jpg,jpeg,png,pdf|max:5120', + ]; + } +} diff --git a/app/Http/Requests/V3/SafetyAndPrivacy/ThirdStepStoreRequest.php b/app/Http/Requests/V3/SafetyAndPrivacy/ThirdStepStoreRequest.php index 652ea3a4..91879ed5 100644 --- a/app/Http/Requests/V3/SafetyAndPrivacy/ThirdStepStoreRequest.php +++ b/app/Http/Requests/V3/SafetyAndPrivacy/ThirdStepStoreRequest.php @@ -23,6 +23,7 @@ class ThirdStepStoreRequest extends FormRequest { return [ 'action_picture' => 'required|image', + 'action_date' => 'required|date', ]; } } diff --git a/app/Models/PointFile.php b/app/Models/PointFile.php index 4c59eb93..fc437a39 100644 --- a/app/Models/PointFile.php +++ b/app/Models/PointFile.php @@ -2,7 +2,10 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\MorphTo; +use Illuminate\Support\Facades\Storage; class PointFile extends Model { @@ -25,14 +28,23 @@ class PointFile extends Model * @var array */ protected $fillable = [ - 'path' + 'path', + 'point_fileable_id', + 'point_fileable_type', ]; /** * Get the owning point_fileable model. */ - public function point_fileable() + public function point_fileable(): MorphTo { return $this->morphTo(); } + + protected function path(): Attribute + { + return Attribute::make( + get: fn($value) => $value == null ? null : Storage::disk('public')->url($value) + ); + } } diff --git a/app/Models/RahdariPoint.php b/app/Models/RahdariPoint.php index 66f9fe02..3cbbc611 100644 --- a/app/Models/RahdariPoint.php +++ b/app/Models/RahdariPoint.php @@ -3,6 +3,8 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\HasMany; +use Illuminate\Database\Eloquent\Relations\MorphMany; class RahdariPoint extends Model { @@ -69,15 +71,12 @@ class RahdariPoint extends Model 'updated_at_fa', ]; - /** - * Get all of the point's files. - */ - public function files() + public function files(): MorphMany { return $this->morphMany('App\Models\PointFile', 'point_fileable'); } - public function rahdariPointHistories() + public function rahdariPointHistories(): HasMany { return $this->hasMany('App\Models\RahdariPointHistory', 'point_id'); } diff --git a/app/Models/SafetyAndPrivacy.php b/app/Models/SafetyAndPrivacy.php index 8cb61c14..ac347063 100644 --- a/app/Models/SafetyAndPrivacy.php +++ b/app/Models/SafetyAndPrivacy.php @@ -36,6 +36,7 @@ class SafetyAndPrivacy extends Model 'action_picture_document_upload_date', 'axis_type_id', 'axis_type_name', + 'action_date' ]; public $table = "safety_and_privacy"; diff --git a/app/Services/Cartables/SafetyAndPrivacyTableService.php b/app/Services/Cartables/SafetyAndPrivacyTableService.php index e7c9a85d..891999cc 100644 --- a/app/Services/Cartables/SafetyAndPrivacyTableService.php +++ b/app/Services/Cartables/SafetyAndPrivacyTableService.php @@ -20,7 +20,7 @@ class SafetyAndPrivacyTableService $fields = ['id','lat','lon','province_id','province_fa','city_id','city_fa','edare_shahri_id','edare_shahri_name', 'recognize_picture','action_picture','operator_id','operator_name','way_id','created_at','updated_at','step', 'info_id','info_fa','activity_date_time', 'action_picture_document_upload_date', 'judiciary_document_upload_date', - 'step_fa', 'axis_type_id', 'axis_type_name' + 'step_fa', 'axis_type_id', 'axis_type_name', 'action_date' ]; if ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable')) { diff --git a/database/migrations/2025_04_07_133638_add_column_to_safety_and_privacy_table.php b/database/migrations/2025_04_07_133638_add_column_to_safety_and_privacy_table.php new file mode 100644 index 00000000..b3934b8b --- /dev/null +++ b/database/migrations/2025_04_07_133638_add_column_to_safety_and_privacy_table.php @@ -0,0 +1,28 @@ +dateTime('action_date')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('safety_and_privacy', function (Blueprint $table) { + $table->dropColumn('action_date'); + }); + } +}; diff --git a/database/migrations/2025_04_14_150741_add_culums_to_rahdari_point_histories_table.php b/database/migrations/2025_04_14_150741_add_culums_to_rahdari_point_histories_table.php new file mode 100644 index 00000000..4743a7a3 --- /dev/null +++ b/database/migrations/2025_04_14_150741_add_culums_to_rahdari_point_histories_table.php @@ -0,0 +1,40 @@ +after('user_id', function (Blueprint $table) { + $table->unsignedSmallInteger('previous_province_id')->nullable(); + $table->string('previous_province_name')->nullable(); + $table->unsignedSmallInteger('previous_city_id')->nullable(); + $table->string('previous_city_name')->nullable(); + $table->string('previous_name')->nullable(); + }); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('rahdari_point_histories', function (Blueprint $table) { + $table->dropColumn([ + 'previous_province_id', + 'previous_province_name', + 'previous_city_id', + 'previous_city_name', + 'previous_name', + ]); + }); + } +}; diff --git a/resources/views/v3/Reports/SafetyAndPrivacy/CartableReport.blade.php b/resources/views/v3/Reports/SafetyAndPrivacy/CartableReport.blade.php index 48fb08bf..c1065678 100644 --- a/resources/views/v3/Reports/SafetyAndPrivacy/CartableReport.blade.php +++ b/resources/views/v3/Reports/SafetyAndPrivacy/CartableReport.blade.php @@ -21,18 +21,18 @@ - - - @@ -52,7 +52,15 @@ + + - @@ -84,6 +88,8 @@ + + - @endforeach diff --git a/routes/v3.php b/routes/v3.php index bef397bb..a71859a2 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -10,6 +10,7 @@ use App\Http\Controllers\V3\Dashboard\ItemsManagementController; use App\Http\Controllers\V3\Dashboard\ObservedItemController; use App\Http\Controllers\V3\Dashboard\AccidentReceiptController; use App\Http\Controllers\V3\Dashboard\OtpManagementController; +use App\Http\Controllers\V3\Dashboard\RoadMaintenanceStationController; use App\Http\Controllers\V3\Dashboard\Reports\AccidentReceiptReportController; use App\Http\Controllers\V3\Dashboard\Reports\RoadItemsReportController; use App\Http\Controllers\V3\Dashboard\Reports\RoadPatrolReportController; @@ -340,6 +341,7 @@ Route::prefix('safety_and_privacy') Route::get('/excel_report', 'excelReport')->name('excelReport')->middleware('permission:show-safety-and-privacy-operator-cartable|show-safety-and-privacy-operator-cartable-province|show-safety-and-privacy-operator-cartable-edarate-shahri'); Route::post('/first_step_store', 'firstStepStore')->name('firstStepStore')->middleware('permission:add-safety-and-privacy'); Route::get('/sub_items', 'subItems')->name('subItems'); + Route::get('/map', 'map')->name('map'); Route::post('/second_step_store/{safetyAndPrivacy}', 'secondStepStore')->name('secondStepStore')->middleware('permission:add-safety-and-privacy'); Route::post('/third_step_store/{safetyAndPrivacy}', 'thirdStepStore')->name('thirdStepStore')->middleware('permission:add-safety-and-privacy'); Route::post('/{safetyAndPrivacy}', 'update')->name('update')->middleware('permission:update-safety-and-privacy'); @@ -385,3 +387,16 @@ Route::prefix('permissions') }); Route::get('/notifications', NotificationController::class)->name('notifications'); + +Route::prefix('road_maintenance_station') + ->name('roadMaintenanceStation.') + ->controller( RoadMaintenanceStationController::class) + ->group(function () { + Route::get('/', 'index')->name('index')->middleware('permission:show-tollhouse|show-tollhouse-province'); + Route::post('/', 'store')->name('store'); + Route::get('/map', 'map')->name('map'); + Route::get('/images/{rahdariPoint}', 'images')->name('images'); + Route::get('/{rahdariPoint}', 'show')->name('show')->middleware('permission:show-tollhouse|show-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'); + });
تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
گزارش فعالیت های نگهداری حریم راه - مورد + مورد مشاهده شده + + نوع محور + + تاریخ ثبت @@ -60,7 +68,7 @@ - تاریخ ثبت مستندات قضایی + تاریخ بارگذاری مستندات قضایی @@ -70,10 +78,6 @@ style="text-align: center;border: 1px solid black;background-color: #EBF1DE;font-weight: bold;"> وضعیت - تاریخ ثبت -
{{ $item['province_fa'] ?? '-' }} {{ $item['edare_shahri_name'] ?? '-' }} {{ $item['info_fa'] ?? '-' }}{{ $item['axis_type_name'] ?? '-' }}{{ $item['created_at'] ? verta($item['created_at'])->format('Y/n/j H:i:s') : '-' }} {{ $item['activity_date_time'] ? verta($item['activity_date_time'])->format('Y/n/j H:i:s') : '-' }} @@ -91,11 +97,10 @@ - {{ $item['action_picture_document_upload_date'] ? verta($item['action_picture_document_upload_date'])->format('Y/n/j H:i:s') : '-' }} + {{ $item['action_picture_document_upload_date'] ? verta($item['action_date'])->format('Y/n/j H:i:s') : '-' }} {{ $item['step_fa'] ?? '-' }}{{ $item['created_at'] ? verta($item['created_at'])->format('Y/n/j H:i:s') : '-' }}