create api for register road observation
This commit is contained in:
@@ -156,7 +156,7 @@ class AccidentReceiptController extends Controller
|
|||||||
FileFacade::delete($accident->police_file, true);
|
FileFacade::delete($accident->police_file, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$request->report_base) {
|
if (!$request->report_base && $request->has('police_file')) {
|
||||||
FileFacade::delete($accident->police_file, true);
|
FileFacade::delete($accident->police_file, true);
|
||||||
$accidentData['police_file'] = FileFacade::save($request->file('police_file'), "receipts_files/{$accident->id}/");
|
$accidentData['police_file'] = FileFacade::save($request->file('police_file'), "receipts_files/{$accident->id}/");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,14 +3,24 @@
|
|||||||
namespace App\Http\Controllers\V3\Dashboard;
|
namespace App\Http\Controllers\V3\Dashboard;
|
||||||
use App\Exports\V3\RoadObservation\OperatorCartableReport;
|
use App\Exports\V3\RoadObservation\OperatorCartableReport;
|
||||||
use App\Exports\V3\RoadObservation\SupervisorCartableReport;
|
use App\Exports\V3\RoadObservation\SupervisorCartableReport;
|
||||||
|
use App\Facades\File\FileFacade;
|
||||||
|
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\VerifyBySupervisorRequest;
|
use App\Http\Requests\V3\RoadObservation\VerifyBySupervisorRequest;
|
||||||
use App\Http\Traits\ApiResponse;
|
use App\Http\Traits\ApiResponse;
|
||||||
|
use App\Models\RoadObservationHistory;
|
||||||
use App\Models\RoadObserved;
|
use App\Models\RoadObserved;
|
||||||
|
use App\Services\NikarayanService;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
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\Str;
|
||||||
use Maatwebsite\Excel\Facades\Excel;
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
use SoapFault;
|
||||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||||
|
|
||||||
class RoadObservationController extends Controller
|
class RoadObservationController extends Controller
|
||||||
@@ -59,10 +69,94 @@ class RoadObservationController extends Controller
|
|||||||
|
|
||||||
public function operatorCartableReport(Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse
|
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);
|
$data = $roadObservationTableService->operatorCartableIndex($request);
|
||||||
return Excel::download(new OperatorCartableReport($data['data']), $name);
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,11 +35,11 @@ class UpdateRequest extends FormRequest
|
|||||||
'accident_date' => 'required|date',
|
'accident_date' => 'required|date',
|
||||||
'accident_time' => 'required|string',
|
'accident_time' => 'required|string',
|
||||||
'report_base' => 'required|in:0,1',
|
'report_base' => 'required|in:0,1',
|
||||||
'police_file' => 'required_if:report_base,0|file|mimes:pdf,jpg,jpeg,png',
|
'police_file' => 'file|mimes:pdf,jpg,jpeg,png',
|
||||||
'police_serial' => 'required_if:report_base,0|string',
|
'police_serial' => 'required_if:report_base,0|string',
|
||||||
'police_file_date' => 'required_if:report_base,0|date',
|
'police_file_date' => 'required_if:report_base,0|date',
|
||||||
'damage_picture1' => 'required|file|mimes:pdf,jpg,jpeg,png',
|
'damage_picture1' => 'file|mimes:pdf,jpg,jpeg,png',
|
||||||
'damage_picture2' => 'required|file|mimes:pdf,jpg,jpeg,png',
|
'damage_picture2' => 'file|mimes:pdf,jpg,jpeg,png',
|
||||||
'damage_items' => 'required|array',
|
'damage_items' => 'required|array',
|
||||||
'damage_items.*.value' => 'required',
|
'damage_items.*.value' => 'required',
|
||||||
'damage_items.*.amount' => 'required',
|
'damage_items.*.amount' => 'required',
|
||||||
|
|||||||
29
app/Http/Requests/V3/RoadObservation/ReferRequest.php
Normal file
29
app/Http/Requests/V3/RoadObservation/ReferRequest.php
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests\V3\RoadObservation;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class ReferRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return $this->roadObserved->rms_status == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'edarate_shahri_id' => 'required|exists:edarate_shahri,id',
|
||||||
|
'refer_description' => 'required|string',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,8 +2,10 @@
|
|||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
|
||||||
class RoadObserved extends Model
|
class RoadObserved extends Model
|
||||||
{
|
{
|
||||||
@@ -99,4 +101,18 @@ class RoadObserved extends Model
|
|||||||
{
|
{
|
||||||
return $this->belongsTo('App\Models\EdarateShahri', 'edarate_shahri_id');
|
return $this->belongsTo('App\Models\EdarateShahri', 'edarate_shahri_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function imageAfter(): Attribute
|
||||||
|
{
|
||||||
|
return Attribute::make(
|
||||||
|
get: fn($value) => $value == null ? null : Storage::disk('public')->url($value)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function imageBefore(): Attribute
|
||||||
|
{
|
||||||
|
return Attribute::make(
|
||||||
|
get: fn($value) => $value == null ? null : Storage::disk('public')->url($value)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,4 +88,46 @@ class RoadObservationTableService
|
|||||||
allowedFilters: ['*'],
|
allowedFilters: ['*'],
|
||||||
allowedSortings: ['*']);
|
allowedSortings: ['*']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function complaintsIndex(Request $request)
|
||||||
|
{
|
||||||
|
$user = auth()->user();
|
||||||
|
|
||||||
|
if ($user->hasPermissionTo('show-fast-react')) {
|
||||||
|
$query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id')
|
||||||
|
->where('rms_status', '=', 0)
|
||||||
|
->whereNotNull('edarate_shahri_id');
|
||||||
|
}
|
||||||
|
elseif ($user->hasPermissionTo('show-fast-react-province')) {
|
||||||
|
|
||||||
|
if (is_null($user->province_id)) {
|
||||||
|
return $this->errorResponse('استانی برای شما در سامانه ثبت نشده است!');
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id')
|
||||||
|
->where('rms_status', '=', 0)
|
||||||
|
->whereNotNull('edarate_shahri_id')
|
||||||
|
->where('road_observeds.province_id', '=', $user->province_id);
|
||||||
|
|
||||||
|
}
|
||||||
|
elseif ($user->hasPermissionTo('show-fast-react-edarate-shahri')) {
|
||||||
|
|
||||||
|
if (is_null($user->edarate_shahri_id)) {
|
||||||
|
return $this->errorResponse('اداره ای برای شما در سامانه ثبت نشده است!');
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id')
|
||||||
|
->where('rms_status', '=', 0)
|
||||||
|
->whereNotNull('edarate_shahri_id')
|
||||||
|
->where('edarate_shahri_id', '=', $user->edarate_shahri_id);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return DataTableFacade::run(
|
||||||
|
$query,
|
||||||
|
$request,
|
||||||
|
allowedFilters: ['*'],
|
||||||
|
allowedSortings: ['*']
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -285,5 +285,10 @@ Route::prefix('road_observations')
|
|||||||
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('report');
|
||||||
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('operatorExcelReport');
|
Route::get('/complaints_index', 'complaintsIndex')
|
||||||
|
->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react')
|
||||||
|
->name('complaintsIndex');
|
||||||
|
Route::post('/register/{roadObserved}', 'register')
|
||||||
|
->middleware('permission:show-fast-react-edarate-shahri|show-fast-react-province|show-fast-react')
|
||||||
|
->name('register');
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user