<?php

    namespace Modules\Lpj\Http\Requests;

    use daengdeni\LaravelIdGenerator\IdGenerator;
    use Illuminate\Foundation\Http\FormRequest;

    class PermohonanRequest extends FormRequest
    {
        /**
         * Get the validation rules that apply to the request.
         */
        public function rules()
        : array
        {
            $rules = [
                'nomor_registrasi'          => 'nullable|string|max:10',
                'tanggal_permohonan'        => 'nullable|date',
                'user_id'                   => 'nullable|exists:users,id',
                'branch_id'                 => 'nullable|exists:branches,id',
                'tujuan_penilaian_id'       => 'required|exists:tujuan_penilaian,id',
                'debiture_id'               => 'required|exists:debitures,id',
                'status'                    => 'nullable|string',
                'jenis_fasilitas_kredit_id' => 'required|exists:jenis_fasilitas_kredit,id',
                'nilai_plafond_id'          => 'required|exists:nilai_plafond,id',
                'status_bayar'              => 'nullable|string',
                'nilai_njop'                => 'nullable|numeric'
            ];

            return $rules;
        }

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

        public function prepareForValidation()
        {
            if (!$this->id) {
                $this->merge([
                    'nomor_registrasi'   => IdGenerator::generate(
                        ['table' => 'permohonan', 'length' => 10, 'prefix' => 'REG', 'field' => 'nomor_registrasi'],
                    ),
                    'tanggal_permohonan' => date('Y-m-d'),
                    'user_id'            => auth()->user()->id,
                    'status'             => 'order'
                ]);
            }
        }
    }
