<?php

namespace Modules\Lpj\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class ProsesPenawaranRequest extends FormRequest
{
    /**
     * Get the validation rules that apply to the request.
     */
    public function rules(): array
    {
        $rules = [
            'kjpp.*' => 'exists:kjpp,id',
            'tujuan_penilaian_kjpp_id' => 'required',
            'jenis_laporan_id' => 'required',
            'start_date' => 'required',
            'end_date' => 'required',
            'catatan' => 'nullable'
        ];

        // if ($this->method() == 'PUT') {
        //    $rules['code'] = 'required|max:50';
        // } else {
        //    $rules['code'] = 'required|max:50|unique:penawaran,code';
        // }

        return $rules;
    }

    /**
     * Determine if the user is authorized to make this request.
     */
    public function authorize(): bool
    {
        return true;
    }

    public function messages(): array
    {
        return [
            'code.required' => 'Kode Penawaran Wajib diisi!',
            'code.max' => 'Kode Penawaran maksimal 255 huruf!',
            'code.unique' => 'Kode Penawaran tidak boleh sama!',
            'tujuan_penilaian_kjpp_id.required' => 'Tujuan Penilaian KJPP Wajib diisi!',
            'jenis_laporan_id.required' => 'Jenis Laporan Wajib diisi!',
            'start_date.required' => 'Tanggal Awal Wajib diisi!',
            'end_date.required' => 'Tanggal Akhir Wajib diisi!',
        ];
    }

    public function withValidator($validator)
    {
        $validator->after(function ($validator) {
            $startDate = strtotime($this->input('start_date'));
            $endDate = strtotime($this->input('end_date'));
            $today = strtotime(date('Y-m-d'));

            // Jika dalam keadaan tambah penawaran maka munculkan pesan ini
            // if ($this->method() !== 'PUT') {
            //    if ($startDate < $today) {
            //        $validator->errors()->add('start_date', 'Tanggal Awal tidak boleh sebelum hari ini.');
            //    }
            // }

            if ($endDate < $startDate) {
                $validator->errors()->add('end_date', 'Tanggal Akhir tidak boleh lebih awal dari Tanggal Awal.');
            }


            // Validasi minimal 3 pilihan pada nama_kjpp
            $namaKjpp = $this->input('kjpp', []);

            // jika nama KJPP itu kosong
            if (empty($namaKjpp)) {
                $validator->errors()->add('kjpp', 'Nama KJPP wajib diisi.');
            }
            // jika terisi kurang dari 3 item
            elseif (is_array($namaKjpp) && count($namaKjpp) < 3) {
                $validator->errors()->add('kjpp', 'Nama KJPP minimal 3 pilihan.');
            }
        });
    }
}
