83 lines
2.5 KiB
PHP
83 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Lokasi;
|
|
use App\Models\Jalan;
|
|
use App\Models\Kecelakaan;
|
|
|
|
class PemetaaanUserController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$jalan = Jalan::all();
|
|
$kecelakaan = Kecelakaan::with('jalan')->get();
|
|
$groupedKecelakaan = $kecelakaan->groupBy('id_jalan');
|
|
|
|
$data = [];
|
|
|
|
$total_aman = 0;
|
|
$total_rawan = 0;
|
|
$total_sangat_rawan = 0;
|
|
|
|
foreach ($jalan as $j) {
|
|
$id_jalan = $j->id;
|
|
$kejadian = $groupedKecelakaan->get($id_jalan, collect());
|
|
|
|
// Hitung jumlah kejadian berdasarkan tingkat kerawanan
|
|
$jumlah_aman = $kejadian->where('tingkat_kerawanan', 'Aman')->count();
|
|
$jumlah_rawan = $kejadian->where('tingkat_kerawanan', 'Rawan')->count();
|
|
$jumlah_sangat_rawan = $kejadian->where('tingkat_kerawanan', 'Sangat Rawan')->count();
|
|
|
|
// Tentukan status kerawanan berdasarkan jumlah kejadian
|
|
$jumlah_status = [
|
|
'Sangat Rawan' => $jumlah_sangat_rawan,
|
|
'Rawan' => $jumlah_rawan,
|
|
'Aman' => $jumlah_aman,
|
|
];
|
|
|
|
// Temukan nilai maksimum dari array
|
|
$max_value = max($jumlah_status);
|
|
|
|
// Temukan status yang sesuai dengan nilai maksimum
|
|
$status_kerawanan = array_search($max_value, $jumlah_status);
|
|
|
|
// Update the total counts based on the final status_kerawanan
|
|
if ($status_kerawanan == 'Aman') {
|
|
$total_aman++;
|
|
} elseif ($status_kerawanan == 'Rawan') {
|
|
$total_rawan++;
|
|
} elseif ($status_kerawanan == 'Sangat Rawan') {
|
|
$total_sangat_rawan++;
|
|
}
|
|
|
|
// Tambahkan data ke array data
|
|
$data[] = [
|
|
'nama_jalan' => $j->nama_jalan,
|
|
'status_kerawanan' => $status_kerawanan
|
|
];
|
|
}
|
|
|
|
return view('users.pemetaan.index', [
|
|
'data' => $data,
|
|
'jalan' => $jalan,
|
|
'kecelakaan' => $kecelakaan,
|
|
'total_aman' => $total_aman,
|
|
'total_rawan' => $total_rawan,
|
|
'total_sangat_rawan' => $total_sangat_rawan
|
|
]);
|
|
}
|
|
|
|
//detail
|
|
public function detail($id)
|
|
{
|
|
$data = Kecelakaan::where('id', $id)->with(['rules', 'jalan'])->first();
|
|
|
|
//return to view
|
|
return view('users.pemetaan.detail', [
|
|
'data' => $data,
|
|
|
|
]);
|
|
}
|
|
} |