1568 lines
72 KiB
PHP
1568 lines
72 KiB
PHP
<?php
|
||
|
||
namespace App\Http\Controllers;
|
||
|
||
use App\Models\DangerPoint;
|
||
|
||
use Carbon\Carbon;
|
||
use Illuminate\Http\Request;
|
||
use Hekmatinasser\Verta\Verta;
|
||
use Illuminate\Support\Facades\DB;
|
||
use App\Models\DangerPointAccident;
|
||
use Illuminate\Support\Facades\Hash;
|
||
use Illuminate\Support\Facades\Auth;
|
||
use Barryvdh\Snappy\Facades\SnappyPdf;
|
||
|
||
class DangerPointController extends Controller
|
||
{
|
||
public function getUserProvince(Request $request)
|
||
{
|
||
if ($request->user()->province_id != null
|
||
&& ($request->user()->username == 'witeL' || $request->user()->username == 'drdanesh')) {
|
||
$provinces = \App\Models\Province::all();
|
||
} else {
|
||
$provinces = \App\Models\Province::find($request->user()->province_id);
|
||
}
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $provinces
|
||
], 200);
|
||
}
|
||
|
||
public function getDangerPoint()
|
||
{
|
||
if (Auth::user()->province_id != null
|
||
&& (Auth::user()->username == 'witel' || Auth::user()->username == 'drdanesh')) {
|
||
$dangerPoints = DangerPoint::all();
|
||
// $dangerPoints = DangerPoint::limit(10)->get();
|
||
} else {
|
||
$dangerPoints = DangerPoint::where('province_id', Auth::user()->province_id)
|
||
->get();
|
||
}
|
||
|
||
$dangerPointsArray = [];
|
||
|
||
foreach ($dangerPoints as $key => $dangerPoint) {
|
||
$dangerPointsArray[$key] = [
|
||
'id' => $dangerPoint->id,
|
||
'province' => [
|
||
'id' => $dangerPoint->province->id,
|
||
'name' => $dangerPoint->province->name_fa
|
||
],
|
||
'axis_name' => $dangerPoint->axis_name,
|
||
'axis_type' => $dangerPoint->axis_type,
|
||
'axis_start' => $dangerPoint->axis_start,
|
||
'axis_end' => $dangerPoint->axis_end,
|
||
'distance_axis_start' => $dangerPoint->distance_axis_start,
|
||
'local_name' => $dangerPoint->local_name,
|
||
'lat_lng' => [
|
||
$dangerPoint->lat,
|
||
$dangerPoint->lng
|
||
],
|
||
'accident_251' => $dangerPoint->accident_251,
|
||
'accident_251_code' => $dangerPoint->accident_251_code,
|
||
'speed_limit' => $dangerPoint->speed_limit,
|
||
'speed_average' => $dangerPoint->speed_average,
|
||
'accident_possibility' => $dangerPoint->accident_possibility,
|
||
'road_guard' => $dangerPoint->road_guard,
|
||
'geometric_desc' => $dangerPoint->geometric_desc,
|
||
'accident_cause' => $dangerPoint->accident_cause,
|
||
'accident_cause_suggest' => $dangerPoint->accident_cause_suggest,
|
||
'accident_severity' => $dangerPoint->accident_severity,
|
||
'accident_severity_suggest' => $dangerPoint->accident_severity_suggest,
|
||
'correction_plan_done' => $dangerPoint->correction_plan_done,
|
||
'correction_plan_doing' => $dangerPoint->correction_plan_doing,
|
||
'correction_plan_doing_desc' => $dangerPoint->correction_plan_doing_desc,
|
||
'correction_plan_doing_suggest' => $dangerPoint->correction_plan_doing_suggest,
|
||
'point_images' => $dangerPoint->files,
|
||
'btn_deactive' => [
|
||
(($dangerPoint->dangerPointAccidents()->count() > 0) ? 0 : 1),
|
||
(($dangerPoint->speed_limit != null) ? 0 : 1),
|
||
1,
|
||
(($dangerPoint->files()->count() == 9) ? 0 : 1),
|
||
(($dangerPoint->signature_file != null && $dangerPoint->police_file != null) ? 0 : 1),
|
||
1
|
||
],
|
||
'uploaded_files' => [
|
||
['signature_file' => ($dangerPoint->signature_file) ? asset('storage' . substr($dangerPoint->signature_file, 6)) : null],
|
||
['police_file' => ($dangerPoint->police_file) ? asset('storage' . substr($dangerPoint->police_file, 6)) : null]
|
||
],
|
||
'status' => $dangerPoint->status,
|
||
'status_desc' => $dangerPoint->status_desc,
|
||
'submited_at' => verta($dangerPoint->created_at)->format('Y/m/d'),
|
||
'code' => $dangerPoint->code
|
||
];
|
||
|
||
if ($dangerPointsArray[$key]['btn_deactive'][0] == 0 && $dangerPointsArray[$key]['btn_deactive'][1] == 0) {
|
||
$dangerPointsArray[$key]['btn_deactive'][2] = 0;
|
||
}
|
||
|
||
if ($dangerPointsArray[$key]['btn_deactive'][0] == 0
|
||
&& $dangerPointsArray[$key]['btn_deactive'][1] == 0
|
||
&& $dangerPointsArray[$key]['btn_deactive'][2] == 0
|
||
&& $dangerPointsArray[$key]['btn_deactive'][3] == 0
|
||
&& $dangerPointsArray[$key]['btn_deactive'][4] == 0) {
|
||
$dangerPointsArray[$key]['btn_deactive'][5] = 0;
|
||
}
|
||
}
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $dangerPointsArray,
|
||
// 'can_submit' => (((Auth::user()->hasRole('imenivaharim')) || Auth::user()->hasRole('witel') || Auth::user()->hasRole('admin')) ? 1 : 0)
|
||
'can_submit' => 1
|
||
], 200);
|
||
}
|
||
|
||
public function getDangerPointAdmin()
|
||
{
|
||
$dangerPoints = DangerPoint::whereIn('status', [1, 2, 3])->get();
|
||
|
||
$dangerPointsArray = [];
|
||
|
||
foreach ($dangerPoints as $key => $dangerPoint) {
|
||
$dangerPointsArray[$key] = [
|
||
'id' => $dangerPoint->id,
|
||
'province' => [
|
||
'id' => $dangerPoint->province->id,
|
||
'name' => $dangerPoint->province->name_fa
|
||
],
|
||
'axis_name' => $dangerPoint->axis_name,
|
||
'axis_type' => $dangerPoint->axis_type,
|
||
'axis_start' => $dangerPoint->axis_start,
|
||
'axis_end' => $dangerPoint->axis_end,
|
||
'distance_axis_start' => $dangerPoint->distance_axis_start,
|
||
'local_name' => $dangerPoint->local_name,
|
||
'lat_lng' => [
|
||
$dangerPoint->lat,
|
||
$dangerPoint->lng
|
||
],
|
||
'accident_251' => $dangerPoint->accident_251,
|
||
'accident_251_code' => $dangerPoint->accident_251_code,
|
||
'speed_limit' => $dangerPoint->speed_limit,
|
||
'speed_average' => $dangerPoint->speed_average,
|
||
'accident_possibility' => $dangerPoint->accident_possibility,
|
||
'road_guard' => $dangerPoint->road_guard,
|
||
'geometric_desc' => $dangerPoint->geometric_desc,
|
||
'accident_cause' => $dangerPoint->accident_cause,
|
||
'accident_cause_suggest' => $dangerPoint->accident_cause_suggest,
|
||
'accident_severity' => $dangerPoint->accident_severity,
|
||
'accident_severity_suggest' => $dangerPoint->accident_severity_suggest,
|
||
'correction_plan_done' => $dangerPoint->correction_plan_done,
|
||
'correction_plan_doing' => $dangerPoint->correction_plan_doing,
|
||
'correction_plan_doing_desc' => $dangerPoint->correction_plan_doing_desc,
|
||
'correction_plan_doing_suggest' => $dangerPoint->correction_plan_doing_suggest,
|
||
'point_images' => $dangerPoint->files,
|
||
'btn_deactive' => [
|
||
0,
|
||
0,
|
||
0,
|
||
0
|
||
],
|
||
'uploaded_files' => [
|
||
['signature_file' => ($dangerPoint->signature_file) ? asset('storage' . substr($dangerPoint->signature_file, 6)) : null],
|
||
['police_file' => ($dangerPoint->police_file) ? asset('storage' . substr($dangerPoint->police_file, 6)) : null]
|
||
],
|
||
'status' => $dangerPoint->status,
|
||
'status_desc' => $dangerPoint->status_desc,
|
||
'submited_at' => verta($dangerPoint->created_at)->format('Y/m/d'),
|
||
'code' => $dangerPoint->code
|
||
];
|
||
}
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $dangerPointsArray
|
||
], 200);
|
||
}
|
||
|
||
public function getDangerAccidents($id)
|
||
{
|
||
$dangerAccidents = DangerPoint::find($id)->dangerPointAccidents;
|
||
|
||
$dangerAccidentsArray = [];
|
||
|
||
foreach ($dangerAccidents as $key => $dangerAccident) {
|
||
$dangerAccidentsArray[$key] = [
|
||
'id' => $dangerAccident->id,
|
||
'serial_number' => $dangerAccident->serial_number,
|
||
'accident_date' => (($dangerAccident->accident_date) ? verta($dangerAccident->accident_date)->format('Y/m/d') : $dangerAccident->accident_date),
|
||
'day' => $dangerAccident->day,
|
||
'time' => $dangerAccident->time,
|
||
'accident_direction' => $dangerAccident->accident_direction,
|
||
'collision_type' => $dangerAccident->collision_type,
|
||
'accident_factors' => $dangerAccident->accident_factors,
|
||
'accident_type' => $dangerAccident->accident_type ?? [],
|
||
'accident_result' => $dangerAccident->accident_result
|
||
];
|
||
}
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $dangerAccidentsArray
|
||
], 200);
|
||
}
|
||
|
||
public function storeDanger(Request $request)
|
||
{
|
||
$request->validate([
|
||
'province-id' => 'required|integer|exists:provinces,id',
|
||
'axis-name' => 'required|string',
|
||
'axis-type' => 'required|integer|between:1,6',
|
||
'axis-start' => 'required|string',
|
||
'axis-end' => 'required|string',
|
||
'distance-axis-start' => 'required|numeric',
|
||
'local-name' => 'required|string',
|
||
'lat' => 'required|string|regex:/^[1-9][0-9]\.[0-9]{1,}$/i',
|
||
'lng' => 'required|string|regex:/^[1-9][0-9]\.[0-9]{1,}$/i'
|
||
]);
|
||
|
||
$dangerPoint = new DangerPoint;
|
||
|
||
// PUBLIC URL
|
||
//$dangerPoint->user_id = 470;
|
||
$dangerPoint->user_id = $request->user()->id;
|
||
$dangerPoint->province_id = $request->input('province-id') ?? null;
|
||
$dangerPoint->axis_name = $request->input('axis-name') ?? null;
|
||
$dangerPoint->axis_type = $request->input('axis-type') ?? null;
|
||
$dangerPoint->axis_start = $request->input('axis-start') ?? null;
|
||
$dangerPoint->axis_end = $request->input('axis-end') ?? null;
|
||
$dangerPoint->distance_axis_start = $request->input('distance-axis-start') ?? null;
|
||
$dangerPoint->local_name = $request->input('local-name') ?? null;
|
||
$dangerPoint->lat = $request->input('lat') ?? null;
|
||
$dangerPoint->lng = $request->input('lng') ?? null;
|
||
|
||
$dangerPoint->save();
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $dangerPoint
|
||
], 201);
|
||
}
|
||
|
||
public function storeDangerDetails(Request $request)
|
||
{
|
||
$request->validate([
|
||
'danger-id' => 'required|integer|exists:danger_points,id',
|
||
'accident-251' => 'required|boolean',
|
||
'accident-251-code' => 'required_if:accident-251,1|string',
|
||
'speed-limit' => 'required|integer',
|
||
'speed-average' => 'required|integer',
|
||
'accident-possibility' => 'required|boolean',
|
||
'road-guard' => 'required|boolean',
|
||
'geometric-desc' => 'required|integer|between:1,16',
|
||
'accident-cause' => 'string',
|
||
'accident-cause-suggest' => 'string',
|
||
// 'accident-severity' => 'string',
|
||
// 'accident-severity-suggest' => 'string',
|
||
'correction-plan-done' => 'string',
|
||
'correction-plan-doing' => 'string',
|
||
'correction-plan-doing-desc' => 'string',
|
||
'correction-plan-doing-suggest' => 'string',
|
||
//'signature-file' => 'required|file'
|
||
]);
|
||
|
||
$dangerPoint = DangerPoint::find($request->input('danger-id'));
|
||
|
||
$dangerPoint->accident_251 = $request->input('accident-251') ?? null;
|
||
$dangerPoint->accident_251_code = $request->input('accident-251-code') ?? null;
|
||
$dangerPoint->speed_limit = $request->input('speed-limit') ?? null;
|
||
$dangerPoint->speed_average = $request->input('speed-average') ?? null;
|
||
$dangerPoint->accident_possibility = $request->input('accident-possibility') ?? null;
|
||
$dangerPoint->road_guard = $request->input('road-guard') ?? null;
|
||
$dangerPoint->geometric_desc = $request->input('geometric-desc') ?? null;
|
||
if ($request->input('accident-cause')) {
|
||
$dangerPoint->accident_cause = explode(',', $request->input('accident-cause')) ?? null;
|
||
} else {
|
||
$dangerPoint->accident_cause = null;
|
||
}
|
||
$dangerPoint->accident_cause_suggest = $request->input('accident-cause-suggest') ?? null;
|
||
if ($request->input('accident-severity')) {
|
||
$dangerPoint->accident_severity = explode(',', $request->input('accident-severity')) ?? null;
|
||
} else {
|
||
$dangerPoint->accident_severity = null;
|
||
}
|
||
$dangerPoint->accident_severity_suggest = $request->input('accident-severity-suggest') ?? null;
|
||
$dangerPoint->correction_plan_done = $request->input('correction-plan-done') ?? null;
|
||
$dangerPoint->correction_plan_doing = $request->input('correction-plan-doing') ?? null;
|
||
$dangerPoint->correction_plan_doing_desc = $request->input('correction-plan-doing-desc') ?? null;
|
||
$dangerPoint->correction_plan_doing_suggest = $request->input('correction-plan-doing-suggest') ?? null;
|
||
|
||
// $files_path = null;
|
||
|
||
// if ($request->file('signature-file')) {
|
||
// $files_path = $request->file('signature-file')->storeAs(
|
||
// 'public/danger-points/signature',
|
||
// 'sign_' . time() . '_signature_file_' . $dangerPoint->id . '_' . $request->file('signature-file')->getClientOriginalName()
|
||
// );
|
||
// }
|
||
|
||
// $dangerPoint->signature_file = $files_path;
|
||
|
||
$dangerPoint->save();
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $dangerPoint
|
||
], 201);
|
||
}
|
||
|
||
public function storeDangerAccident(Request $request)
|
||
{
|
||
$request->validate([
|
||
'danger-id' => 'required|integer|exists:danger_points,id',
|
||
'serial-number' => 'required|string',
|
||
'accident-date' => 'required|string',
|
||
'day' => 'required|integer|between:1,7',
|
||
'time' => 'required|string',
|
||
'accident-direction' => 'required|integer|between:1,2',
|
||
'collision-type' => 'required|integer|between:1,6',
|
||
'accident-factors' => 'required|json',
|
||
'accident-type' => 'required|integer|between:1,3',
|
||
'accident-result' => 'required|json'
|
||
]);
|
||
|
||
$dangerPoint = DangerPoint::find($request->input('danger-id'));
|
||
|
||
$accDate = explode('-', $request->input('accident-date'));
|
||
$accDateGregorian = Verta::getGregorian($accDate[0], $accDate[1], $accDate[2]);
|
||
if (count($accDateGregorian) == 3) {
|
||
$accDateGregorianSt = $accDateGregorian[0] . '-' . $accDateGregorian[1] . '-' .$accDateGregorian[2];
|
||
} else {
|
||
$accDateGregorianSt = null;
|
||
}
|
||
|
||
$dangerPointAccident = $dangerPoint->dangerPointAccidents()->create([
|
||
// PUBLIC URL
|
||
'user_id' => $request->user()->id,
|
||
'serial_number' => $request->input('serial-number') ?? null,
|
||
'accident_date' => $accDateGregorianSt,
|
||
'day' => $request->input('day') ?? null,
|
||
'time' => $request->input('time') ?? null,
|
||
'accident_direction' => $request->input('accident-direction') ?? null,
|
||
'collision_type' => $request->input('collision-type') ?? null,
|
||
'accident_factors' => (($request->input('accident-factors')) ? json_decode($request->input('accident-factors')) : null),
|
||
'accident_type' => $request->input('accident-type') ?? null,
|
||
'accident_result' => (($request->input('accident-result')) ? json_decode($request->input('accident-result')) : null)
|
||
]);
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $dangerPointAccident
|
||
], 201);
|
||
}
|
||
|
||
public function storeDangerImages(Request $request)
|
||
{
|
||
$request->validate([
|
||
'danger-id' => 'required|integer|exists:danger_points,id',
|
||
'image-right-100-1' => 'image',
|
||
'image-right-100-2' => 'image',
|
||
'image-right-50-1' => 'image',
|
||
'image-right-50-2' => 'image',
|
||
'image-left-100-1' => 'image',
|
||
'image-left-100-2' => 'image',
|
||
'image-left-50-1' => 'image',
|
||
'image-left-50-2' => 'image',
|
||
'image-satellite' => 'image'
|
||
]);
|
||
|
||
$dangerPoint = DangerPoint::find($request->input('danger-id'));
|
||
|
||
$files_path = [];
|
||
$file_index = 0;
|
||
$file_time = time();
|
||
|
||
if ($request->file('image-right-100-1')) {
|
||
$dangerPoint->files()->where('path', 'like', '%_image-right-100-1_0_%')->delete();
|
||
|
||
$files_path[$file_index]['path'] = $request->file('image-right-100-1')->storeAs(
|
||
'public/danger_points',
|
||
'img9_' . $file_time . '_image-right-100-1_0_' . $dangerPoint->id . '_' . $request->file('image-right-100-1')->getClientOriginalName()
|
||
);
|
||
$file_index++;
|
||
}
|
||
if ($request->file('image-right-100-2')) {
|
||
$dangerPoint->files()->where('path', 'like', '%_image-right-100-2_1_%')->delete();
|
||
|
||
$files_path[$file_index]['path'] = $request->file('image-right-100-2')->storeAs(
|
||
'public/danger_points',
|
||
'img9_' . $file_time . '_image-right-100-2_1_' . $dangerPoint->id . '_' . $request->file('image-right-100-2')->getClientOriginalName()
|
||
);
|
||
$file_index++;
|
||
}
|
||
if ($request->file('image-right-50-1')) {
|
||
$dangerPoint->files()->where('path', 'like', '%_image-right-50-1_2_%')->delete();
|
||
|
||
$files_path[$file_index]['path'] = $request->file('image-right-50-1')->storeAs(
|
||
'public/danger_points',
|
||
'img9_' . $file_time . '_image-right-50-1_2_' . $dangerPoint->id . '_' . $request->file('image-right-50-1')->getClientOriginalName()
|
||
);
|
||
$file_index++;
|
||
}
|
||
if ($request->file('image-right-50-2')) {
|
||
$dangerPoint->files()->where('path', 'like', '%_image-right-50-2_3_%')->delete();
|
||
|
||
$files_path[$file_index]['path'] = $request->file('image-right-50-2')->storeAs(
|
||
'public/danger_points',
|
||
'img9_' . $file_time . '_image-right-50-2_3_' . $dangerPoint->id . '_' . $request->file('image-right-50-2')->getClientOriginalName()
|
||
);
|
||
$file_index++;
|
||
}
|
||
if ($request->file('image-left-100-1')) {
|
||
$dangerPoint->files()->where('path', 'like', '%_image-left-100-1_4_%')->delete();
|
||
|
||
$files_path[$file_index]['path'] = $request->file('image-left-100-1')->storeAs(
|
||
'public/danger_points',
|
||
'img9_' . $file_time . '_image-left-100-1_4_' . $dangerPoint->id . '_' . $request->file('image-left-100-1')->getClientOriginalName()
|
||
);
|
||
$file_index++;
|
||
}
|
||
if ($request->file('image-left-100-2')) {
|
||
$dangerPoint->files()->where('path', 'like', '%_image-left-100-2_5_%')->delete();
|
||
|
||
$files_path[$file_index]['path'] = $request->file('image-left-100-2')->storeAs(
|
||
'public/danger_points',
|
||
'img9_' . $file_time . '_image-left-100-2_5_' . $dangerPoint->id . '_' . $request->file('image-left-100-2')->getClientOriginalName()
|
||
);
|
||
$file_index++;
|
||
}
|
||
if ($request->file('image-left-50-1')) {
|
||
$dangerPoint->files()->where('path', 'like', '%_image-left-50-1_6_%')->delete();
|
||
|
||
$files_path[$file_index]['path'] = $request->file('image-left-50-1')->storeAs(
|
||
'public/danger_points',
|
||
'img9_' . $file_time . '_image-left-50-1_6_' . $dangerPoint->id . '_' . $request->file('image-left-50-1')->getClientOriginalName()
|
||
);
|
||
$file_index++;
|
||
}
|
||
if ($request->file('image-left-50-2')) {
|
||
$dangerPoint->files()->where('path', 'like', '%_image-left-50-2_7_%')->delete();
|
||
|
||
$files_path[$file_index]['path'] = $request->file('image-left-50-2')->storeAs(
|
||
'public/danger_points',
|
||
'img9_' . $file_time . '_image-left-50-2_7_' . $dangerPoint->id . '_' . $request->file('image-left-50-2')->getClientOriginalName()
|
||
);
|
||
$file_index++;
|
||
}
|
||
if ($request->file('image-satellite')) {
|
||
$dangerPoint->files()->where('path', 'like', '%_image-satellite_8_%')->delete();
|
||
|
||
$files_path[$file_index]['path'] = $request->file('image-satellite')->storeAs(
|
||
'public/danger_points',
|
||
'img9_' . $file_time . '_image-satellite_8_' . $dangerPoint->id . '_' . $request->file('image-satellite')->getClientOriginalName()
|
||
);
|
||
$file_index++;
|
||
}
|
||
|
||
$dangerPoint->files()->createMany($files_path);
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $dangerPoint->files
|
||
], 201);
|
||
}
|
||
|
||
public function storeDangerPreviewImage(Request $request)
|
||
{
|
||
$request->validate([
|
||
'danger-id' => 'required|integer|exists:danger_points,id',
|
||
'image' => 'required|image',
|
||
'name' => 'required|string'
|
||
]);
|
||
|
||
$dangerPoint = DangerPoint::find($request->input('danger-id'));
|
||
|
||
$dangerPoint->files()->where('path', 'like', '%img9_' . $request->input('name') . '_%')->delete();
|
||
|
||
$files_path = $request->file('image')->storeAs(
|
||
'public/danger_points',
|
||
'img9_' . $request->input('name') . '_' . $dangerPoint->id . '_' . time() . '_' . $request->file('image')->getClientOriginalName()
|
||
);
|
||
|
||
$dangerPoint->files()->create([
|
||
'path' => $files_path
|
||
]);
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $files_path
|
||
], 201);
|
||
}
|
||
|
||
public function destroyDangerPreviewImage(Request $request)
|
||
{
|
||
$request->validate([
|
||
'danger-id' => 'required|integer|exists:danger_points,id',
|
||
'name' => 'required|string'
|
||
]);
|
||
|
||
$dangerPoint = DangerPoint::find($request->input('danger-id'));
|
||
|
||
$dangerPoint->files()->where('path', 'like', '%_' . $request->input('name') . '_%')->delete();
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => 1
|
||
], 200);
|
||
}
|
||
|
||
public function showDangerPointPage()
|
||
{
|
||
return view('rmto-preview.pages.danger-point');
|
||
}
|
||
|
||
public function showDangerPointAdminPage()
|
||
{
|
||
return view('rmto-preview.pages.danger-point-admin');
|
||
// if (Auth::user()->username == 'witeL' || Auth::user()->username == 'drdanesh') {
|
||
// } else {
|
||
// return redirect('/danger-point');
|
||
// }
|
||
}
|
||
|
||
public function updateDanger(Request $request, $id)
|
||
{
|
||
$request->validate([
|
||
'province-id' => 'required|integer|exists:provinces,id',
|
||
'axis-name' => 'required|string',
|
||
'axis-type' => 'required|integer|between:1,6',
|
||
'axis-start' => 'required|string',
|
||
'axis-end' => 'required|string',
|
||
'distance-axis-start' => 'required|numeric',
|
||
'local-name' => 'required|string',
|
||
'lat' => 'required|string|regex:/^[1-9][0-9]\.[0-9]{1,}$/i',
|
||
'lng' => 'required|string|regex:/^[1-9][0-9]\.[0-9]{1,}$/i'
|
||
]);
|
||
|
||
$dangerPoint = DangerPoint::find($id);
|
||
|
||
$dangerPoint->dangerPointHistories()->create([
|
||
// PUBLIC URL
|
||
'user_id' => $request->user()->id,
|
||
'previous_code' => $dangerPoint->code,
|
||
'previous_axis_name' => $dangerPoint->axis_name,
|
||
'previous_axis_type' => $dangerPoint->axis_type,
|
||
'previous_axis_start' => $dangerPoint->axis_start,
|
||
'previous_axis_end' => $dangerPoint->axis_end,
|
||
'previous_distance_axis_start' => $dangerPoint->distance_axis_start,
|
||
'previous_local_name' => $dangerPoint->local_name,
|
||
'previous_lat' => $dangerPoint->lat,
|
||
'previous_lng' => $dangerPoint->lng,
|
||
'previous_accident_251' => $dangerPoint->accident_251,
|
||
'previous_accident_251_code' => $dangerPoint->accident_251_code,
|
||
'previous_speed_limit' => $dangerPoint->speed_limit,
|
||
'previous_speed_average' => $dangerPoint->speed_average,
|
||
'previous_accident_possibility' => $dangerPoint->accident_possibility,
|
||
'previous_road_guard' => $dangerPoint->road_guard,
|
||
'previous_geometric_desc' => $dangerPoint->geometric_desc,
|
||
'previous_accident_cause' => $dangerPoint->accident_cause,
|
||
'previous_accident_cause_suggest' => $dangerPoint->accident_cause_suggest,
|
||
'previous_accident_severity' => $dangerPoint->accident_severity,
|
||
'previous_accident_severity_suggest' => $dangerPoint->accident_severity_suggest,
|
||
'previous_correction_plan_done' => $dangerPoint->correction_plan_done,
|
||
'previous_correction_plan_doing' => $dangerPoint->correction_plan_doing,
|
||
'previous_correction_plan_doing_desc' => $dangerPoint->correction_plan_doing_desc,
|
||
'previous_correction_plan_doing_suggest' => $dangerPoint->correction_plan_doing_suggest,
|
||
'previous_status' => $dangerPoint->status,
|
||
'previous_status_desc' => $dangerPoint->status_desc
|
||
]);
|
||
|
||
$dangerPoint->province_id = $request->input('province-id') ?? $dangerPoint->province_id;
|
||
$dangerPoint->axis_name = $request->input('axis-name') ?? $dangerPoint->axis_name;
|
||
$dangerPoint->axis_type = $request->input('axis-type') ?? $dangerPoint->axis_type;
|
||
$dangerPoint->axis_start = $request->input('axis-start') ?? $dangerPoint->axis_start;
|
||
$dangerPoint->axis_end = $request->input('axis-end') ?? $dangerPoint->axis_end;
|
||
$dangerPoint->distance_axis_start = $request->input('distance-axis-start') ?? $dangerPoint->distance_axis_start;
|
||
$dangerPoint->local_name = $request->input('local-name') ?? $dangerPoint->local_name;
|
||
$dangerPoint->lat = $request->input('lat') ?? $dangerPoint->lat;
|
||
$dangerPoint->lng = $request->input('lng') ?? $dangerPoint->lng;
|
||
|
||
$dangerPoint->save();
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $dangerPoint
|
||
], 200);
|
||
}
|
||
|
||
public function updateDangerDetails(Request $request, $id)
|
||
{
|
||
$request->validate([
|
||
'accident-251' => 'required|boolean',
|
||
'accident-251-code' => 'required_if:accident-251,1|string',
|
||
'speed-limit' => 'required|integer',
|
||
'speed-average' => 'required|integer',
|
||
'accident-possibility' => 'required|boolean',
|
||
'road-guard' => 'required|boolean',
|
||
'geometric-desc' => 'required|integer|between:1,16',
|
||
'accident-cause' => 'string',
|
||
'accident-cause-suggest' => 'string',
|
||
// 'accident-severity' => 'string',
|
||
// 'accident-severity-suggest' => 'string',
|
||
'correction-plan-done' => 'string',
|
||
'correction-plan-doing' => 'string',
|
||
'correction-plan-doing-desc' => 'string',
|
||
'correction-plan-doing-suggest' => 'string',
|
||
//'signature-file' => 'required|file'
|
||
]);
|
||
|
||
$dangerPoint = DangerPoint::find($id);
|
||
|
||
$dangerPoint->dangerPointHistories()->create([
|
||
// PUBLIC URL
|
||
'user_id' => $request->user()->id,
|
||
'previous_code' => $dangerPoint->code,
|
||
'previous_axis_name' => $dangerPoint->axis_name,
|
||
'previous_axis_type' => $dangerPoint->axis_type,
|
||
'previous_axis_start' => $dangerPoint->axis_start,
|
||
'previous_axis_end' => $dangerPoint->axis_end,
|
||
'previous_distance_axis_start' => $dangerPoint->distance_axis_start,
|
||
'previous_local_name' => $dangerPoint->local_name,
|
||
'previous_lat' => $dangerPoint->lat,
|
||
'previous_lng' => $dangerPoint->lng,
|
||
'previous_accident_251' => $dangerPoint->accident_251,
|
||
'previous_accident_251_code' => $dangerPoint->accident_251_code,
|
||
'previous_speed_limit' => $dangerPoint->speed_limit,
|
||
'previous_speed_average' => $dangerPoint->speed_average,
|
||
'previous_accident_possibility' => $dangerPoint->accident_possibility,
|
||
'previous_road_guard' => $dangerPoint->road_guard,
|
||
'previous_geometric_desc' => $dangerPoint->geometric_desc,
|
||
'previous_accident_cause' => $dangerPoint->accident_cause,
|
||
'previous_accident_cause_suggest' => $dangerPoint->accident_cause_suggest,
|
||
'previous_accident_severity' => $dangerPoint->accident_severity,
|
||
'previous_accident_severity_suggest' => $dangerPoint->accident_severity_suggest,
|
||
'previous_correction_plan_done' => $dangerPoint->correction_plan_done,
|
||
'previous_correction_plan_doing' => $dangerPoint->correction_plan_doing,
|
||
'previous_correction_plan_doing_desc' => $dangerPoint->correction_plan_doing_desc,
|
||
'previous_correction_plan_doing_suggest' => $dangerPoint->correction_plan_doing_suggest,
|
||
'previous_status' => $dangerPoint->status,
|
||
'previous_status_desc' => $dangerPoint->status_desc
|
||
]);
|
||
|
||
$dangerPoint->accident_251 = $request->input('accident-251') ?? $dangerPoint->accident_251;
|
||
$dangerPoint->accident_251_code = $request->input('accident-251-code') ?? $dangerPoint->accident_251_code;
|
||
$dangerPoint->speed_limit = $request->input('speed-limit') ?? $dangerPoint->speed_limit;
|
||
$dangerPoint->speed_average = $request->input('speed-average') ?? $dangerPoint->speed_average;
|
||
$dangerPoint->accident_possibility = $request->input('accident-possibility') ?? $dangerPoint->accident_possibility;
|
||
$dangerPoint->road_guard = $request->input('road-guard') ?? $dangerPoint->road_guard;
|
||
$dangerPoint->geometric_desc = $request->input('geometric-desc') ?? $dangerPoint->geometric_desc;
|
||
if ($request->input('accident-cause')) {
|
||
$dangerPoint->accident_cause = explode(',', $request->input('accident-cause')) ?? $dangerPoint->accident_cause;
|
||
}
|
||
$dangerPoint->accident_cause_suggest = $request->input('accident-cause-suggest') ?? $dangerPoint->accident_cause_suggest;
|
||
if ($request->input('accident-severity')) {
|
||
$dangerPoint->accident_severity = explode(',', $request->input('accident-severity')) ?? $dangerPoint->accident_severity;
|
||
}
|
||
$dangerPoint->accident_severity_suggest = $request->input('accident-severity-suggest') ?? $dangerPoint->accident_severity_suggest;
|
||
$dangerPoint->correction_plan_done = $request->input('correction-plan-done') ?? $dangerPoint->correction_plan_done;
|
||
$dangerPoint->correction_plan_doing = $request->input('correction-plan-doing') ?? $dangerPoint->correction_plan_doing;
|
||
$dangerPoint->correction_plan_doing_desc = $request->input('correction-plan-doing-desc') ?? $dangerPoint->correction_plan_doing_des;
|
||
$dangerPoint->correction_plan_doing_suggest = $request->input('correction-plan-doing-suggest') ?? $dangerPoint->correction_plan_doing_suggest;
|
||
|
||
// $files_path = null;
|
||
|
||
// if ($request->file('signature-file')) {
|
||
// $files_path = $request->file('signature-file')->storeAs(
|
||
// 'public/danger-points/signature',
|
||
// 'sign_' . time() . '_signature_file_' . $dangerPoint->id . '_' . $request->file('signature-file')->getClientOriginalName()
|
||
// );
|
||
// }
|
||
|
||
// $dangerPoint->signature_file = $files_path;
|
||
|
||
$dangerPoint->save();
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $dangerPoint
|
||
], 200);
|
||
}
|
||
|
||
public function updateDangerAccident(Request $request, $id)
|
||
{
|
||
$request->validate([
|
||
'danger-id' => 'required|integer|exists:danger_points,id',
|
||
'serial-number' => 'string|unique:danger_point_accidents,serial_number',
|
||
'accident-date' => 'required|string',
|
||
'day' => 'required|integer|between:1,7',
|
||
'time' => 'required|string',
|
||
'accident-direction' => 'required|integer|between:1,2',
|
||
'collision-type' => 'required|integer|between:1,6',
|
||
'accident-factors' => 'required|json',
|
||
'accident-type' => 'required|integer|between:1,3',
|
||
'accident-result' => 'required|json'
|
||
]);
|
||
|
||
$dangerPointAccident = DangerPointAccident::find($id);
|
||
|
||
$accDate = explode('-', $request->input('accident-date'));
|
||
$accDateGregorian = Verta::getGregorian($accDate[0], $accDate[1], $accDate[2]);
|
||
if (count($accDateGregorian) == 3) {
|
||
$accDateGregorianSt = $accDateGregorian[0] . '-' . $accDateGregorian[1] . '-' .$accDateGregorian[2];
|
||
} else {
|
||
$accDateGregorianSt = null;
|
||
}
|
||
|
||
$dangerPointAccident->serial_number = $request->input('serial-number') ?? $dangerPointAccident->serial_number;
|
||
$dangerPointAccident->accident_date = $accDateGregorianSt ?? $dangerPointAccident->accident_date;
|
||
$dangerPointAccident->day = $request->input('day') ?? $dangerPointAccident->day;
|
||
$dangerPointAccident->time = $request->input('time') ?? $dangerPointAccident->time;
|
||
$dangerPointAccident->accident_direction = $request->input('accident-direction') ?? $dangerPointAccident->accident_direction;
|
||
$dangerPointAccident->collision_type = $request->input('collision-type') ?? $dangerPointAccident->collision_type;
|
||
if ($request->input('accident-factors')) {
|
||
$dangerPointAccident->accident_factors = json_decode($request->input('accident-factors'));
|
||
}
|
||
$dangerPointAccident->accident_type = $request->input('accident-type') ?? $dangerPointAccident->accident_type;
|
||
if ($request->input('accident-result')) {
|
||
$dangerPointAccident->accident_result = json_decode($request->input('accident-result'));
|
||
}
|
||
|
||
$dangerPointAccident->save();
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $dangerPointAccident
|
||
], 200);
|
||
}
|
||
|
||
public function getDangerPointPreview($id, $op = 'print')
|
||
{
|
||
$dangerPoint = DangerPoint::where('id', $id)->with('dangerPointAccidents')->get();
|
||
|
||
$dayArray = [
|
||
'شنبه',
|
||
'یکشنبه',
|
||
'دوشنبه',
|
||
'سهشنبه',
|
||
'چهارشنبه',
|
||
'پنجشنبه',
|
||
'جمعه'
|
||
];
|
||
|
||
$collisionTypeArray = [
|
||
'رخ به رخ',
|
||
'واژگونی',
|
||
'جلو به عقب',
|
||
'جلو به پهلو',
|
||
'برخورد با شی ثابت',
|
||
'برخورد با عابر'
|
||
];
|
||
|
||
$dangerAccidentsArray = [];
|
||
$dangerAccidentsSum = [
|
||
0, 0, 0, 0, 0
|
||
];
|
||
|
||
foreach ($dangerPoint[0]->dangerPointAccidents as $key => $dangerAccident) {
|
||
$dangerAccidentsArray[$key] = [
|
||
'serial_number' => $dangerAccident->serial_number,
|
||
'accident_day' => verta($dangerAccident->accident_date)->format('j'),
|
||
'accident_month' => verta($dangerAccident->accident_date)->format('n'),
|
||
'accident_year' => verta($dangerAccident->accident_date)->format('y'),
|
||
'day' => $dayArray[$dangerAccident->day - 1],
|
||
'time' => $dangerAccident->time,
|
||
'accident_direction' => $dangerAccident->accident_direction,
|
||
'collision_type' => $collisionTypeArray[$dangerAccident->collision_type - 1],
|
||
'accident_factors' => $dangerAccident->accident_factors,
|
||
'accident_type' => $dangerAccident->accident_type,
|
||
'accident_result' => $dangerAccident->accident_result
|
||
];
|
||
|
||
$dangerAccidentsSum[0] += ($dangerAccident->accident_type == 1) ? 1 : 0;
|
||
$dangerAccidentsSum[1] += ($dangerAccident->accident_type == 2) ? 1 : 0;
|
||
//$dangerAccidentsSum[2] += ($dangerAccident->accident_type == 3) ? 1 : 0;
|
||
$dangerAccidentsSum[3] += $dangerAccident->accident_result['de'];
|
||
$dangerAccidentsSum[4] += $dangerAccident->accident_result['in'];
|
||
}
|
||
|
||
$axisTypeArray = [
|
||
'آزادراه',
|
||
'بزرگراه',
|
||
'راه اصلی',
|
||
'راه فرعی با عملکرد اصلی',
|
||
'راه فرعی (درجه 1 یا 2)',
|
||
'راه روستایی (فرعی درجه 3)'
|
||
];
|
||
|
||
$accidentPossibilityArray = [
|
||
'خیر',
|
||
'بله'
|
||
];
|
||
|
||
$roadGuardArray = [
|
||
'خیر',
|
||
'بله'
|
||
];
|
||
|
||
$accident251Array = [
|
||
'خیر',
|
||
'بله'
|
||
];
|
||
|
||
$geometricDescArray = [
|
||
'تقاطع',
|
||
'پل',
|
||
'قوس افقی',
|
||
'قوس قائم',
|
||
'قوس افقی و قائم',
|
||
'تونل',
|
||
'میدان',
|
||
'تقاطع-قوس',
|
||
'پل-قوس',
|
||
'تونل-قوس',
|
||
'پل-تقاطع',
|
||
'پل-تقاطع-قوس',
|
||
'منطقه مسکونی',
|
||
'مسیر مستقیم فاقد راه دسترسی',
|
||
'پل - تقاطع - منطقه مسکونی',
|
||
'تقاطع - قوس - منطقه مسکونی'
|
||
];
|
||
|
||
$accidentCauseArray = [
|
||
'قوس تند افقی',
|
||
'ابهام در مسیر (نقص در نحوه مسیرنمایی)',
|
||
'عدم رعایت سرعت مجاز',
|
||
'قوس تند قائم',
|
||
'دید ناکافی (مثلث دید-مسافتدید توفق یا سبقت)',
|
||
'عدم رعایت سبقت مجاز',
|
||
'قرارگیری قوس افقی در تاج قوس قائم',
|
||
'(جانمایی/طرح تابلو ) نقص در علائم پیش آگاهی و هدایت مسیر',
|
||
'عدم رعایت محدودیت/ممنوعیت عبور',
|
||
'قوس افقی در سرازیری تند',
|
||
'نقص در علائم اخطاری و انتظامی',
|
||
'عدم رعایت فاصله طولی',
|
||
'هندسه نامناسب ورودی و خروجی دسترسی-تقاطع-دوربرگردان',
|
||
'نقص در اشکارسازی نواحی انتقال قبل پل ها و تونل ها که شانه حذف میشود',
|
||
'افتادگی در لبه آسفالت و یا فقدان شانه',
|
||
'تبدیل نامناسب نوع راه (جدا شده به جدا نشده)',
|
||
'عدم روشنایی ضروری در نقطه (محل عبور عرضی عمده عابرین یا خودرو ها)',
|
||
'منطقه مه گیر /کولاک/یخ زدگی/شن زدگی',
|
||
'منطقه با تداخل ترافیکی (نواحی مسکونی ،صنعتی،تفریحی،مدارس،و..)',
|
||
'منطقه با عبور حیوانات اهلی / وحشی',
|
||
'کاهش نامناسب تعداد خطوط (4 به 3 یا به 2)',
|
||
'منطقه با افزایش ناگهانی تراکم ترافیک',
|
||
'منطقه با ریزش از دیوار ترانشه',
|
||
'نبود /نقص در خط سبقت در سربالایی برای وسایل نقلیه سنگین در نواحی ضروری',
|
||
'دور مناسب در قوس',
|
||
'نقص در آشکار سازی شرایط خاص یا غیر منتظره',
|
||
'رویه نامناسب (ناهموار-قیرزده-صیقلی) یا آسیب دیده (وجود چاله )',
|
||
'محل نامناسب دسترسی/دسترسی های متعدد و نا ایمن در حریم راه',
|
||
'عرض کم سواره رو',
|
||
'سرازیری تند'
|
||
];
|
||
|
||
$accidentSeverityArray = [
|
||
'شیروانی تند یا پرتگاه بدون حفاظت',
|
||
'سر ازاد حفاظ',
|
||
'مانع صلب بدون حفاظت در حاشیه راه',
|
||
'نقص در ناحیه انتقالی اتصال انواع حفاظ (محل پل و ...)',
|
||
'نقص یا عدم کفایت حفاظ کناری',
|
||
'نقص یا عدم کفایت نرده پل',
|
||
'نقص یا عدم کفایت حفاظ میانی',
|
||
'فقدان جداکننده در میانه راه چهار خطه'
|
||
];
|
||
|
||
$accidentCauseString = "";
|
||
|
||
if ($dangerPoint[0]->accident_cause) {
|
||
foreach ($dangerPoint[0]->accident_cause as $value) {
|
||
$accidentCauseString .= ($accidentCauseArray[$value - 1] . ", ");
|
||
}
|
||
}
|
||
|
||
$accidentSeverityString = "";
|
||
|
||
if ($dangerPoint[0]->accident_severity != null) {
|
||
foreach ($dangerPoint[0]->accident_severity as $value) {
|
||
$accidentSeverityString .= ($accidentSeverityArray[$value - 1] . ", ");
|
||
}
|
||
}
|
||
|
||
$dangerPointArray = [
|
||
'created_at' => verta($dangerPoint[0]->created_at)->format('Y/m/d - H:m'),
|
||
'updated_at' => verta($dangerPoint[0]->updated_at)->format('Y/m/d - H:m'),
|
||
'province_name' => $dangerPoint[0]->province->name_fa,
|
||
'axis_name' => $dangerPoint[0]->axis_name,
|
||
'axis_type' => $axisTypeArray[$dangerPoint[0]->axis_type - 1],
|
||
'axis_start' => $dangerPoint[0]->axis_start,
|
||
'axis_end' => $dangerPoint[0]->axis_end,
|
||
'distance_axis_start' => $dangerPoint[0]->distance_axis_start,
|
||
'local_name' => $dangerPoint[0]->local_name,
|
||
'lat_lng' => [
|
||
$dangerPoint[0]->lat,
|
||
$dangerPoint[0]->lng
|
||
],
|
||
'speed_limit' => $dangerPoint[0]->speed_limit,
|
||
'speed_average' => $dangerPoint[0]->speed_average,
|
||
'accident_possibility' => $accidentPossibilityArray[$dangerPoint[0]->accident_possibility],
|
||
'road_guard' => $roadGuardArray[$dangerPoint[0]->road_guard],
|
||
'geometric_desc' => $geometricDescArray[$dangerPoint[0]->geometric_desc - 1],
|
||
'accident_cause' => ((strlen($accidentCauseString) > 3) ? substr($accidentCauseString, 0, -2) : $accidentCauseString),
|
||
'accident_cause_suggest' => $dangerPoint[0]->accident_cause_suggest,
|
||
'accident_severity' => ((strlen($accidentSeverityString) > 3) ? substr($accidentSeverityString, 0, -2) : $accidentSeverityString),
|
||
'accident_severity_suggest' => $dangerPoint[0]->accident_severity_suggest,
|
||
'correction_plan_done' => $dangerPoint[0]->correction_plan_done,
|
||
'correction_plan_doing' => $dangerPoint[0]->correction_plan_doing,
|
||
'correction_plan_doing_desc' => $dangerPoint[0]->correction_plan_doing_desc,
|
||
'correction_plan_doing_suggest' => $dangerPoint[0]->correction_plan_doing_suggest,
|
||
'accident_251' => $accident251Array[$dangerPoint[0]->accident_251],
|
||
'accident_251_code' => $dangerPoint[0]->accident_251_code,
|
||
'danger_point_accidents' => $dangerAccidentsArray,
|
||
'danger_accidents_sum' => $dangerAccidentsSum
|
||
];
|
||
|
||
if ($op == 'print') {
|
||
$pdf = SnappyPdf::loadView('rmto-preview.pages.danger-point-preview', ['dangerPointArray' => $dangerPointArray]);
|
||
|
||
return $pdf->download('danger-points-id-' . $dangerPoint[0]->id . '.pdf');
|
||
} else {
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $dangerPointArray
|
||
], 200);
|
||
}
|
||
}
|
||
|
||
public function uploadDangerPointFiles(Request $request)
|
||
{
|
||
$request->validate([
|
||
'danger-id' => 'required|integer|exists:danger_points,id',
|
||
'signature-file' => 'image',
|
||
'police-file' => 'image'
|
||
]);
|
||
|
||
$dangerPoint = DangerPoint::find($request->input('danger-id'));
|
||
|
||
if ($request->file('signature-file')) {
|
||
$signature_file = $request->file('signature-file')->storeAs(
|
||
'public/danger_points',
|
||
'file_signature-file_' . $dangerPoint->id . '_' . time() . '_' . $request->file('signature-file')->getClientOriginalName()
|
||
);
|
||
|
||
$dangerPoint->signature_file = $signature_file;
|
||
}
|
||
|
||
if ($request->file('police-file')) {
|
||
$police_file = $request->file('police-file')->storeAs(
|
||
'public/danger_points',
|
||
'file_police-file_' . $dangerPoint->id . '_' . time() . '_' . $request->file('police-file')->getClientOriginalName()
|
||
);
|
||
|
||
$dangerPoint->police_file = $police_file;
|
||
}
|
||
|
||
$dangerPoint->save();
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => [
|
||
$dangerPoint->signature_file,
|
||
$dangerPoint->police_file
|
||
]
|
||
], 200);
|
||
}
|
||
|
||
public function destroyDangerFilesImage(Request $request)
|
||
{
|
||
$request->validate([
|
||
'danger-id' => 'required|integer|exists:danger_points,id',
|
||
'name' => 'required|string'
|
||
]);
|
||
|
||
$dangerPoint = DangerPoint::find($request->input('danger-id'));
|
||
|
||
if ($request->input('name') == 'signature-file') {
|
||
$dangerPoint->signature_file = null;
|
||
} elseif ($request->input('name') == 'police-file') {
|
||
$dangerPoint->police_file = null;
|
||
}
|
||
|
||
$dangerPoint->save();
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => 1
|
||
], 200);
|
||
}
|
||
|
||
public function provinceFinalSubmit(Request $request)
|
||
{
|
||
$request->validate([
|
||
'danger-id' => 'required|integer|exists:danger_points,id'
|
||
]);
|
||
|
||
$dangerPoint = DangerPoint::find($request->input('danger-id'));
|
||
|
||
$dangerPoint->status = 1;
|
||
$dangerPoint->created_at = Carbon::now();
|
||
|
||
$dangerPoint->save();
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $dangerPoint->status
|
||
], 200);
|
||
}
|
||
|
||
public function destroyDanger($id)
|
||
{
|
||
$dangerPoint = DangerPoint::find($id);
|
||
|
||
$dangerPoint->dangerPointHistories()->delete();
|
||
$dangerPoint->dangerPointAccidents()->delete();
|
||
$dangerPoint->files()->delete();
|
||
$dangerPoint->delete();
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => 1
|
||
], 200);
|
||
}
|
||
|
||
public function adminSubmitStatus(Request $request)
|
||
{
|
||
$request->validate([
|
||
'danger-id' => 'required|integer|exists:danger_points,id',
|
||
'status' => 'required|integer|between:2,4',
|
||
'status-desc' => 'required_if:danger-status,3'
|
||
]);
|
||
|
||
$dangerPoint = DangerPoint::find($request->input('danger-id'));
|
||
|
||
$dangerPoint->status = $request->input('status');
|
||
|
||
if ($request->input('status-desc') && $request->input('status') == 3) {
|
||
$dangerPoint->status_desc = $request->input('status-desc');
|
||
}
|
||
|
||
if ($request->input('status') == 2) {
|
||
$provincesCode = [
|
||
3 => [
|
||
"province_id" => 3,
|
||
"province_name" => "اردبیل",
|
||
"province_code" => 9199
|
||
],
|
||
4 => [
|
||
"province_id" => 4,
|
||
"province_name" => "اصفهان",
|
||
"province_code" => 2199
|
||
],
|
||
5 => [
|
||
"province_id" => 5,
|
||
"province_name" => "البرز",
|
||
"province_code" => 1899
|
||
],
|
||
6 => [
|
||
"province_id" => 6,
|
||
"province_name" => "ايرانشهر",
|
||
"province_code" => 6299
|
||
],
|
||
7 => [
|
||
"province_id" => 7,
|
||
"province_name" => "ايلام ",
|
||
"province_code" => 8399
|
||
],
|
||
2 => [
|
||
"province_id" => 2,
|
||
"province_name" => "آذربايجان غربي",
|
||
"province_code" => 5799
|
||
],
|
||
1 => [
|
||
"province_id" => 1,
|
||
"province_name" => "آذربایجان شرقی",
|
||
"province_code" => 2699
|
||
],
|
||
8 => [
|
||
"province_id" => 8,
|
||
"province_name" => "بوشهر",
|
||
"province_code" => 9599
|
||
],
|
||
9 => [
|
||
"province_id" => 9,
|
||
"province_name" => "تهران",
|
||
"province_code" => 1199
|
||
],
|
||
10 => [
|
||
"province_id" => 10,
|
||
"province_name" => "چهارمحال و بختياري",
|
||
"province_code" => 7799
|
||
],
|
||
11 => [
|
||
"province_id" => 11,
|
||
"province_name" => "خراسان جنوبی",
|
||
"province_code" => 3399
|
||
],
|
||
12 => [
|
||
"province_id" => 12,
|
||
"province_name" => "خراسان رضوي",
|
||
"province_code" => 3199
|
||
],
|
||
13 => [
|
||
"province_id" => 13,
|
||
"province_name" => "خراسان شمالی",
|
||
"province_code" => 3299
|
||
],
|
||
14 => [
|
||
"province_id" => 14,
|
||
"province_name" => "خوزستان",
|
||
"province_code" => 3699
|
||
],
|
||
15 => [
|
||
"province_id" => 15,
|
||
"province_name" => "زنجان",
|
||
"province_code" => 6799
|
||
],
|
||
17 => [
|
||
"province_id" => 17,
|
||
"province_name" => "سمنان",
|
||
"province_code" => 8799
|
||
],
|
||
16 => [
|
||
"province_id" => 16,
|
||
"province_name" => "سمنان شرق",
|
||
"province_code" => 8899
|
||
],
|
||
18 => [
|
||
"province_id" => 18,
|
||
"province_name" => "سيستان و بلوچستان",
|
||
"province_code" => 6199
|
||
],
|
||
19 => [
|
||
"province_id" => 19,
|
||
"province_name" => "فارس",
|
||
"province_code" => 4199
|
||
],
|
||
20 => [
|
||
"province_id" => 20,
|
||
"province_name" => "قزوین",
|
||
"province_code" => 1599
|
||
],
|
||
21 => [
|
||
"province_id" => 21,
|
||
"province_name" => "قم",
|
||
"province_code" => 1499
|
||
],
|
||
25 => [
|
||
"province_id" => 25,
|
||
"province_name" => "كرمانشاه",
|
||
"province_code" => 7199
|
||
],
|
||
22 => [
|
||
"province_id" => 22,
|
||
"province_name" => "کردستان",
|
||
"province_code" => 7399
|
||
],
|
||
23 => [
|
||
"province_id" => 23,
|
||
"province_name" => "کرمان",
|
||
"province_code" => 4599
|
||
],
|
||
24 => [
|
||
"province_id" => 24,
|
||
"province_name" => "کرمان جنوب",
|
||
"province_code" => 4699
|
||
],
|
||
26 => [
|
||
"province_id" => 26,
|
||
"province_name" => "کهگیلویه و بویراحمد",
|
||
"province_code" => 8599
|
||
],
|
||
27 => [
|
||
"province_id" => 27,
|
||
"province_name" => "گلستان",
|
||
"province_code" => 9799
|
||
],
|
||
28 => [
|
||
"province_id" => 28,
|
||
"province_name" => "گیلان",
|
||
"province_code" => 5499
|
||
],
|
||
29 => [
|
||
"province_id" => 29,
|
||
"province_name" => "لارستان",
|
||
"province_code" => 2999
|
||
],
|
||
30 => [
|
||
"province_id" => 30,
|
||
"province_name" => "لرستان",
|
||
"province_code" => 8199
|
||
],
|
||
31 => [
|
||
"province_id" => 31,
|
||
"province_name" => "مازندران",
|
||
"province_code" => 1699
|
||
],
|
||
32 => [
|
||
"province_id" => 32,
|
||
"province_name" => "مركزي",
|
||
"province_code" => 5199
|
||
],
|
||
33 => [
|
||
"province_id" => 33,
|
||
"province_name" => "هرمزگان",
|
||
"province_code" => 6499
|
||
],
|
||
34 => [
|
||
"province_id" => 34,
|
||
"province_name" => "همدان",
|
||
"province_code" => 7599
|
||
],
|
||
35 => [
|
||
"province_id" => 35,
|
||
"province_name" => "يزد",
|
||
"province_code" => 9399
|
||
]
|
||
];
|
||
|
||
$dangerPoints = DangerPoint::where('province_id', $dangerPoint->province_id)
|
||
->where('status', 2)
|
||
->orderByDesc('code')
|
||
->limit(1)
|
||
->get();
|
||
|
||
if ($dangerPoints->count() == 1) {
|
||
$dangerPoint->code = $dangerPoints[0]->code + 1;
|
||
} else {
|
||
$dangerPoint->code = $provincesCode[$dangerPoint->province_id]['province_code'] . '001';
|
||
}
|
||
}
|
||
|
||
$dangerPoint->save();
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => [
|
||
'status' => $dangerPoint->status,
|
||
'status_desc' => $dangerPoint->status_desc
|
||
]
|
||
], 200);
|
||
}
|
||
|
||
public function addNewUsers()
|
||
{
|
||
$users = \App\Models\User::where('username', 'like', '%imenivaharim%')
|
||
->get();
|
||
|
||
//dd($users);
|
||
|
||
foreach ($users as $user) {
|
||
$newUser1 = new \App\Models\User;
|
||
$newUser2 = new \App\Models\User;
|
||
|
||
$newUser1->username = $user->username . '1';
|
||
$newUser2->username = $user->username . '2';
|
||
$newUser1->name = 'کارشناس ایمنی و حریم';
|
||
$newUser2->name = 'کارشناس ایمنی و حریم';
|
||
$newUser1->province_id = $user->province_id;
|
||
$newUser2->province_id = $user->province_id;
|
||
$newUser1->password = Hash::make('123');
|
||
$newUser2->password = Hash::make('123');
|
||
|
||
// $newUser1->save();
|
||
// $newUser2->save();
|
||
}
|
||
}
|
||
public function danger_points_result(Request $request)
|
||
{
|
||
// $results = DB::select( DB::raw("SELECT ROW_NUMBER() OVER() AS r,p,a,l,c,e,g,f,b,i,d,s,
|
||
// CAST(ROUND((s-ag)/sd,2)AS DEC(10,2)) AS zi,0 AS pp,CAST(ROUND(ag,2) AS DEC(10,2)) AS ag,
|
||
// CAST(ROUND(sd,2) AS DEC(10,2)) AS sd,j,h FROM (SELECT *,SUM(d*5 + i) AS s FROM
|
||
// (SELECT danger_points.id AS z, axis_name AS a, axis_type_fa AS b, axis_start AS c,
|
||
// axis_end AS e, distance_axis_start AS f, local_name AS l, lat AS j,lng AS h,
|
||
// geometric_desc_fa AS g, SUM(JSON_UNQUOTE(JSON_EXTRACT(accident_result,\"$.de\"))) AS d,
|
||
// SUM(JSON_UNQUOTE(JSON_EXTRACT(accident_result,\"$.in\"))) AS i, province_fa AS p FROM danger_points
|
||
// JOIN danger_point_accidents ON danger_points.id = danger_point_accidents.`point_id` GROUP BY z) q,
|
||
// (SELECT AVG(s) AS ag ,STDDEV(s) AS sd FROM (SELECT *,SUM(d*5 + i) AS s FROM (SELECT danger_points.id AS z,
|
||
// axis_name AS a, axis_type_fa AS b, axis_start AS c, axis_end AS e, distance_axis_start AS f, local_name AS l,
|
||
// lat AS j,lng AS h, geometric_desc_fa AS g, SUM(JSON_UNQUOTE(JSON_EXTRACT(accident_result,\"$.de\"))) AS d,
|
||
// SUM(JSON_UNQUOTE(JSON_EXTRACT(accident_result,\"$.in\"))) AS i, province_fa AS p FROM danger_points JOIN
|
||
// danger_point_accidents ON danger_points.id = danger_point_accidents.`point_id` GROUP BY z) q GROUP BY z) m)
|
||
// AS totals GROUP BY z) wqwq") );
|
||
// $results = DB::select( DB::raw("SELECT r,p,a,l,c,e,g,f,b,i,d,s,CAST(ROUND((s-ag)/sd,2)AS DEC(10,2)) AS zi,
|
||
// CAST(gauss_cdf(ag,sd,s)AS DEC(10,2)) AS pp,CAST(ROUND(ag,2) AS DEC(10,2)) AS ag
|
||
// ,CAST(ROUND(sd,2) AS DEC(10,2)) AS sd ,j,h FROM (SELECT *,i+d*5 AS s,AVG(i+d*5) AS ag,STDDEV(i+d*5) AS sd
|
||
// FROM (SELECT COUNT( CASE WHEN accident_type = 1 THEN 1 ELSE NULL END) AS i,
|
||
// COUNT( CASE WHEN accident_type = 2 THEN 1 ELSE NULL END) AS d,geometric_desc_fa AS g,
|
||
// axis_type_fa AS b,danger_points.code AS cd, province_fa AS p,danger_points.code AS r,
|
||
// axis_name AS a, axis_start AS c, axis_end AS e, distance_axis_start AS f, local_name AS l,
|
||
// lat AS j,lng AS h FROM danger_points JOIN danger_point_accidents
|
||
// ON danger_point_accidents.`point_id` = danger_points.id
|
||
// GROUP BY danger_points.code)asd GROUP BY g,b) aas INNER JOIN danger_points ON
|
||
// danger_points.`geometric_desc_fa` = aas.g
|
||
// AND danger_points.`axis_type_fa` = aas.b WHERE danger_points.code <> ''") );
|
||
$results = DB::select(DB::raw("SELECT
|
||
tablea.cd,tablea.p,tablea.a,tablea.l,tablea.c,tablea.e,tablea.g,tablea.f,tablea.b,tablea.i,tablea.d,
|
||
tablea.s,tableb.ag,tableb.sd,CAST(ROUND((s-ag)/sd,2)AS DEC(10,2)) AS zi,
|
||
CAST(gauss_cdf(ag,sd,s)AS DEC(10,2)) AS pp,tablea.j AS j,tablea.h AS h
|
||
FROM (
|
||
SELECT s,i,d,g,b,cd,l,p,a,c,e,f,j,h FROM
|
||
(SELECT COUNT( CASE WHEN accident_type = 1 THEN 1 ELSE NULL END)
|
||
+ 5*COUNT( CASE WHEN accident_type = 2 THEN 1 ELSE NULL END) AS s,
|
||
COUNT( CASE WHEN accident_type = 1 THEN 1 ELSE NULL END) AS i,
|
||
COUNT( CASE WHEN accident_type = 2 THEN 1 ELSE NULL END) AS d,geometric_desc_fa AS g,
|
||
axis_type_fa AS b,danger_points.code AS cd, province_fa AS p,
|
||
axis_name AS a, axis_start AS c, axis_end AS e, distance_axis_start AS f, local_name AS l,
|
||
lat AS j,lng AS h FROM danger_points JOIN danger_point_accidents
|
||
ON danger_point_accidents.`point_id` = danger_points.id WHERE danger_points.code <>''
|
||
GROUP BY danger_points.code,danger_points.`geometric_desc_fa`,danger_points.`axis_type_fa`)asd
|
||
GROUP BY asd.cd,asd.g,asd.b) AS tablea JOIN (SELECT CAST(ROUND(ag,2) AS DEC(10,2)) AS ag
|
||
,CAST(ROUND(sd,2) AS DEC(10,2)) AS sd,danger_points.code AS cd,p,l,f,a,e,c,j,h
|
||
FROM (SELECT *,i+d*5 AS s,AVG(i+d*5) AS ag,STDDEV(i+d*5) AS sd
|
||
FROM (SELECT COUNT( CASE WHEN accident_type = 1 THEN 1 ELSE NULL END) AS i,
|
||
COUNT( CASE WHEN accident_type = 2 THEN 1 ELSE NULL END) AS d,geometric_desc_fa AS g,
|
||
axis_type_fa AS b,danger_points.code AS cd, province_fa AS p,danger_points.code AS z,
|
||
axis_name AS a, axis_start AS c, axis_end AS e, distance_axis_start AS f, local_name AS l,
|
||
lat AS j,lng AS h FROM danger_points JOIN danger_point_accidents
|
||
ON danger_point_accidents.`point_id` = danger_points.id
|
||
GROUP BY danger_points.code)asd GROUP BY g,b) aas INNER JOIN danger_points ON
|
||
danger_points.`geometric_desc_fa` = aas.g
|
||
AND danger_points.`axis_type_fa` = aas.b WHERE danger_points.code <> '' ) AS tableb ON tablea.cd = tableb.cd
|
||
"));
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $results
|
||
], 200);
|
||
return $results;
|
||
$danger_points = DangerPoint::all();
|
||
// return $danger_points;
|
||
// $data = (object)[];
|
||
foreach ($danger_points as $value) {
|
||
$de = 0;
|
||
$in = 0;
|
||
// $accidents = $value->dangerPointAccidents;
|
||
$value->de = 0;
|
||
$value->in = 0;
|
||
$value->de = 0;
|
||
$value->in = 0;
|
||
foreach ($value->dangerPointAccidents as $valueAccs) {
|
||
// echo gettype(json_decode($valueAccs->accident_result));
|
||
// $temp = json_encode($valueAccs->accident_result);
|
||
// echo $temp->de."\n";
|
||
$de += ($valueAccs->accident_result['de'] > 0) ?$valueAccs->accident_result['de'] :0;
|
||
$in += ($valueAccs->accident_result['in'] > 0) ?$valueAccs->accident_result['in'] :0;
|
||
}
|
||
$value->de = $de;
|
||
$value->in = $in;
|
||
$de = 0;
|
||
$in = 0;
|
||
unset($value->dangerPointAccidents);
|
||
// unset($value->id);
|
||
unset($value->code);
|
||
unset($value->user_id);
|
||
unset($value->province_id);
|
||
unset($value->city_id);
|
||
unset($value->axis_type);
|
||
unset($value->accident_251);
|
||
unset($value->accident_251_code);
|
||
unset($value->speed_limit);
|
||
unset($value->speed_average);
|
||
unset($value->accident_possibility);
|
||
unset($value->road_guard);
|
||
unset($value->geometric_desc);
|
||
unset($value->accident_cause);
|
||
unset($value->accident_cause_suggest);
|
||
unset($value->accident_severity);
|
||
unset($value->accident_severity_suggest);
|
||
unset($value->correction_plan_done);
|
||
unset($value->correction_plan_doing);
|
||
unset($value->correction_plan_doing_desc);
|
||
unset($value->correction_plan_doing_suggest);
|
||
unset($value->signature_file);
|
||
unset($value->police_file);
|
||
unset($value->signature_file);
|
||
unset($value->status);
|
||
unset($value->status_desc);
|
||
unset($value->created_at);
|
||
unset($value->updated_at);
|
||
unset($value->accident_sigma_2);
|
||
unset($value->accident_sigma);
|
||
unset($value->standard_deviation);
|
||
unset($value->accident_avg_weighted_average);
|
||
unset($value->accident_p);
|
||
unset($value->accident_zi);
|
||
unset($value->weighted_average);
|
||
unset($value->accident_result_de);
|
||
unset($value->accident_result_in);
|
||
/*
|
||
"province_fa": null,
|
||
"axis_name": "سیرجان - بافت",
|
||
"axis_type_fa": null,
|
||
"axis_start": "سیرجان",
|
||
"axis_end": "بافت",
|
||
"distance_axis_start": "10",
|
||
"local_name": "پیچ قطبیه",
|
||
"lat": "29.386943",
|
||
"lng": "55.779487",
|
||
"geometric_desc_fa": null,
|
||
"accident_result_de": null,
|
||
"accident_result_in": null,
|
||
"weighted_average": null,
|
||
"accident\u001f_zi": null,
|
||
"accident_p": null,
|
||
"accident_avg_weighted_average": null,
|
||
"standard_deviation": null,
|
||
"accident_sigma": null,
|
||
"accident_sigma_2": null,
|
||
"created_at": "2020-09-10 07:59:08",
|
||
"updated_at": "2020-09-12 13:53:36",
|
||
"de": 3,
|
||
"in": 20
|
||
*/
|
||
}
|
||
// dd($data);
|
||
// $danger = get_object_vars($danger_points);
|
||
// unset($danger['danger_point_accidents']);
|
||
return $danger_points;
|
||
// return $danger_points->makeHidden('danger_point_accidents')->toArray();
|
||
/*
|
||
if (data.axis_type == 1) {
|
||
return "ازادراه";
|
||
} else if (data.axis_type == 2) {
|
||
return "بزرگراه";
|
||
} else if (data.axis_type == 3) {
|
||
return " راه اصلی";
|
||
} else if (data.axis_type == 4) {
|
||
return "راه فرعی با عملکرد اصلی ";
|
||
} else if (data.axis_type == 5) {
|
||
return "راه فرعی (درجه 1 یا 2)";
|
||
} else if (data.axis_type == 6) {
|
||
return "راه روستایی (درجه 3)";
|
||
}*/
|
||
$dangerAccidents = DangerPoint::find($id)->dangerPointAccidents;
|
||
|
||
$dangerAccidentsArray = [];
|
||
|
||
foreach ($dangerAccidents as $key => $dangerAccident) {
|
||
$dangerAccidentsArray[$key] = [
|
||
'id' => $dangerAccident->id,
|
||
'serial_number' => $dangerAccident->serial_number,
|
||
'accident_date' => (($dangerAccident->accident_date) ? verta($dangerAccident->accident_date)->format('Y/m/d') : $dangerAccident->accident_date),
|
||
'day' => $dangerAccident->day,
|
||
'time' => $dangerAccident->time,
|
||
'accident_direction' => $dangerAccident->accident_direction,
|
||
'collision_type' => $dangerAccident->collision_type,
|
||
'accident_factors' => $dangerAccident->accident_factors,
|
||
'accident_type' => $dangerAccident->accident_type ?? [],
|
||
'accident_result' => $dangerAccident->accident_result
|
||
];
|
||
}
|
||
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $dangerAccidentsArray
|
||
], 200);
|
||
}
|
||
public function danger_points_result_chart(Request $request)
|
||
{
|
||
$data=DB::select(DB::raw("SELECT g,b,CAST(ROUND(ag,2) AS DEC(10,2)) AS s FROM (SELECT *,i+d*5 AS s,AVG(i+d*5) AS ag,STDDEV(i+d*5) AS sd
|
||
FROM (SELECT COUNT( CASE WHEN accident_type = 1 THEN 1 ELSE NULL END) AS i,
|
||
COUNT( CASE WHEN accident_type = 2 THEN 1 ELSE NULL END) AS d,geometric_desc_fa AS g,
|
||
axis_type_fa AS b,danger_points.code AS cd, province_fa AS p,danger_points.code AS z,
|
||
axis_name AS a, axis_start AS c, axis_end AS e, distance_axis_start AS f, local_name AS l,
|
||
lat AS j,lng AS h FROM danger_points JOIN danger_point_accidents
|
||
ON danger_point_accidents.`point_id` = danger_points.id
|
||
GROUP BY danger_points.code)asd GROUP BY g,b) aas INNER JOIN danger_points ON
|
||
danger_points.`geometric_desc_fa` = aas.g
|
||
AND danger_points.`axis_type_fa` = aas.b WHERE danger_points.code <> '' GROUP BY g,b order by ag desc"));
|
||
$avg = DB::select(DB::raw("SELECT AVG(s) AS ag FROM (SELECT g,b,CAST(ROUND(ag,2) AS DEC(10,2)) AS s FROM (SELECT *,i+d*5 AS s,AVG(i+d*5) AS ag,STDDEV(i+d*5) AS sd
|
||
FROM (SELECT COUNT( CASE WHEN accident_type = 1 THEN 1 ELSE NULL END) AS i,
|
||
COUNT( CASE WHEN accident_type = 2 THEN 1 ELSE NULL END) AS d,geometric_desc_fa AS g,
|
||
axis_type_fa AS b,danger_points.code AS cd, province_fa AS p,danger_points.code AS z,
|
||
axis_name AS a, axis_start AS c, axis_end AS e, distance_axis_start AS f, local_name AS l,
|
||
lat AS j,lng AS h FROM danger_points JOIN danger_point_accidents
|
||
ON danger_point_accidents.`point_id` = danger_points.id
|
||
GROUP BY danger_points.code)asd GROUP BY g,b) aas INNER JOIN danger_points ON
|
||
danger_points.`geometric_desc_fa` = aas.g
|
||
AND danger_points.`axis_type_fa` = aas.b WHERE danger_points.code <> '' GROUP BY g,b)asd"));
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $data,
|
||
'avg' =>$avg
|
||
], 200);
|
||
}
|
||
public function danger_points_result_new(Request $request)
|
||
{
|
||
$data=DB::select(DB::raw("SELECT
|
||
tablea.cd,tablea.p,tablea.a,tablea.l,tablea.c,tablea.e,tablea.g,tablea.gg,tablea.f,tablea.b,tablea.bb,tablea.i,tablea.d,tablea.s,tableb.ag,tableb.sd,CAST(ROUND((s-ag)/sd,2)AS DEC(10,2)) AS zi,
|
||
CAST(gauss_cdf(ag,sd,s)AS DEC(10,2)) AS pp,tablea.j AS j,tablea.h AS h
|
||
FROM (
|
||
SELECT s,i,d,g,gg,b,bb,cd,l,p,a,c,e,f,j,h FROM
|
||
(SELECT COUNT( CASE WHEN accident_type = 1 THEN 1 ELSE NULL END) + 5*COUNT( CASE WHEN accident_type = 2 THEN 1 ELSE NULL END) AS s, COUNT( CASE WHEN accident_type = 1 THEN 1 ELSE NULL END) AS i,
|
||
COUNT( CASE WHEN accident_type = 2 THEN 1 ELSE NULL END) AS d,geometric_desc_fa AS g,
|
||
CASE WHEN geometric_desc=11 OR geometric_desc=15 THEN 'پل - تقاطع'
|
||
WHEN geometric_desc = 16 OR geometric_desc = 12 OR geometric_desc=8 THEN 'تقاطع - قوس'
|
||
WHEN geometric_desc = 10 OR geometric_desc = 5 OR geometric_desc = 4 OR geometric_desc=3 THEN 'قوس های افقی و قائم'
|
||
WHEN geometric_desc=14 THEN 'نقطه عادی'
|
||
WHEN geometric_desc=13 OR geometric_desc=1 THEN 'تقاطع'
|
||
ELSE geometric_desc_fa END AS gg,
|
||
CASE WHEN axis_type = 4 OR axis_type = 5 OR axis_type = 6 THEN 'راه فرعی'
|
||
ELSE axis_type_fa END AS bb,
|
||
axis_type_fa AS b,danger_points.code AS cd, province_fa AS p,
|
||
axis_name AS a, axis_start AS c, axis_end AS e, distance_axis_start AS f, local_name AS l,
|
||
lat AS j,lng AS h FROM danger_points JOIN danger_point_accidents
|
||
ON danger_point_accidents.`point_id` = danger_points.id WHERE danger_points.code <>''
|
||
GROUP BY danger_points.code,gg,bb)asd GROUP BY asd.cd,asd.gg,asd.bb) AS tablea JOIN (SELECT CAST(ROUND(ag,2) AS DEC(10,2)) AS ag
|
||
,CAST(ROUND(sd,2) AS DEC(10,2)) AS sd,danger_points.code AS cd,p,l,f,a,e,c,j,h FROM (SELECT *,i+d*5 AS s,AVG(i+d*5) AS ag,STDDEV(i+d*5) AS sd
|
||
FROM (SELECT COUNT( CASE WHEN accident_type = 1 THEN 1 ELSE NULL END) AS i,
|
||
COUNT( CASE WHEN accident_type = 2 THEN 1 ELSE NULL END) AS d,geometric_desc_fa AS g,
|
||
CASE WHEN geometric_desc=11 OR geometric_desc=15 THEN 'پل - تقاطع'
|
||
WHEN geometric_desc = 16 OR geometric_desc = 12 OR geometric_desc=8 THEN 'تقاطع - قوس'
|
||
WHEN geometric_desc = 10 OR geometric_desc = 5 OR geometric_desc = 4 OR geometric_desc=3 THEN 'قوس های افقی و قائم'
|
||
WHEN geometric_desc=14 THEN 'نقطه عادی'
|
||
WHEN geometric_desc=13 OR geometric_desc=1 THEN 'تقاطع'
|
||
ELSE geometric_desc_fa END AS gg,
|
||
CASE WHEN axis_type = 4 OR axis_type = 5 OR axis_type = 6 THEN 'راه فرعی'
|
||
ELSE axis_type_fa END AS bb,
|
||
axis_type_fa AS b,danger_points.code AS cd, province_fa AS p,danger_points.code AS z,
|
||
axis_name AS a, axis_start AS c, axis_end AS e, distance_axis_start AS f, local_name AS l,
|
||
lat AS j,lng AS h FROM danger_points JOIN danger_point_accidents
|
||
ON danger_point_accidents.`point_id` = danger_points.id
|
||
GROUP BY danger_points.code)asd GROUP BY gg,bb) aas INNER JOIN danger_points ON
|
||
danger_points.n_geometric_desc_fa = aas.gg
|
||
AND danger_points.n_axis_type_fa = aas.bb WHERE danger_points.code <> '' ) AS tableb ON tablea.cd = tableb.cd"));
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $data,
|
||
], 200);
|
||
}
|
||
public function get_danger_report_danesh()
|
||
{
|
||
/*$sql = "SELECT * FROM danger_points JOIN danger_point_accidents ON
|
||
danger_points.`id` = danger_point_accidents.`point_id` limit 100";
|
||
$data=DB::select( DB::raw($sql));*/
|
||
$data = DangerPoint::join('danger_point_accidents', 'danger_points.id', '=', 'danger_point_accidents.point_id')
|
||
->get();
|
||
return response()->json([
|
||
'status' => 'succeed',
|
||
'message' => '',
|
||
'data' => $data,
|
||
], 200);
|
||
}
|
||
}
|