package com.pas.web;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

public class ValidadorUserForm implements Validator {

	@Override
    public boolean supports(Class<?> clazz) {     
        return UserForm.class.equals(clazz); // clase del bean al que da soporte este validador
    }
	
	@Override
    public void validate(Object target, Errors errors) {
         
		UserForm userForm = (UserForm) target;
         
		// Validar los campos obligatorios
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "field.name.required", 
				"El nombre es obligatorio");
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "lastname", "field.lastname.required", 
				"Los apellidos son obligatorios");
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "username", "field.username.required", 
				"El nombre de usuario es obligatorio");
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "field.password.required", 
				"La constraseña es obligatoria");
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "email", "field.email.required", 
				"El correo electrónico es obligatorio");
//		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "userType", "field.userType.required", 
//				"El tipo de usuario es obligatorio");
		
		 // El campo email debe tener un formato correcto
		validarFormatoEmail(userForm.getEmail(), errors); // valida el correo electrónico por expresión regular
    }
	
	private void validarFormatoEmail (String email, Errors errors) {
        // valida el email por expresión regular, si hay error lo añade a errors
		String regex = "^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(email);
		
		if (!matcher.matches()) {
			errors.rejectValue("email", "field.email.invalid", "El correo electrónico es incorrecto");
		}
    }
}