add column to road observation histories

This commit is contained in:
2025-02-25 13:24:14 +03:30
parent 320efee4c7
commit 2adf091f7d
5 changed files with 132 additions and 14 deletions

View File

@@ -7,17 +7,21 @@ use App\Facades\File\FileFacade;
use App\Facades\Sms\Sms; use App\Facades\Sms\Sms;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\V3\RoadObservation\ReferRequest; use App\Http\Requests\V3\RoadObservation\ReferRequest;
use App\Http\Requests\V3\RoadObservation\RestoreRequest;
use App\Http\Requests\V3\RoadObservation\VerifyBySupervisorRequest; use App\Http\Requests\V3\RoadObservation\VerifyBySupervisorRequest;
use App\Http\Traits\ApiResponse; use App\Http\Traits\ApiResponse;
use App\Models\EdarateShahri;
use App\Models\RoadObservationHistory; use App\Models\RoadObservationHistory;
use App\Models\RoadObserved; use App\Models\RoadObserved;
use App\Models\User;
use App\Services\NikarayanService; use App\Services\NikarayanService;
use Carbon\Carbon; use Carbon\Carbon;
use Hekmatinasser\Verta\Verta; use Hekmatinasser\Verta\Verta;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Services\Cartables\RoadObservationTableservice; use App\Services\Cartables\RoadObservationTableService;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
use SoapFault; use SoapFault;
@@ -27,10 +31,9 @@ class RoadObservationController extends Controller
{ {
use ApiResponse; use ApiResponse;
public function supervisorIndex (Request $request,RoadObservationTableservice $roadObservationTableservice ): JsonResponse public function supervisorIndex (Request $request,RoadObservationTableService $roadObservationTableService ): JsonResponse
{ {
$data = $roadObservationTableservice->supervisorCartableIndex($request); return response()->json($roadObservationTableService->supervisorCartableIndex($request));
return response()->json($data);
} }
public function verifyBySupervisor (VerifyBySupervisorRequest $request, RoadObserved $roadObserved): JsonResponse public function verifyBySupervisor (VerifyBySupervisorRequest $request, RoadObserved $roadObserved): JsonResponse
@@ -49,11 +52,9 @@ class RoadObservationController extends Controller
auth()->user()->addActivityComplete(1138); auth()->user()->addActivityComplete(1138);
return $this->successResponse(); return $this->successResponse();
} }
public function supervisorCartableReport (Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse public function supervisorCartableReport (Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse
{ {
$name = 'گزارش از کارتابل ارزیابی واکنش سریع '. verta()->now()->format('Y-m-d H:i') . '.xlsx'; $name = 'گزارش از کارتابل ارزیابی واکنش سریع '. verta()->now()->format('Y-m-d H:i') . '.xlsx';
$data = $roadObservationTableService->supervisorCartableIndex($request, true); $data = $roadObservationTableService->supervisorCartableIndex($request, true);
@@ -63,8 +64,7 @@ class RoadObservationController extends Controller
public function operatorIndex(Request $request, RoadObservationTableService $roadObservationTableService): JsonResponse public function operatorIndex(Request $request, RoadObservationTableService $roadObservationTableService): JsonResponse
{ {
$data = $roadObservationTableService->operatorCartableIndex($request); return response()->json($roadObservationTableService->operatorCartableIndex($request));
return response()->json($data);
} }
public function operatorCartableReport(Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse public function operatorCartableReport(Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse
@@ -74,7 +74,7 @@ class RoadObservationController extends Controller
return Excel::download(new OperatorCartableReport($data['data']), $name); return Excel::download(new OperatorCartableReport($data['data']), $name);
} }
public function complaintsIndex(Request $request, RoadObservationTableservice $roadObservationTableservice): JsonResponse public function complaintsIndex(Request $request, RoadObservationTableService $roadObservationTableservice): JsonResponse
{ {
return response()->json($roadObservationTableservice->complaintsIndex($request)); return response()->json($roadObservationTableservice->complaintsIndex($request));
} }
@@ -128,7 +128,7 @@ class RoadObservationController extends Controller
auth()->user()->addActivityComplete(1142); auth()->user()->addActivityComplete(1142);
try { try {
$result = $nikarayanService->updateRoadObservedInfoByNikarayan($request, $roadObserved, json_encode($roadObservedHistoryData['new_files'])); $nikarayanService->updateRoadObservedInfoByNikarayan($request, $roadObserved, json_encode($roadObservedHistoryData['new_files']));
} }
catch (SoapFault $e) { catch (SoapFault $e) {
@@ -142,21 +142,73 @@ class RoadObservationController extends Controller
public function refer(ReferRequest $request, RoadObserved $roadObserved): JsonResponse public function refer(ReferRequest $request, RoadObserved $roadObserved): JsonResponse
{ {
$roadObserved->problemHistories()->create([ RoadObservationHistory::query()->create([
'id' => $roadObserved->id,
'user_id' => auth()->user()->id, 'user_id' => auth()->user()->id,
'action' => 'refer', 'action' => 'refer',
'description' => $request->refer_description, 'description' => $request->refer_description,
'from_edareh' => $roadObserved->edarate_shahri_id, 'from_edareh' => $roadObserved->edarate_shahri_id,
'to_edareh' => $request->edarate_shahri_id 'to_edareh' => $request->edarate_shahri_id,
'from_province' => $roadObserved->province_id,
'to_province' => $request->province_id
]); ]);
$roadObserved->update([ $roadObserved->update([
'edarate_shahri_id' => $request->edarate_shahri_id, 'edarate_shahri_id' => $request->edarate_shahri_id,
'province_id' => $request->province_id,
]); ]);
auth()->user()->addActivityComplete(1037); auth()->user()->addActivityComplete(1037);
return $this->successResponse(); return $this->successResponse();
} }
}
public function referList(Request $request, RoadObserved $roadObserved): JsonResponse
{
$data = RoadObservationHistory::query()
->where('id', '=', $roadObserved->id)
->where('action', '=', 'refer')
->get();
foreach ($data as $key => $value) {
$data[$key]->from_edareh = EdarateShahri::find($value->from_edareh)->name_fa;
$data[$key]->to_edareh = EdarateShahri::find($value->to_edareh)->name_fa;
$user = User::find($value->user_id);
$data[$key]->user = $user->first_name . ' ' . $user->last_name;
}
return $this->successResponse($data);
}
public function restore(RestoreRequest $request, RoadObserved $roadObserved): JsonResponse
{
if ($roadObserved->image_before) {
FileFacade::delete($roadObserved->image_before);
}
if ($roadObserved->image_after) {
FileFacade::delete($roadObserved->image_after);
}
$roadObserved->update([
'image_before' => null,
'image_after' => null,
'rms_last_activity' => null,
'rms_last_activity_fa' => null,
'updated_at_fa' => null,
'updated_at' => null,
'rms_status' => 0,
'status' => null,
'status_fa' => null,
]);
RoadObservationHistory::query()->create([
'id' => $roadObserved->id,
'user_id' => auth()->user()->id,
'action' => 'restore',
'description' => $request->restore_description,
]);
auth()->user()->addActivityComplete(1141);
return $this->successResponse();
}
}

View File

@@ -23,6 +23,7 @@ class ReferRequest extends FormRequest
{ {
return [ return [
'edarate_shahri_id' => 'required|exists:edarate_shahri,id', 'edarate_shahri_id' => 'required|exists:edarate_shahri,id',
'province_id' => 'required|exists:provinces,id',
'refer_description' => 'required|string', 'refer_description' => 'required|string',
]; ];
} }

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests\V3\RoadObservation;
use Illuminate\Foundation\Http\FormRequest;
class RestoreRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'restore_description' => 'required|string',
];
}
}

View File

@@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('road_observation_histories', function (Blueprint $table) {
$table->string('from_province')->nullable();
$table->string('to_province')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('road_observation_histories', function (Blueprint $table) {
$table->dropColumn('from_province');
$table->dropColumn('to_province');
});
}
};

View File

@@ -283,12 +283,19 @@ Route::prefix('road_observations')
->group(function () { ->group(function () {
Route::get('/supervisor_index', 'supervisorIndex')->name('supervisorIndex')->middleware('permission:supervise-fast-react-province|supervise-fast-react'); Route::get('/supervisor_index', 'supervisorIndex')->name('supervisorIndex')->middleware('permission:supervise-fast-react-province|supervise-fast-react');
Route::post('/verify/{road_observed}', 'verifyBySupervisor')->name('verifyBySupervisor'); Route::post('/verify/{road_observed}', 'verifyBySupervisor')->name('verifyBySupervisor');
Route::get('/supervisor_report', 'supervisorCartableReport')->name('report'); Route::get('/supervisor_report', 'supervisorCartableReport')->name('supervisorCartableReport');
Route::get('/operator_index','operatorIndex')->name('operatorIndex')->middleware('permission:show-fast-react|show-fast-react-province'); Route::get('/operator_index','operatorIndex')->name('operatorIndex')->middleware('permission:show-fast-react|show-fast-react-province');
Route::get('/operator_report','operatorCartableReport')->name('operatorCartableReport');
Route::get('/complaints_index', 'complaintsIndex') Route::get('/complaints_index', 'complaintsIndex')
->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react') ->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react')
->name('complaintsIndex'); ->name('complaintsIndex');
Route::post('/register/{roadObserved}', 'register') Route::post('/register/{roadObserved}', 'register')
->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react') ->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react')
->name('register'); ->name('register');
Route::post('/refer/{roadObserved}', 'refer')
->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react')
->name('refer');
Route::post('/restore/{roadObserved}', 'restore')
->middleware('permission:restore-fast-react')
->name('restore');
}); });