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'); } } }