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();
|
$now = Carbon::now();
|
||||||
$lastMonth = Carbon::now()->subMonth();
|
$lastMonth = Carbon::now()->subMonth();
|
||||||
$today = Carbon::today();
|
$today = Carbon::today();
|
||||||
|
|
||||||
// Fungsi pembantu untuk hitung pertumbuhan (%)
|
|
||||||
$getGrowth = function ($current, $previous) {
|
$getGrowth = function ($current, $previous) {
|
||||||
if ($previous <= 0) return $current > 0 ? 100 : 0;
|
if ($previous <= 0) return $current > 0 ? 100 : 0;
|
||||||
return round((($current - $previous) / $previous) * 100, 1);
|
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') +
|
$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');
|
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() +
|
$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();
|
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') +
|
$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');
|
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() +
|
$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();
|
BookingFoto::whereMonth('created_at', $lastMonth->month)->whereYear('created_at', $lastMonth->year)->where('status_booking', 'ditolak')->count();
|
||||||
|
|
||||||
// --- 3. SUSUN ARRAY STATISTIK ---
|
|
||||||
$stat = [
|
$stat = [
|
||||||
'pendapatan' => $currPendapatan,
|
'pendapatan' => $currPendapatan,
|
||||||
'pendapatan_grow' => $getGrowth($currPendapatan, $prevPendapatan),
|
'pendapatan_grow' => $getGrowth($currPendapatan, $prevPendapatan),
|
||||||
|
|
||||||
'masuk_count' => $currMasuk,
|
'masuk_count' => $currMasuk,
|
||||||
'masuk_grow' => $getGrowth($currMasuk, $prevMasuk),
|
'masuk_grow' => $getGrowth($currMasuk, $prevMasuk),
|
||||||
|
|
||||||
'selesai_count' => $currSelesai,
|
'selesai_count' => $currSelesai,
|
||||||
'selesai_grow' => $getGrowth($currSelesai, $prevSelesai),
|
'selesai_grow' => $getGrowth($currSelesai, $prevSelesai),
|
||||||
|
|
||||||
'batal_count' => $currBatal,
|
'batal_count' => $currBatal,
|
||||||
'batal_grow' => $getGrowth($currBatal, $prevBatal),
|
'batal_grow' => $getGrowth($currBatal, $prevBatal),
|
||||||
];
|
];
|
||||||
|
|
||||||
// --- 4. JADWAL & PENDING ---
|
|
||||||
$buketToday = TransaksiBuket::with(['pelanggan', 'buket'])->whereDate('tgl_ambil', $today)->where('status_transaksi', 'diterima')->get();
|
$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();
|
$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();
|
$pesananBuket = TransaksiBuket::with(['pelanggan', 'buket'])->where('status_transaksi', 'menunggu_verifikasi')->latest()->get();
|
||||||
$pesananFoto = BookingFoto::with(['pelanggan', 'paketFoto'])->where('status_booking', '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'])
|
$riwayatFoto = BookingFoto::whereIn('status_booking', ['selesai', 'ditolak'])
|
||||||
->latest()->get();
|
->latest()->get();
|
||||||
|
|
||||||
return view('admin.pesanan.riwayat', compact('riwayatBuket', 'riwayatFoto'));
|
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()
|
public function index()
|
||||||
{
|
{
|
||||||
$admin = User::where('role', '!=', 'pemilik')
|
$admin = User::where('role', '!=', 'pemilik')
|
||||||
->latest()
|
->latest()
|
||||||
->get();
|
->get();
|
||||||
// 2. Kirim data ($buket) ke view
|
|
||||||
return view('admin.kelola-admin.index', compact('admin'));
|
return view('admin.kelola-admin.index', compact('admin'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Bagian STORE ---
|
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
$validator = Validator::make($request->all(), [
|
$validator = Validator::make($request->all(), [
|
||||||
|
|
@ -47,7 +42,6 @@ public function store(Request $request)
|
||||||
'role' => 'required|in:admin_foto,admin_buket',
|
'role' => 'required|in:admin_foto,admin_buket',
|
||||||
'alamat' => 'required|string|max:255',
|
'alamat' => 'required|string|max:255',
|
||||||
], [
|
], [
|
||||||
// Detail Pesan Menggunakan :attribute
|
|
||||||
'required' => 'Kolom :attribute wajib diisi.',
|
'required' => 'Kolom :attribute wajib diisi.',
|
||||||
'unique' => ':attribute sudah terdaftar di sistem, gunakan yang lain.',
|
'unique' => ':attribute sudah terdaftar di sistem, gunakan yang lain.',
|
||||||
'min' => ':attribute minimal harus berisi :min karakter.',
|
'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 _',
|
'alpha_dash' => ':attribute hanya boleh berisi huruf, angka, serta simbol - dan _',
|
||||||
'in' => ':attribute yang dipilih tidak sesuai dengan pilihan yang tersedia.',
|
'in' => ':attribute yang dipilih tidak sesuai dengan pilihan yang tersedia.',
|
||||||
], [
|
], [
|
||||||
// Alias untuk :attribute agar pesan lebih rapi dibaca
|
|
||||||
'nama' => 'nama lengkap',
|
'nama' => 'nama lengkap',
|
||||||
'username' => 'username',
|
'username' => 'username',
|
||||||
'email' => 'alamat email',
|
'email' => 'alamat email',
|
||||||
|
|
@ -72,7 +65,6 @@ public function store(Request $request)
|
||||||
->withInput()
|
->withInput()
|
||||||
->with('error_modal', 'create');
|
->with('error_modal', 'create');
|
||||||
}
|
}
|
||||||
|
|
||||||
User::create([
|
User::create([
|
||||||
'nama' => $request->nama,
|
'nama' => $request->nama,
|
||||||
'username' => $request->username,
|
'username' => $request->username,
|
||||||
|
|
@ -82,7 +74,6 @@ public function store(Request $request)
|
||||||
'alamat' => $request->alamat,
|
'alamat' => $request->alamat,
|
||||||
'password' => Hash::make($request->username),
|
'password' => Hash::make($request->username),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return redirect()->back()->with('success', 'Admin berhasil ditambahkan!');
|
return redirect()->back()->with('success', 'Admin berhasil ditambahkan!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -90,7 +81,6 @@ public function store(Request $request)
|
||||||
public function update(Request $request, string $id)
|
public function update(Request $request, string $id)
|
||||||
{
|
{
|
||||||
$admin = User::findOrFail($id);
|
$admin = User::findOrFail($id);
|
||||||
|
|
||||||
$validator = Validator::make($request->all(), [
|
$validator = Validator::make($request->all(), [
|
||||||
'nama' => 'required|string|min:5|max:100',
|
'nama' => 'required|string|min:5|max:100',
|
||||||
'username' => 'required|string|alpha_dash|max:50|unique:users,username,' . $id . ',id_user',
|
'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',
|
'role' => 'required|in:admin_foto,admin_buket',
|
||||||
'alamat' => 'required|string|max:255',
|
'alamat' => 'required|string|max:255',
|
||||||
], [
|
], [
|
||||||
// Detail Pesan Menggunakan :attribute
|
|
||||||
'required' => 'Kolom :attribute wajib diisi.',
|
'required' => 'Kolom :attribute wajib diisi.',
|
||||||
'unique' => ':attribute sudah terdaftar di sistem, gunakan yang lain.',
|
'unique' => ':attribute sudah terdaftar di sistem, gunakan yang lain.',
|
||||||
'min' => ':attribute minimal harus berisi :min karakter.',
|
'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 _',
|
'alpha_dash' => ':attribute hanya boleh berisi huruf, angka, serta simbol - dan _',
|
||||||
'in' => ':attribute yang dipilih tidak sesuai dengan pilihan yang tersedia.',
|
'in' => ':attribute yang dipilih tidak sesuai dengan pilihan yang tersedia.',
|
||||||
], [
|
], [
|
||||||
// Alias untuk :attribute agar pesan lebih rapi dibaca
|
|
||||||
'nama' => 'nama lengkap',
|
'nama' => 'nama lengkap',
|
||||||
'username' => 'username',
|
'username' => 'username',
|
||||||
'email' => 'alamat email',
|
'email' => 'alamat email',
|
||||||
|
|
@ -124,10 +112,7 @@ public function update(Request $request, string $id)
|
||||||
->withInput()
|
->withInput()
|
||||||
->with('error_id', $id);
|
->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']));
|
$admin->update($request->only(['nama', 'username', 'email', 'no_wa', 'role', 'alamat']));
|
||||||
|
|
||||||
return redirect()->back()->with('success', 'Data berhasil diperbarui!');
|
return redirect()->back()->with('success', 'Data berhasil diperbarui!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,17 +18,13 @@ public function index()
|
||||||
->whereIn('status_booking', ['menunggu_verifikasi', 'diterima'])
|
->whereIn('status_booking', ['menunggu_verifikasi', 'diterima'])
|
||||||
->latest()
|
->latest()
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
return view('admin.pesanan.foto', compact('pesanan'));
|
return view('admin.pesanan.foto', compact('pesanan'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateStatus(Request $request, $id)
|
public function updateStatus(Request $request, $id)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
// 1. Ambil data dengan relasi lengkap (Eager Loading)
|
|
||||||
$pesanan = \App\Models\BookingFoto::with(['pelanggan', 'paketFoto', 'detailAdditional.additional'])->findOrFail($id);
|
$pesanan = \App\Models\BookingFoto::with(['pelanggan', 'paketFoto', 'detailAdditional.additional'])->findOrFail($id);
|
||||||
|
|
||||||
// 2. Tentukan status & session flash
|
|
||||||
if ($request->jenis === 'terima') {
|
if ($request->jenis === 'terima') {
|
||||||
$status = 'diterima';
|
$status = 'diterima';
|
||||||
session()->flash('success', "Booking {$pesanan->no_invoice} telah diterima!");
|
session()->flash('success', "Booking {$pesanan->no_invoice} telah diterima!");
|
||||||
|
|
@ -39,24 +35,15 @@ public function updateStatus(Request $request, $id)
|
||||||
$status = 'ditolak';
|
$status = 'ditolak';
|
||||||
session()->flash('error', "Booking {$pesanan->no_invoice} telah 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]);
|
$pesanan->update(['status_booking' => $status]);
|
||||||
|
|
||||||
// 4. Siapkan Data Dasar
|
|
||||||
$nama = $pesanan->pelanggan->nama;
|
$nama = $pesanan->pelanggan->nama;
|
||||||
$paket = $pesanan->paketFoto->nama;
|
$paket = $pesanan->paketFoto->nama;
|
||||||
$tgl_obj = \Carbon\Carbon::parse($pesanan->tgl_booking)->locale('id');
|
$tgl_obj = \Carbon\Carbon::parse($pesanan->tgl_booking)->locale('id');
|
||||||
$tanggal = $tgl_obj->translatedFormat('l, d F Y');
|
$tanggal = $tgl_obj->translatedFormat('l, d F Y');
|
||||||
|
|
||||||
// Jam mulai dan selesai
|
|
||||||
$jam_mulai = \Carbon\Carbon::parse($pesanan->jam_mulai)->format('H:i');
|
$jam_mulai = \Carbon\Carbon::parse($pesanan->jam_mulai)->format('H:i');
|
||||||
$jam_selesai = \Carbon\Carbon::parse($pesanan->jam_selesai)->format('H:i');
|
$jam_selesai = \Carbon\Carbon::parse($pesanan->jam_selesai)->format('H:i');
|
||||||
|
|
||||||
$total = number_format($pesanan->total_bayar, 0, ',', '.');
|
$total = number_format($pesanan->total_bayar, 0, ',', '.');
|
||||||
$invoice = $pesanan->no_invoice;
|
$invoice = $pesanan->no_invoice;
|
||||||
|
|
||||||
// 5. Olah Data Additional untuk list di WA
|
|
||||||
$list_additional = "";
|
$list_additional = "";
|
||||||
if ($pesanan->detailAdditional->count() > 0) {
|
if ($pesanan->detailAdditional->count() > 0) {
|
||||||
foreach ($pesanan->detailAdditional as $item) {
|
foreach ($pesanan->detailAdditional as $item) {
|
||||||
|
|
@ -65,8 +52,6 @@ public function updateStatus(Request $request, $id)
|
||||||
} else {
|
} else {
|
||||||
$list_additional = "- Tidak ada additional\n";
|
$list_additional = "- Tidak ada additional\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
// 6. Susun Pesan WA
|
|
||||||
$msg = null;
|
$msg = null;
|
||||||
if ($status === 'diterima') {
|
if ($status === 'diterima') {
|
||||||
$msg = "Halo Kak *{$nama}* ,\n\n" .
|
$msg = "Halo Kak *{$nama}* ,\n\n" .
|
||||||
|
|
@ -92,23 +77,16 @@ public function updateStatus(Request $request, $id)
|
||||||
" Jam: {$jam_mulai} - {$jam_selesai} WIB\n\n" .
|
" Jam: {$jam_mulai} - {$jam_selesai} WIB\n\n" .
|
||||||
"Admin kami akan segera menghubungi Kakak untuk info pengembalian dana atau penjadwalan ulang. Terima kasih. ";
|
"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;
|
$wa_url = null;
|
||||||
|
|
||||||
if ($msg) {
|
if ($msg) {
|
||||||
$no_wa = preg_replace('/[^0-9]/', '', $pesanan->pelanggan->no_wa);
|
$no_wa = preg_replace('/[^0-9]/', '', $pesanan->pelanggan->no_wa);
|
||||||
|
|
||||||
if (str_starts_with($no_wa, '0')) {
|
if (str_starts_with($no_wa, '0')) {
|
||||||
$no_wa = '62' . substr($no_wa, 1);
|
$no_wa = '62' . substr($no_wa, 1);
|
||||||
} elseif (str_starts_with($no_wa, '8')) {
|
} elseif (str_starts_with($no_wa, '8')) {
|
||||||
$no_wa = '62' . $no_wa;
|
$no_wa = '62' . $no_wa;
|
||||||
}
|
}
|
||||||
|
|
||||||
$wa_url = "https://wa.me/{$no_wa}?text=" . urlencode($msg);
|
$wa_url = "https://wa.me/{$no_wa}?text=" . urlencode($msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'success' => true,
|
'success' => true,
|
||||||
'wa_url' => $wa_url
|
'wa_url' => $wa_url
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue