<?php

namespace App\Http\Controllers\Admin;

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

class PesananBuketController extends Controller
{
    public function index()
    {
        $pesanan = TransaksiBuket::with(['pelanggan'])
            ->where('status_transaksi', 'menunggu_verifikasi')
            ->latest()
            ->get();

        return view('admin.pesanan.buket', compact('pesanan'));
    }

    public function updateStatus(Request $request, $id)
    {
        try {
            // 1. Ambil data dengan relasi
            $pesanan = \App\Models\TransaksiBuket::with(['pelanggan', 'buket'])->findOrFail($id);

            // 2. Tentukan status & session flash sekaligus agar tidak dobel
            if ($request->jenis === 'terima') {
                $status = 'diterima';
                session()->flash('success', "Pesanan #{$pesanan->no_invoice} telah diterima!"); // Alert Hijau
            } else {
                $status = 'ditolak';
                session()->flash('error', "Pesanan #{$pesanan->no_invoice} telah ditolak!"); // Alert Merah
            }

            // 3. Update database
            $pesanan->update(['status_transaksi' => $status]);

            // 4. Siapkan Data untuk Pesan WA
            $nama = $pesanan->pelanggan->nama; // Pastikan kolomnya 'nama', bukan 'nama_lengkap'
            $produk = $pesanan->buket->nama;
            $tgl_obj = \Carbon\Carbon::parse($pesanan->tgl_ambil)->locale('id');
            $tanggal = $tgl_obj->translatedFormat('l, d F Y');
            $waktu = $tgl_obj->format('H:i');

            $total = number_format($pesanan->total_bayar, 0, ',', '.');
            $req = $pesanan->request ?? '-';
            $ucapan = $pesanan->ucapan ?? '-';
            $invoice = $pesanan->no_invoice;

            // 5. Susun Pesan berdasarkan kondisi
            if ($status === 'diterima') {
                $msg = "Halo Kak *{$nama}*,\n\n" .
                    "Pesanan Anda dengan Nomor Invoice: *#{$invoice}* telah kami *TERIMA* dan masuk dalam daftar proses pengerjaan.\n\n" .
                    "*Rincian Pesanan:*\n" .
                    "- *Produk:* {$produk}\n" .
                    "- *Total Bayar:* Rp {$total}\n" .
                    "- *Request:* {$req}\n" .
                    "- *Ucapan:* \"{$ucapan}\"\n" .
                    "- *Waktu Pengambilan:* {$tanggal} pukul {$waktu} WIB\n\n" .
                    "Mohon simpan rincian ini dan ditunggu info selanjutnya ya Kak. Terima kasih! ✨";
            } else {
                $msg = "Halo Kak *{$nama}*,\n\n" .
                    "Mengenai pesanan Anda dengan Nomor Invoice: *#{$invoice}* terpaksa kami *TOLAK* dikarenakan:\n\n" .
                    "*[TULIS ALASAN DI SINI]*\n\n" .
                    "*Rincian Pesanan:*\n" .
                    "- *Produk:* {$produk}\n" .
                    "- *Total Bayar:* Rp {$total}\n" .
                    "- *Waktu Pengambilan:* {$tanggal}\n\n" .
                    "Admin kami akan segera menghubungi Kakak terkait proses pengembalian dana. Mohon maaf atas ketidaknyamanannya.";
            }

            // 6. Format Nomor WhatsApp
            $no_wa = preg_replace('/[^0-9]/', '', $pesanan->pelanggan->no_wa); // Pastikan kolomnya '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;
            }

            // 7. Kembalikan Response JSON
            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);
        }
    }
}
