<?php

namespace App\Http\Requests\User;

use Illuminate\Foundation\Http\FormRequest;

class PesanBuketRequest extends FormRequest
{
    public function authorize(): bool
    {
        return true; // Pastikan ini true agar request diizinkan
    }

    public function rules(): array
    {
        return [
            'id_buket'    => 'required|exists:bukets,id_buket', // Tambahan validasi keamanan
            'nama'        => 'required|string|min:3|max:100',
            'no_wa'       => 'required|numeric|digits_between:10,15',
            'tgl_ambil'   => 'required|date|after_or_equal:today',
            'waktu_ambil' => [
                'required',
                'date_format:H:i',
                'after_or_equal:09:00',
                'before_or_equal:21:00',
            ],
            'bukti_bayar'    => 'required|image|mimes:jpeg,png,jpg|max:2048',
            'request_khusus' => 'nullable|string|max:255',
            'ucapan'         => 'nullable|string|max:500',
        ];
    }

    public function messages(): array
    {
        return [
            'required'       => 'Kolom :attribute wajib diisi.',
            'string'         => 'Input :attribute harus berupa teks valid.',
            'min'            => ':attribute terlalu pendek, minimal :min karakter.',
            'max'            => ':attribute terlalu panjang, maksimal :max karakter.',
            'numeric'        => ':attribute harus berupa angka.',
            'digits_between' => ':attribute harus antara :min sampai :max digit.',
            'date'           => 'Format tanggal pada :attribute tidak valid.',
            'after_or_equal' => ':attribute tidak boleh tanggal yang sudah lewat.',
            'image'          => ':attribute harus berupa file gambar.',
            'mimes'          => 'Format :attribute harus jpeg, png, atau jpg.',
            'bukti_bayar.max'           => 'Ukuran :attribute maksimal adalah 2MB.',
            'waktu_ambil.after_or_equal'  => 'Jam operasional kami mulai pukul 09:00.',
            'waktu_ambil.before_or_equal' => 'Jam operasional kami berakhir pukul 21:00.',
        ];
    }

    public function attributes(): array
    {
        return [
            'nama'        => 'nama pemesan',
            'no_wa'       => 'nomor WhatsApp',
            'tgl_ambil'   => 'tanggal pengambilan',
            'waktu_ambil' => 'waktu pengambilan',
            'bukti_bayar' => 'bukti pembayaran',
            'ucapan'      => 'kartu ucapan',
        ];
    }
}
