/home/mip/mip/app/Modules/Client/Requests/Directory/DirectoryRequest.php
<?php

namespace QxCMS\Modules\Client\Requests\Directory;

use Illuminate\Foundation\Http\FormRequest;

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

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name'     => 'required|min:3|unique:client.locations,name,'.($this->getId() ? $this->getId() : NULL).',id',
            'affiliate_id' => 'required_if:category,Directory',
            'tel_no' => 'required',
            'email'    => 'email',
            'street' => 'required_if:category,Directory',
            'barangay' => 'required_if:category,Directory',
            'province_id' => 'required_if:category,Directory',
            'zip_code' => 'numeric',
            'details' => 'required_if:category,Directory',
            'lat' => 'required',
            'lng' => 'required',
        ];
    }

    public function messages()
    {
        return [
            'name.required' => 'Name is required.',
            'tel_no.required' => 'Telephone number is required.',
            'affiliate_id.required_if' => 'Affiliate is required.',
            'street.required_if' => 'Street is required.',
            'barangay.required_if' => 'Barangay is required.',
            'province_id.required_if' => 'Province is required.',
            'lat.required' => 'Latitude is required.',
            'lng.required' => 'Longitude is required.',
        ];
    }

    public function getId()
    {
        return decode($this->id);
    }
}