diff --git a/app/Http/Controllers/Admin/AdminController.php b/app/Http/Controllers/Admin/AdminController.php index 8d7ea49..b199a72 100644 --- a/app/Http/Controllers/Admin/AdminController.php +++ b/app/Http/Controllers/Admin/AdminController.php @@ -45,7 +45,7 @@ public function dashboard() $labelHarga = $hargaStabil->pluck('tanggal')->map(function($date) { return \Carbon\Carbon::parse($date)->format('d M'); }); - $dataHarga = $hargaStabil->pluck('rata_harga'); + $dataHarga = $hargaStabil->pluck('rata_harga');//isi grafik return view('admin.dashboard', compact( 'totalPetani', 'totalProduk', 'totalTransaksi', 'transaksiTerbaru', diff --git a/app/Http/Controllers/LandingController.php b/app/Http/Controllers/LandingController.php index d73c462..6a17552 100644 --- a/app/Http/Controllers/LandingController.php +++ b/app/Http/Controllers/LandingController.php @@ -14,8 +14,8 @@ public function index(Request $request) if ($request->has('kategori') && $request->kategori != '' && $request->kategori != 'Semua') { $slug = $request->kategori; - $query->whereHas('kategori', function ($q) use ($slug) { - $q->where('slug', $slug); + $query->whereHas('kategori', function ($q) use ($slug) {//filter berdasarkan relasi kategori + $q->where('slug', $slug);//ambil produk dgn slug tertentu }); } @@ -45,8 +45,8 @@ public function shop(Request $request) // --- FILTER LOKASI --- if ($request->filled('provinsi')) { - $query->whereHas('petani', function($q) use ($request) { - $q->where('provinsi_code', $request->provinsi); + $query->whereHas('petani', function($q) use ($request) {// filter data produk berdasarkan relasi petani + $q->where('provinsi_code', $request->provinsi);// mengambil data produk sesuai dengan provinsi yang dipilih }); } if ($request->filled('kota')) { @@ -71,10 +71,10 @@ public function shop(Request $request) } // Filter Kategori - if ($request->has('kategori') && $request->kategori != '') { - $slug = $request->kategori; + if ($request->has('kategori') && $request->kategori != '') {//memastikan user memilih kategori + $slug = $request->kategori;//ambil kategori berdasarkan slug yg diinptkan $query->whereHas('kategori', function ($q) use ($slug) { - $q->where('slug', $slug); + $q->where('slug', $slug);//ambil produk dhn slug tertentu }); } @@ -110,7 +110,7 @@ public function detail($id) $produk_terkait = Produk::where('kategori_id', $produk->kategori_id) ->where('id', '!=', $produk->id) ->where('stok', '>', 0) - ->inRandomOrder() + ->inRandomOrder()//mengacak urutan data ->take(4) ->get(); diff --git a/app/Http/Controllers/PesanController.php b/app/Http/Controllers/PesanController.php index 783a5ff..5525da2 100644 --- a/app/Http/Controllers/PesanController.php +++ b/app/Http/Controllers/PesanController.php @@ -17,13 +17,13 @@ private function getChatList($user) $q->where('pengirim_id', $user->id)->where('pengirim_type', get_class($user)); })->orWhere(function ($q) use ($user) { $q->where('penerima_id', $user->id)->where('penerima_type', get_class($user)); - })->orderBy('created_at', 'desc')->get(); + })->orderBy('created_at', 'desc')->get();//baru ke lama $conversations = $allMessages->groupBy(function ($pesan) use ($user) { if ($pesan->pengirim_id == $user->id && $pesan->pengirim_type == get_class($user)) { - return $pesan->penerima_type . '_' . $pesan->penerima_id; + return $pesan->penerima_type . '_' . $pesan->penerima_id;//grup bedasarkan penerima(lawan chat) } else { - return $pesan->pengirim_type . '_' . $pesan->pengirim_id; + return $pesan->pengirim_type . '_' . $pesan->pengirim_id;//grup berdasarkan pengirim } }); @@ -54,7 +54,7 @@ private function getChatList($user) }); } - public function index() + public function index()//detail chat { $user = $this->getAuthenticatedUser(); $isPetani = Auth::guard('petani')->check(); @@ -66,29 +66,29 @@ public function index() return view($view, compact('chatList')); } - public function show($id) + public function show($id)//isi chat { $user = $this->getAuthenticatedUser(); $isPetani = Auth::guard('petani')->check(); - // Ambil List Chat juga (untuk Sidebar Kiri) + // Ambil daftar chat (untuk Sidebar Kiri) $chatList = $this->getChatList($user); // Logika Detail Chat (Kanan) - $lawanType = $isPetani ? Pembeli::class : Petani::class; - $lawan = $lawanType::findOrFail($id); + $lawanType = $isPetani ? Pembeli::class : Petani::class;//menentukan lawan chat + $lawan = $lawanType::findOrFail($id);//ambil data lawan chat (id) $chats = Pesan::where(function ($q) use ($user, $lawan, $lawanType) { - $q->where('pengirim_id', $user->id)->where('pengirim_type', get_class($user)) - ->where('penerima_id', $lawan->id)->where('penerima_type', $lawanType); + $q->where('pengirim_id', $user->id)->where('pengirim_type', get_class($user))//ambil pesan yg kirim user + ->where('penerima_id', $lawan->id)->where('penerima_type', $lawanType);//tujuan pesan merupakan lawan chat })->orWhere(function ($q) use ($user, $lawan, $lawanType) { - $q->where('pengirim_id', $lawan->id)->where('pengirim_type', $lawanType) + $q->where('pengirim_id', $lawan->id)->where('pengirim_type', $lawanType)//pesan dikirim oleh lawan ->where('penerima_id', $user->id)->where('penerima_type', get_class($user)); })->orderBy('created_at', 'asc')->get(); // Tandai dibaca - Pesan::where('pengirim_id', $lawan->id)->where('pengirim_type', $lawanType) - ->where('penerima_id', $user->id)->update(['sudah_dibaca' => true]); + Pesan::where('pengirim_id', $lawan->id)->where('pengirim_type', $lawanType)//ambil pesan yg dikirim oleh lawan + ->where('penerima_id', $user->id)->update(['sudah_dibaca' => true]);//dimana penerima adalah user yg sedang login $view = $isPetani ? 'petani.pesan.show' : 'landing.pesan.show'; diff --git a/app/Http/Controllers/Petani/ProdukController.php b/app/Http/Controllers/Petani/ProdukController.php index b5ed3ed..8843188 100644 --- a/app/Http/Controllers/Petani/ProdukController.php +++ b/app/Http/Controllers/Petani/ProdukController.php @@ -82,12 +82,12 @@ public function edit($id) $produk = Produk::with('images')->where('id', $id)->where('petani_id', Auth::guard('petani')->id())->firstOrFail(); $kategoris = Kategori::all(); - $provinsis = Province::all(); - $kotas = City::where('province_code', $produk->provinsi_code)->get(); - $kecamatans = District::where('city_code', $produk->kota_code)->get(); - $desas = Village::where('district_code', $produk->kecamatan_code)->get(); + // $provinsis = Province::all(); + // $kotas = City::where('province_code', $produk->provinsi_code)->get(); + // $kecamatans = District::where('city_code', $produk->kota_code)->get(); + // $desas = Village::where('district_code', $produk->kecamatan_code)->get(); - return view('petani.produk.edit', compact('produk', 'kategoris', 'provinsis', 'kotas', 'kecamatans', 'desas')); + return view('petani.produk.edit', compact('produk', 'kategoris')); } public function update(Request $request, $id) diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index da655e1..52221f7 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -19,7 +19,7 @@ public function editPetani() $user = Auth::guard('petani')->user(); $provinsis = Province::all(); - $kotas = $user->provinsi_code ? City::where('province_code', $user->provinsi_code)->get() : []; + $kotas = $user->provinsi_code ? City::where('province_code', $user->provinsi_code)->get() : [];//memastikan user sdh memilih provinsi, lalu menampilkan semua kota sesuai provinsi $kecamatans = $user->kota_code ? District::where('city_code', $user->kota_code)->get() : []; $desas = $user->kecamatan_code ? Village::where('district_code', $user->kecamatan_code)->get() : []; @@ -53,7 +53,7 @@ public function updatePetani(Request $request) $user->link_maps = $request->link_maps; if ($request->filled('password')) { - $user->password = Hash::make($request->password); + $user->password = Hash::make($request->password);// hash untuk enkripsi pw } if ($request->hasFile('foto')) { diff --git a/app/Http/Controllers/TransaksiController.php b/app/Http/Controllers/TransaksiController.php index 2440535..6a22f62 100644 --- a/app/Http/Controllers/TransaksiController.php +++ b/app/Http/Controllers/TransaksiController.php @@ -42,9 +42,9 @@ public function checkoutPage(Request $request) } // LOGIKA CHECKOUT DARI KERANJANG (Database) - $cartIds = $request->query('cart_ids'); + $cartIds = $request->query('cart_ids');//MENGAMBIL PARAMETER CARD_IDS DARI URL - if (!$cartIds) { + if (!$cartIds) {//mengecek apakah produk pada keranjang ada yg dipilih return redirect()->route('cart')->with('error', 'Pilih minimal satu produk di keranjang untuk dicheckout.'); } @@ -116,7 +116,7 @@ public function prosesCheckout(Request $request) 'subtotal' => $total_harga, ]); - $produk->decrement('stok', $request->jumlah); + $produk->decrement('stok', $request->jumlah);//mengurangi stok } else { // --- LOGIKA KERANJANG (DATABASE) --- @@ -124,19 +124,19 @@ public function prosesCheckout(Request $request) throw new \Exception("ID keranjang tidak ditemukan."); } - $cartIds = explode(',', $request->cart_ids); + $cartIds = explode(',', $request->cart_ids);//ubah teks menjadi array $cartItems = Cart::with('produk') - ->whereIn('id', $cartIds) - ->where('pembeli_id', $pembeli_id) + ->whereIn('id', $cartIds)//ambil data cart dengan id + ->where('pembeli_id', $pembeli_id)//hanya ambil cart milik user yg sedang login ->get(); - $groupedByPetani = []; - foreach ($cartItems as $item) { - $groupedByPetani[$item->produk->petani_id][] = $item; + $groupedByPetani = [];//membuat array kosong untuk menyimpan data + foreach ($cartItems as $item) {//melakukan perulangan dengan memproses item satu persatu + $groupedByPetani[$item->produk->petani_id][] = $item;//mengambil id petani dari produk kemudian dikelompokkan (itek dikelompokkan) } - foreach ($groupedByPetani as $petani_id => $items) { + foreach ($groupedByPetani as $petani_id => $items) {//memproses data per petani satu persatu berdasarkan id petani $transaksi = Transaksi::create([ 'pembeli_id' => $pembeli_id, 'petani_id' => $petani_id, @@ -160,7 +160,7 @@ public function prosesCheckout(Request $request) 'subtotal' => $total_per_item, ]); - $item->produk->decrement('stok', $item->quantity); + $item->produk->decrement('stok', $item->quantity);//mengurangi stok } // Update total harga transaksi per petani @@ -233,7 +233,7 @@ public function updateStatus(Request $request, $id) // Jika dibatalkan, kembalikan stok produk if ($request->status == 'batal') { foreach ($transaksi->detailTransaksis as $detail) { - $detail->produk->increment('stok', $detail->jumlah); + $detail->produk->increment('stok', $detail->jumlah);//menambah atau mengembalikan stok } } @@ -245,7 +245,7 @@ public function pesananDetail($id) { $petaniId = Auth::guard('petani')->id(); - $pesanan = Transaksi::whereHas('detailTransaksis.produk', function ($q) use ($petaniId) { + $pesanan = Transaksi::whereHas('detailTransaksis.produk', function ($q) use ($petaniId) {//ambil data transaksi yang hanya dimiliki petani yg sedang login $q->where('petani_id', $petaniId); }) ->with(['pembeli', 'detailTransaksis.produk']) diff --git a/resources/views/admin/dashboard.blade.php b/resources/views/admin/dashboard.blade.php index ffa569a..a912caf 100644 --- a/resources/views/admin/dashboard.blade.php +++ b/resources/views/admin/dashboard.blade.php @@ -179,8 +179,8 @@ type: 'bar', data: { - labels: labelMultiline, - datasets: [{ + labels: labelMultiline, //nama produk(x) + datasets: [{//isi grafik(y) label: 'Total Terjual', data: dataTerlaris, backgroundColor: 'rgba(129, 196, 8, 0.8)', @@ -227,10 +227,10 @@ new Chart(ctxHarga, { type: 'line', data: { - labels: {!! json_encode($labelHarga) !!}, + labels: {!! json_encode($labelHarga) !!},// sumbu x (tanggal) datasets: [{ label: 'Rata-rata Harga', - data: {!! json_encode($dataHarga) !!}, + data: {!! json_encode($dataHarga) !!},//sumbu y (daftar harga) backgroundColor: 'rgba(54, 162, 235, 0.1)', borderColor: '#36A2EB', borderWidth: 2, diff --git a/resources/views/landing/detail.blade.php b/resources/views/landing/detail.blade.php index 940762a..9732bee 100644 --- a/resources/views/landing/detail.blade.php +++ b/resources/views/landing/detail.blade.php @@ -116,7 +116,7 @@ class="badge bg-primary bg-opacity-10 px-3 py-2 rounded-pill fw-bold border bord class="btn btn-light border-danger text-danger border fw-bold mb-4 w-100 text-start shadow-sm" style="border-radius: 10px;"> - Lihat Lokasi Lahan di Google Maps + Lihat Lokasi di Google Lahan Maps @endif