refactor BerandaController, HistoriPesananController, ManajemenAdminController, and PesananFotoController to remove commented code and improve readability

This commit is contained in:
LailaWulandarii 2026-01-18 16:52:18 +07:00
parent c6155e840c
commit 1c6a4d136c
4 changed files with 0 additions and 52 deletions

View File

@ -15,14 +15,10 @@ public function index()
$now = Carbon::now();
$lastMonth = Carbon::now()->subMonth();
$today = Carbon::today();
// Fungsi pembantu untuk hitung pertumbuhan (%)
$getGrowth = function ($current, $previous) {
if ($previous <= 0) return $current > 0 ? 100 : 0;
return round((($current - $previous) / $previous) * 100, 1);
};
// --- 1. HITUNG DATA BULAN INI ---
$currPendapatan = TransaksiBuket::whereMonth('created_at', $now->month)->whereYear('created_at', $now->year)->where('status_transaksi', 'diterima')->sum('total_bayar') +
BookingFoto::whereMonth('created_at', $now->month)->whereYear('created_at', $now->year)->where('status_booking', 'diterima')->sum('total_bayar');
@ -34,8 +30,6 @@ public function index()
$currBatal = TransaksiBuket::whereMonth('created_at', $now->month)->whereYear('created_at', $now->year)->where('status_transaksi', 'ditolak')->count() +
BookingFoto::whereMonth('created_at', $now->month)->whereYear('created_at', $now->year)->where('status_booking', 'ditolak')->count();
// --- 2. HITUNG DATA BULAN LALU (Untuk Perbandingan %) ---
$prevPendapatan = TransaksiBuket::whereMonth('created_at', $lastMonth->month)->whereYear('created_at', $lastMonth->year)->where('status_transaksi', 'diterima')->sum('total_bayar') +
BookingFoto::whereMonth('created_at', $lastMonth->month)->whereYear('created_at', $lastMonth->year)->where('status_booking', 'diterima')->sum('total_bayar');
@ -47,26 +41,18 @@ public function index()
$prevBatal = TransaksiBuket::whereMonth('created_at', $lastMonth->month)->whereYear('created_at', $lastMonth->year)->where('status_transaksi', 'ditolak')->count() +
BookingFoto::whereMonth('created_at', $lastMonth->month)->whereYear('created_at', $lastMonth->year)->where('status_booking', 'ditolak')->count();
// --- 3. SUSUN ARRAY STATISTIK ---
$stat = [
'pendapatan' => $currPendapatan,
'pendapatan_grow' => $getGrowth($currPendapatan, $prevPendapatan),
'masuk_count' => $currMasuk,
'masuk_grow' => $getGrowth($currMasuk, $prevMasuk),
'selesai_count' => $currSelesai,
'selesai_grow' => $getGrowth($currSelesai, $prevSelesai),
'batal_count' => $currBatal,
'batal_grow' => $getGrowth($currBatal, $prevBatal),
];
// --- 4. JADWAL & PENDING ---
$buketToday = TransaksiBuket::with(['pelanggan', 'buket'])->whereDate('tgl_ambil', $today)->where('status_transaksi', 'diterima')->get();
$fotoToday = BookingFoto::with(['pelanggan', 'paketFoto'])->whereDate('tgl_booking', $today)->where('status_booking', 'diterima')->orderBy('jam_mulai', 'asc')->get();
$pesananBuket = TransaksiBuket::with(['pelanggan', 'buket'])->where('status_transaksi', 'menunggu_verifikasi')->latest()->get();
$pesananFoto = BookingFoto::with(['pelanggan', 'paketFoto'])->where('status_booking', 'menunggu_verifikasi')->latest()->get();

View File

@ -16,7 +16,6 @@ public function index()
$riwayatFoto = BookingFoto::whereIn('status_booking', ['selesai', 'ditolak'])
->latest()->get();
return view('admin.pesanan.riwayat', compact('riwayatBuket', 'riwayatFoto'));
}
}

View File

@ -24,19 +24,14 @@ public static function middleware(): array
}),
];
}
/**
* Display a listing of the resource.
*/
public function index()
{
$admin = User::where('role', '!=', 'pemilik')
->latest()
->get();
// 2. Kirim data ($buket) ke view
return view('admin.kelola-admin.index', compact('admin'));
}
// --- Bagian STORE ---
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
@ -47,7 +42,6 @@ public function store(Request $request)
'role' => 'required|in:admin_foto,admin_buket',
'alamat' => 'required|string|max:255',
], [
// Detail Pesan Menggunakan :attribute
'required' => 'Kolom :attribute wajib diisi.',
'unique' => ':attribute sudah terdaftar di sistem, gunakan yang lain.',
'min' => ':attribute minimal harus berisi :min karakter.',
@ -58,7 +52,6 @@ public function store(Request $request)
'alpha_dash' => ':attribute hanya boleh berisi huruf, angka, serta simbol - dan _',
'in' => ':attribute yang dipilih tidak sesuai dengan pilihan yang tersedia.',
], [
// Alias untuk :attribute agar pesan lebih rapi dibaca
'nama' => 'nama lengkap',
'username' => 'username',
'email' => 'alamat email',
@ -72,7 +65,6 @@ public function store(Request $request)
->withInput()
->with('error_modal', 'create');
}
User::create([
'nama' => $request->nama,
'username' => $request->username,
@ -82,7 +74,6 @@ public function store(Request $request)
'alamat' => $request->alamat,
'password' => Hash::make($request->username),
]);
return redirect()->back()->with('success', 'Admin berhasil ditambahkan!');
}
@ -90,7 +81,6 @@ public function store(Request $request)
public function update(Request $request, string $id)
{
$admin = User::findOrFail($id);
$validator = Validator::make($request->all(), [
'nama' => 'required|string|min:5|max:100',
'username' => 'required|string|alpha_dash|max:50|unique:users,username,' . $id . ',id_user',
@ -99,7 +89,6 @@ public function update(Request $request, string $id)
'role' => 'required|in:admin_foto,admin_buket',
'alamat' => 'required|string|max:255',
], [
// Detail Pesan Menggunakan :attribute
'required' => 'Kolom :attribute wajib diisi.',
'unique' => ':attribute sudah terdaftar di sistem, gunakan yang lain.',
'min' => ':attribute minimal harus berisi :min karakter.',
@ -110,7 +99,6 @@ public function update(Request $request, string $id)
'alpha_dash' => ':attribute hanya boleh berisi huruf, angka, serta simbol - dan _',
'in' => ':attribute yang dipilih tidak sesuai dengan pilihan yang tersedia.',
], [
// Alias untuk :attribute agar pesan lebih rapi dibaca
'nama' => 'nama lengkap',
'username' => 'username',
'email' => 'alamat email',
@ -124,10 +112,7 @@ public function update(Request $request, string $id)
->withInput()
->with('error_id', $id);
}
// Menggunakan update hanya pada kolom yang diizinkan (mencegah injeksi role owner)
$admin->update($request->only(['nama', 'username', 'email', 'no_wa', 'role', 'alamat']));
return redirect()->back()->with('success', 'Data berhasil diperbarui!');
}

View File

@ -18,17 +18,13 @@ public function index()
->whereIn('status_booking', ['menunggu_verifikasi', 'diterima'])
->latest()
->get();
return view('admin.pesanan.foto', compact('pesanan'));
}
public function updateStatus(Request $request, $id)
{
try {
// 1. Ambil data dengan relasi lengkap (Eager Loading)
$pesanan = \App\Models\BookingFoto::with(['pelanggan', 'paketFoto', 'detailAdditional.additional'])->findOrFail($id);
// 2. Tentukan status & session flash
if ($request->jenis === 'terima') {
$status = 'diterima';
session()->flash('success', "Booking {$pesanan->no_invoice} telah diterima!");
@ -39,24 +35,15 @@ public function updateStatus(Request $request, $id)
$status = 'ditolak';
session()->flash('error', "Booking {$pesanan->no_invoice} telah ditolak!");
}
// 3. Update database (Pastikan nama kolom status_booking sesuai migrasimu)
$pesanan->update(['status_booking' => $status]);
// 4. Siapkan Data Dasar
$nama = $pesanan->pelanggan->nama;
$paket = $pesanan->paketFoto->nama;
$tgl_obj = \Carbon\Carbon::parse($pesanan->tgl_booking)->locale('id');
$tanggal = $tgl_obj->translatedFormat('l, d F Y');
// Jam mulai dan selesai
$jam_mulai = \Carbon\Carbon::parse($pesanan->jam_mulai)->format('H:i');
$jam_selesai = \Carbon\Carbon::parse($pesanan->jam_selesai)->format('H:i');
$total = number_format($pesanan->total_bayar, 0, ',', '.');
$invoice = $pesanan->no_invoice;
// 5. Olah Data Additional untuk list di WA
$list_additional = "";
if ($pesanan->detailAdditional->count() > 0) {
foreach ($pesanan->detailAdditional as $item) {
@ -65,8 +52,6 @@ public function updateStatus(Request $request, $id)
} else {
$list_additional = "- Tidak ada additional\n";
}
// 6. Susun Pesan WA
$msg = null;
if ($status === 'diterima') {
$msg = "Halo Kak *{$nama}* ,\n\n" .
@ -92,23 +77,16 @@ public function updateStatus(Request $request, $id)
" Jam: {$jam_mulai} - {$jam_selesai} WIB\n\n" .
"Admin kami akan segera menghubungi Kakak untuk info pengembalian dana atau penjadwalan ulang. Terima kasih. ";
}
// 7. Format Nomor WhatsApp (Sesuaikan kolom: no_hp / no_wa)
$wa_url = null;
if ($msg) {
$no_wa = preg_replace('/[^0-9]/', '', $pesanan->pelanggan->no_wa);
if (str_starts_with($no_wa, '0')) {
$no_wa = '62' . substr($no_wa, 1);
} elseif (str_starts_with($no_wa, '8')) {
$no_wa = '62' . $no_wa;
}
$wa_url = "https://wa.me/{$no_wa}?text=" . urlencode($msg);
}
return response()->json([
'success' => true,
'wa_url' => $wa_url