<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use App\Usuario;

class UsuarioRequest extends FormRequest
{
    public function authorize(){
        return true;
    }


    public function rules(){

        if(isset($this->id)){ // Cuando es una actualizacion
            return [
                'id_rol' => "min:1|max:40",
                'nom_usuario' => "min:5|max:25|regex:/^[0-9a-z.]+$/u|unique:mysql.usuario,nom_usuario,".$this->id.",id_usuario",
                'nombres' => "min:3|max:60|string",
                'apellidos' => "min:3|max:60|string",
                'password' => "min:8|max:30|regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d])(?=.*[!$#%\.\*]).*$/|confirmed",
                'correo' => "email|min:10|max:100|unique:mysql.usuario,correo,".$this->id.",id_usuario",
                'super_admin_id' => "min:0|max:100"
            ];
        } else { // Cuando es un registro
            return [
                'id_rol' => "required|min:1|max:40",
                'nom_usuario' => "required|unique:mysql.usuario,nom_usuario|min:5|max:25|regex:/^[0-9a-z.]+$/u",
                'nit' => "required|unique:mysql.usuario,nit",
                'nombres' => "required|min:3|max:60|string",
                'apellidos' => "required|min:3|max:60|string",
                'password' => "required|min:8|max:30|regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d])(?=.*[!$#%\.\*]).*$/|confirmed",
                'correo' => "required|email|min:10|max:100|unique:mysql.usuario,correo",
                'super_admin_id' => "min:0|max:100"
            ];
        }
    }


    public function attributes(){
        return [
            'nom_usuario' => 'nombre de usuario',
            'password' => 'contraseña',
            'nit' => 'identificador',
            'nombres' => 'nombres',
            'apellidos' => 'apellidos',
            'correo' => 'correo electrónico',
            'super_admin_id' => 'cliente',
            'id_rol' => 'rol usuario'
        ];
    }

    public function messages(){
        return [
            'id_rol.numeric' => 'El campo debe ser un identificador válido',
            'id_rol.required' => 'El campo es obligatorio',
            'nit.unique' => 'El campo nit deberia ser unico',
            'nit.required' => 'El campo nit es obligatorio',
            'nom_usuario.required' => 'El campo es obligatorio',
            'password.required' => 'El campo es obligatorio',
            'correo.required' => 'El campo es obligatorio',
            'nombres.required' => 'El campo es obligatorio',
            'apellidos.required' => 'El campo es obligatorio',
            'password.min' => 'La contraseña debe tener mínimo 8 carácteres de longitud',
            'password.max' => 'La contraseña debe tener máximo 30 carácteres de longitud',
            'nom_usuario.unique' => 'El nombre de usuario ya se encuentra en uso',
            'correo.unique' => 'El correo electrónico ya se encuentra en uso',
            "nom_usuario.regex" => "El nombre de usuario sólo puede contener letras en minúscula, números y puntos",
            "password.regex" => "La contraseña debe contener mínimo 3 letras entre mayúsculas y minúsculas, un número y un carácter especial"
        ];
    }
}
