<commit_before><?php namespace App;

use Illuminate\Database\Eloquent\Model;

use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Auth\Authenticatable as AuthenticableTrait;

use Auth;
use Validator;
use Hash;
use Request;

class User extends Model implements Authenticatable {

	/*
	| -----------------------------------------
	|	This trait implement abstract methods
	| -----------------------------------------
	|
	*/
	use AuthenticableTrait;

	/*
	| -----------------------------------------
	|	These fields are mass assignables
	| -----------------------------------------
	|
	*/
	protected $fillable = ['firstName','lastName','email','username','password'];

	/*
	| -----------------------------------------
	|	These fields are hidden in response
	| -----------------------------------------
	|
	*/
	protected $hidden = ['password', 'remember_token'];

	/*
	| -----------------------------------------
	|	Validation Rules
	| -----------------------------------------
	|
	*/

	private static $rules = [
		'firstName' => 'required|alpha|min:3|max:30',
		'lastName' => 'required|alpha|min:3|max:30',
		'email' => 'required|email|min:10|max:30|unique:users,email',
		'username' => 'required|min:4|max:16|unique:users,username',
		'password' => '<PASSWORD>'
	];

	private static $messages = [
		// firstName messages
    	'firstName.required' => 'El nombre es requerido',
		'firstName.alpha' => 'El nombre no puede contener números ni símbolos',
		'firstName.min' => 'El nombre debe tener al menos :min caracteres',
		'firstName.max' => 'El nombre debe tener menos de :max caracteres',
		// lastName messages
		'lastName.required' => 'El apellido es requerido',
		'lastName.alpha' => 'El apellido no puede contener números ni símbolos',
		'lastName.min' => 'El apellido debe tener al menos :min caracteres',
		'lastName.max' => 'El apellido debe tener menos de :max caracteres',
		// email messages
		'email.required' => 'El email es requerido',
		'email.email' => 'El email no es una dirección de correo electrónica válida',
		'email.min' => 'El email debe tener al menos :min caracteres',
		'email.max' => 'El email debe tener menos de :max caracteres',
		'email.unique' => 'Un usuario con este email, ya se encuentra registrado',
		// username messages
		'username.required' => 'El nombre de usuario es requerido',
		'username.min' => 'El nombre de usuario debe tener al menos :min caracteres',
		'username.max' => 'El nombre de usuario debe tener menos de :max caracteres',
		'username.unique' => 'Un usuario con este nombre de usuario, ya se encuentra registrado',
		// password messages
		'password.required' => 'La contraseña es requerida',
		'password.min' => 'La contraseña debe tener al menos 6 caracteres',
		'password.same' => 'Las contraseñas no coinciden'
	];

	/*<commit_msg>Se soluciona caracter space en nombre y apellido.<commit_after><?php namespace App;

use Illuminate\Database\Eloquent\Model;

use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Auth\Authenticatable as AuthenticableTrait;

use Auth;
use Validator;
use Hash;
use Request;

class User extends Model implements Authenticatable {

	/*
	| -----------------------------------------
	|	This trait implement abstract methods
	| -----------------------------------------
	|
	*/
	use AuthenticableTrait;

	/*
	| -----------------------------------------
	|	These fields are mass assignables
	| -----------------------------------------
	|
	*/
	protected $fillable = ['firstName','lastName','email','username','password'];

	/*
	| -----------------------------------------
	|	These fields are hidden in response
	| -----------------------------------------
	|
	*/
	protected $hidden = ['password', 'remember_token'];

	/*
	| -----------------------------------------
	|	Validation Rules
	| -----------------------------------------
	|
	*/

	private static $rules = [
		'firstName' => 'required|regex:/^[\pL\s]+$/u|min:3|max:30',
		'lastName' => 'required|regex:/^[\pL\s]+$/u|min:3|max:30',
		'email' => 'required|email|min:10|max:30|unique:users,email',
		'username' => 'required|min:4|max:16|unique:users,username',
		'password' => '<PASSWORD>'
	];

	private static $messages = [
		// firstName messages
    	'firstName.required' => 'El nombre es requerido',
		'firstName.regex' => 'El nombre no puede contener números ni símbolos',
		'firstName.min' => 'El nombre debe tener al menos :min caracteres',
		'firstName.max' => 'El nombre debe tener menos de :max caracteres',
		// lastName messages
		'lastName.required' => 'El apellido es requerido',
		'lastName.regex' => 'El apellido no puede contener números ni símbolos',
		'lastName.min' => 'El apellido debe tener al menos :min caracteres',
		'lastName.max' => 'El apellido debe tener menos de :max caracteres',
		// email messages
		'email.required' => 'El email es requerido',
		'email.email' => 'El email no es una dirección de correo electrónica válida',
		'email.min' => 'El email debe tener al menos :min caracteres',
		'email.max' => 'El email debe tener menos de :max caracteres',
		'email.unique' => 'Un usuario con este email, ya se encuentra registrado',
		// username messages
		'username.required' => 'El nombre de usuario es requerido',
		'username.min' => 'El nombre de usuario debe tener al menos :min caracteres',
		'username.max' => 'El nombre de usuario debe tener menos de :max caracteres',
		'username.unique' => 'Un usuario con este nombre de usuario, ya se encuentra registrado',
		// password messages
		'password.required' => 'La contraseña es requerida',
		'password.min' => 'La contraseña debe tener al menos 6 caracteres',
		'password.same' => 'Las contraseñas no coinciden'
	];

	/*
{'fraction_non_alphanumeric': 0.2380868337451465, 'fraction_numerical': 0.004941757853865161, 'mean_word_length': 2.513329200247985, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 55, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2799554', 'n_tokens_mistral': 1778, 'n_tokens_neox': 1722, 'n_words': 499}