refactor BerandaController, HistoriPesananController, ManajemenAdminController, and PesananFotoController to remove commented code and improve readability
This commit is contained in:
parent
c6155e840c
commit
1c6a4d136c
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ public function index()
|
|||
|
||||
$riwayatFoto = BookingFoto::whereIn('status_booking', ['selesai', 'ditolak'])
|
||||
->latest()->get();
|
||||
|
||||
return view('admin.pesanan.riwayat', compact('riwayatBuket', 'riwayatFoto'));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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!');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue