<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\BookingFoto;
use Illuminate\Http\Request;

class PesananFotoController extends Controller
{
    public function index()
    {
        $pesanan = BookingFoto::with([
            'pelanggan',           // Untuk ambil Nama & No HP
            'paketFoto',          // Untuk ambil Nama Paket (misal: Paket Wisuda)
            'detailAdditional.additional' // Lanjut ambil Nama Additional (misal: Background, Orang Tambahan)
        ])
            ->where('status_booking', 'menunggu_verifikasi')
            ->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!");
            } else {
                $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) {
                    $list_additional .= "- " . $item->additional->nama . " (x" . $item->qty . ")\n";
                }
            } else {
                $list_additional = "- Tidak ada tambahan\n";
            }

            // 6. Susun Pesan WA
            if ($status === 'diterima') {
                $msg = "Halo Kak *{$nama}* ,\n\n" .
                    "Booking foto Anda dengan Invoice: *#{$invoice}* telah kami *TERIMA*. \n\n" .
                    "*Rincian Booking:*\n" .
                    "- *Paket:* {$paket}\n" .
                    "*Tambahan:*\n{$list_additional}" .
                    "- *Total Bayar:* Rp {$total}\n\n" .
                    "*Jadwal Sesi Foto:*\n" .
                    " Tanggal: {$tanggal}\n" .
                    " Jam: {$jam_mulai} - {$jam_selesai} WIB\n\n" .
                    "Mohon datang 15 menit sebelum jadwal dimulai ya Kak. Sampai jumpa di studio! ";
            } else {
                $msg = "Halo Kak *{$nama}*,\n\n" .
                    "Mohon maaf, booking foto Anda dengan Invoice *#{$invoice}* terpaksa kami *TOLAK* dikarenakan:\n\n" .
                    "*[TULIS ALASAN DI SINI]*\n\n" .
                    "*Rincian Booking:*\n" .
                    "- *Paket:* {$paket}\n" .
                    "*Tambahan:*\n{$list_additional}" .
                    "- *Total Bayar:* Rp {$total}\n" .
                    "- *Jadwal Sesi:* {$tanggal} ({$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)
            $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;
            }

            return response()->json([
                'success' => true,
                'wa_url' => "https://wa.me/{$no_wa}?text=" . urlencode($msg)
            ]);
        } catch (\Exception $e) {
            return response()->json(['success' => false, 'message' => $e->getMessage()], 500);
        }
    }
}
