distinct('kode')->get();
return view('admin.pages.pengiriman.data', compact('data','numb'));
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$dusun = Dusun::where('nama', '!=', 'Titik Pusat')->get();
$pengguna = User::where('role', 'Kurir')->get();
$desa = Desa::all();
return view ('admin.pages.pengiriman.create', compact('dusun', 'pengguna', 'desa'));
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$data = $request->all();
$user_id = $data['user_id'];
$id_dusun = $data['id_dusun'];
$tanggal = date('Y-m-d');
// Validasi jumlah id dusun yang dipilih
$jumlah_id_dusun = count($id_dusun);
if ($jumlah_id_dusun < 3 || $jumlah_id_dusun > 7) {
return redirect()->back()->with('error', 'Harap pilih minimal 2 dan maksimal 6 dusun')->withInput();
}
$kode = 'JNT'. rand(1000,9999);
foreach($id_dusun as $item => $value){
$data2 = array(
'kode' => $kode,
'user_id' => $user_id,
'id_dusun' => $value,
'tanggal' => $tanggal
);
// Create a Pengiriman record for each selected dusun
Pengiriman::create($data2);
}
return redirect()->route('pengiriman.edit', ['kode' => $kode])->with('success', 'Data pengiriman berhasil ditambahkan');
}
public function dusun(Request $request){
$id_desa = $request->id_desa;
$dusun = Dusun::where('nama', '!=', 'Titik Pusat')->where('desa_id', $id_desa)->get();
$checkbox = "";
foreach($dusun as $item => $value){
$checkbox .= "
";
$checkbox .= "
";
$checkbox .= "";
$checkbox .= "
";
$checkbox .= "
";
$checkbox .= "
";
}
// Mengembalikan HTML sebagai respons
return $checkbox;
}
/**
* Display the specified resource.
*/
public function show(Pengiriman $pengiriman)
{
//
}
function calculateDistance($lat1, $lon1, $lat2, $lon2) {
$earthRadius = 6371; // Radius bumi dalam kilometer
// Ubah koordinat latitude dan longitude dari derajat menjadi radian
$lat1 = deg2rad($lat1);
$lon1 = deg2rad($lon1);
$lat2 = deg2rad($lat2);
$lon2 = deg2rad($lon2);
// Hitung perbedaan latitude dan longitude
$latDiff = $lat2 - $lat1;
$lonDiff = $lon2 - $lon1;
// Hitung jarak menggunakan rumus Haversine
$a = sin($latDiff / 2) * sin($latDiff / 2) + cos($lat1) * cos($lat2) * sin($lonDiff / 2) * sin($lonDiff / 2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
$distance = $earthRadius * $c;
return $distance; // Jarak dalam kilometer
}
/**
* Show the form for editing the specified resource.
*/
public function edit($kode)
{
$pengiriman = Pengiriman::where('kode', $kode)->join('dusun', 'pengiriman.id_dusun', '=', 'dusun.id')->get();
$perbandingan = [];
$dusunTerpendek = [];
$jarakTerpendek = PHP_INT_MAX;
$numb = 1;
if (count($pengiriman) == 3) {
// Loop untuk mengambil indeks pertama
for ($a = 0; $a < count($pengiriman); $a++) {
// Loop untuk mengambil indeks kedua
for ($b = 0; $b < count($pengiriman); $b++) {
// Loop untuk mengambil indeks ketiga
for ($c = 0; $c < count($pengiriman); $c++) {
// Pastikan bahwa indeks tidak sama
if ($a != $b && $a != $c && $b != $c) if($a == 0) {
// Simpan hasil perbandingan ke dalam array perbandingan
$perbandingan[] = [
'dusun_a' => [
'nama' => $pengiriman[$a]->nama,
'latitude' => $pengiriman[$a]->latitude,
'longitude' => $pengiriman[$a]->longitude,
],
'dusun_b' => [
'nama' => $pengiriman[$b]->nama,
'latitude' => $pengiriman[$b]->latitude,
'longitude' => $pengiriman[$b]->longitude,
],
'dusun_c' => [
'nama' => $pengiriman[$c]->nama,
'latitude' => $pengiriman[$c]->latitude,
'longitude' => $pengiriman[$c]->longitude,
],
];
}
}
}
}
return view('admin.pages.pengiriman.show', compact('perbandingan', 'numb', 'kode'));
} elseif (count($pengiriman) == 4) {
for ($a = 0; $a < count($pengiriman); $a++) {
for ($b = 0; $b < count($pengiriman); $b++) {
for ($c = 0; $c < count($pengiriman); $c++) {
for ($d = 0; $d < count($pengiriman); $d++) {
if ($a != $b && $a != $c && $a != $d && $b != $c && $b != $d && $c != $d) if($a == 0) {
$perbandingan[] = [
'dusun_a' => [
'nama' => $pengiriman[$a]->nama,
'latitude' => $pengiriman[$a]->latitude,
'longitude' => $pengiriman[$a]->longitude,
],
'dusun_b' => [
'nama' => $pengiriman[$b]->nama,
'latitude' => $pengiriman[$b]->latitude,
'longitude' => $pengiriman[$b]->longitude,
],
'dusun_c' => [
'nama' => $pengiriman[$c]->nama,
'latitude' => $pengiriman[$c]->latitude,
'longitude' => $pengiriman[$c]->longitude,
],
'dusun_d' => [
'nama' => $pengiriman[$d]->nama,
'latitude' => $pengiriman[$d]->latitude,
'longitude' => $pengiriman[$d]->longitude,
],
];
}
}
}
}
}
return view('admin.pages.pengiriman.show2', compact('perbandingan', 'numb', 'kode'));
} else if (count($pengiriman) == 5) {
for ($a = 0; $a < count($pengiriman); $a++) {
for ($b = 0; $b < count($pengiriman); $b++) {
for ($c = 0; $c < count($pengiriman); $c++) {
for ($d = 0; $d < count($pengiriman); $d++) {
for ($e = 0; $e < count($pengiriman); $e++) {
if ($a != $b && $a != $c && $a != $d && $a != $e &&
$b != $c && $b != $d && $b != $e &&
$c != $d && $c != $e &&
$d != $e) {
if ($a == 0) {
$perbandingan[] = [
'dusun_a' => [
'nama' => $pengiriman[$a]->nama,
'latitude' => $pengiriman[$a]->latitude,
'longitude' => $pengiriman[$a]->longitude,
],
'dusun_b' => [
'nama' => $pengiriman[$b]->nama,
'latitude' => $pengiriman[$b]->latitude,
'longitude' => $pengiriman[$b]->longitude,
],
'dusun_c' => [
'nama' => $pengiriman[$c]->nama,
'latitude' => $pengiriman[$c]->latitude,
'longitude' => $pengiriman[$c]->longitude,
],
'dusun_d' => [
'nama' => $pengiriman[$d]->nama,
'latitude' => $pengiriman[$d]->latitude,
'longitude' => $pengiriman[$d]->longitude,
],
'dusun_e' => [
'nama' => $pengiriman[$e]->nama,
'latitude' => $pengiriman[$e]->latitude,
'longitude' => $pengiriman[$e]->longitude,
],
];
}
}
}
}
}
}
}
return view('admin.pages.pengiriman.show3', compact('perbandingan', 'numb', 'kode'));
}
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, Pengiriman $pengiriman)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy($kode)
{
// Temukan semua pengiriman dengan kode yang sama
$pengiriman = Pengiriman::where('kode', $kode)->get();
if ($pengiriman->isEmpty()) {
return redirect()->route('pengiriman.index')->with('error', 'Data pengiriman tidak ditemukan');
}
// Hapus semua data pengiriman dengan kode yang sama
$deleted = Pengiriman::where('kode', $kode)->delete();
if ($deleted) {
return redirect()->route('pengiriman.index')->with('success', 'Data pengiriman berhasil dihapus');
} else {
return redirect()->route('pengiriman.index')->with('error', 'Gagal menghapus data pengiriman');
}
}
}