/home/mip/mip/app/Modules/Client/Requests/Subject/SubjectRequest.php
<?php

namespace QxCMS\Modules\Client\Requests\Subject;

use Illuminate\Foundation\Http\FormRequest;

class SubjectRequest 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()
    {
        $client = auth('client')->user()->client;
        $dateformat = $client->date_picker;
        $field_officer_assigned = $this->input('field_officer_assigned');
        $template_id = $this->input('template_id');
        $principal_id = $this->input('principal_id');
        return [
            'name' => 'required',
            'principal_id' => 'required',
            'template_id' => 'required',
            'field_officer_assigned' => 'required|unique:client.survey_subjects,field_officer_assigned,'.(($this->getId()) ? $this->getId():'NULL').',id,template_id,'.$template_id.',principal_id,'.$principal_id,
            'editor_assigned' => 'required',
            'interview_date' => 'required|date_format:'.$dateformat['php'],
            //'completion_date' => 'required|date_format:'.$dateformat['php'],

        ];
    }

    public function messages()
    {
        return [
            'name.required' => 'The <i>Subject Name</i> field is required.',
            'principal_id.required' => 'The <i>Client Assignment</> field is required.',
            'template_id.required' => 'The <i><em>Questionnaire Assigned</em></i> field is required.',
            'field_officer_assigned.required' => 'The <i><em>Field Officer Assigned</em></i> field is required.',
            'field_officer_assigned.unique' => 'This field officer is already assigned to same client and questionnaire.',
            'editor_assigned.required' => 'The <i><em>Editor Assigned</em></i> field is required.',
            'completion_date' => 'The <i><em>Interview Date Completion</em></i> field is required.'
        ];
    }


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