create api for register road observation

This commit is contained in:
2025-02-25 11:03:13 +03:30
parent e527cc5f43
commit 21c1e0c580
7 changed files with 192 additions and 6 deletions

View File

@@ -156,7 +156,7 @@ class AccidentReceiptController extends Controller
FileFacade::delete($accident->police_file, true);
}
if (!$request->report_base) {
if (!$request->report_base && $request->has('police_file')) {
FileFacade::delete($accident->police_file, true);
$accidentData['police_file'] = FileFacade::save($request->file('police_file'), "receipts_files/{$accident->id}/");
}

View File

@@ -3,14 +3,24 @@
namespace App\Http\Controllers\V3\Dashboard;
use App\Exports\V3\RoadObservation\OperatorCartableReport;
use App\Exports\V3\RoadObservation\SupervisorCartableReport;
use App\Facades\File\FileFacade;
use App\Facades\Sms\Sms;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\RoadObservation\ReferRequest;
use App\Http\Requests\V3\RoadObservation\VerifyBySupervisorRequest;
use App\Http\Traits\ApiResponse;
use App\Models\RoadObservationHistory;
use App\Models\RoadObserved;
use App\Services\NikarayanService;
use Carbon\Carbon;
use Hekmatinasser\Verta\Verta;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use App\Services\Cartables\RoadObservationTableservice;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
use Maatwebsite\Excel\Facades\Excel;
use SoapFault;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class RoadObservationController extends Controller
@@ -59,10 +69,94 @@ class RoadObservationController extends Controller
public function operatorCartableReport(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->operatorCartableIndex($request);
return Excel::download(new OperatorCartableReport($data['data']), $name);
}
public function complaintsIndex(Request $request, RoadObservationTableservice $roadObservationTableservice): JsonResponse
{
return response()->json($roadObservationTableservice->complaintsIndex($request));
}
public function register(Request $request, RoadObserved $roadObserved, NikarayanService $nikarayanService): JsonResponse
{
$roadObservedData = [
'status' => 0,
'status_fa' => 'در حال بررسی',
'rms_status' => $request->rms_status ?? $roadObserved->rms_status,
'rms_description' => $request->description?? $roadObserved->rms_description,
];
$roadObservedHistoryData = [
'user_id' => auth()->user()->id,
'previous_rms_status' => $roadObserved->rms_status,
'previous_rms_start_latlng' => $roadObserved->rms_start_latlng,
'previous_rms_end_latlng' => $roadObserved->rms_end_latlng,
'previous_rms_description' => $roadObserved->rms_description,
'new_files' => []
];
if ($request->rms_status == 1) {
$files_path = [];
$roadObserved->files()->where('path', 'like', '%_image_before%')->delete();
$roadObserved->files()->where('path', 'like', '%_image_after%')->delete();
$image_before = FileFacade::save($request->image_before, "road_observeds/{$roadObserved->id}/");
$image_after = FileFacade::save($request->image_after, "road_observeds/{$roadObserved->id}/");
$files_path[0]['path'] = $image_before;
$files_path[1]['path'] = $image_after;
$files = json_encode($files_path);
$now_date_time = Carbon::now();
$roadObservedData['image_before'] = $image_before;
$roadObservedData['image_after'] = $image_after;
$roadObservedData['rms_start_latlng'] = explode(',', $request->start_point);
$roadObservedData['updated_at_fa'] = Verta::instance($now_date_time);
$roadObservedData['rms_last_activity_fa'] = Verta::instance($now_date_time);
$roadObservedData['rms_last_activity'] = $now_date_time;
$roadObservedHistoryData['new_files'] = $files;
}
$roadObserved->problemHistories()->create($roadObservedHistoryData);
$roadObserved->update($roadObservedData);
auth()->user()->addActivityComplete(1142);
try {
$result = $nikarayanService->updateRoadObservedInfoByNikarayan($request, $roadObserved, json_encode($roadObservedHistoryData['new_files']));
}
catch (SoapFault $e) {
$msg = "error in send to nikarayan at" . date("Y-m-d H:i:s") . "\n";
$msg .= $e->getMessage();
Sms::sendSms(env('RMS_CTO_PHONE_NUMBER'), $msg);
}
return $this->successResponse();
}
public function refer(ReferRequest $request, RoadObserved $roadObserved): JsonResponse
{
$roadObserved->problemHistories()->create([
'user_id' => auth()->user()->id,
'action' => 'refer',
'description' => $request->refer_description,
'from_edareh' => $roadObserved->edarate_shahri_id,
'to_edareh' => $request->edarate_shahri_id
]);
$roadObserved->update([
'edarate_shahri_id' => $request->edarate_shahri_id,
]);
auth()->user()->addActivityComplete(1037);
return $this->successResponse();
}
}