public function execute()
 {
     try {
         if (request::getInstance()->isMethod('POST')) {
             $usuario = request::getInstance()->getPost('inputUsuario');
             $password = request::getInstance()->getPost('inputPassword');
             $tipo_documento = request::getInstance()->getPost('inputTipo_documento');
             $identificacion = request::getInstance()->getPost('inputIdentificacion');
             $nombre = request::getInstance()->getPost('inputNombre');
             $apellido = request::getInstance()->getPost('inputApellido');
             $direccion = request::getInstance()->getPost('inputDireccion');
             $telefono = request::getInstance()->getPost('inputTelefono');
             $celular = request::getInstance()->getPost('inputCelular');
             $correo = request::getInstance()->getPost('inputCorreo');
             validate::insert($usuario, $password, $tipo_documento, $identificacion, $nombre, $apellido, $celular, $telefono, $correo, $direccion);
             // primero hay que crear el cliente y luego si los datos!!!
             $data = array(usuarioTableClass::USER => $usuario, usuarioTableClass::PASSWORD => md5($password), usuarioTableClass::LAST_LOGIN_AT => date(config::getFormatTimestamp()), '__sequence' => 'usuario_id_seq');
             $usuario_id = usuarioTableClass::insert($data);
             //validate::validateInsert();
             $data1 = array(empleadoTableClass::TIPO_DOCUMENTO_ID => $tipo_documento, empleadoTableClass::IDENTIFICACION => $identificacion, empleadoTableClass::NOMBRE => $nombre, empleadoTableClass::APELLIDO => $apellido, empleadoTableClass::DIRECCION => $direccion, empleadoTableClass::TELEFONO => $telefono, empleadoTableClass::MOVIL => $celular, empleadoTableClass::CORREO => $correo, empleadoTableClass::USUARIO_ID => $usuario_id);
             empleadoTableClass::insert($data1);
             session::getInstance()->setSuccess('El empleado fue creado exitosamente');
             //        $this->defineView('index', 'empleado', session::getInstance()->getFormatOutput());
         } else {
             //inputBarrio
             routing::getInstance()->redirect('empleado', 'empleado');
         }
     } catch (PDOException $exc) {
         session::getInstance()->setFlash('exc', $exc);
         routing::getInstance()->forward('shfSecurity', 'exception');
     }
 }
 public function execute()
 {
     try {
         if (request::getInstance()->isMethod('POST')) {
             $usuario = request::getInstance()->getPost('inputUser');
             $password = request::getInstance()->getPost('inputPassword');
             if (($objUsuario = usuarioTableClass::verifyUser($usuario, $password)) !== false) {
                 hook\security\securityHookClass::login($objUsuario);
                 if (request::getInstance()->hasPost('chkRememberMe') === true) {
                     $chkRememberMe = request::getInstance()->getPost('chkRememberMe');
                     $hash = md5($objUsuario[0]->id_usuario . $objUsuario[0]->usuario . date(config::getFormatTimestamp()));
                     $data = array(recordarMeTableClass::USUARIO_ID => $objUsuario[0]->id_usuario, recordarMeTableClass::HASH_COOKIE => $hash, recordarMeTableClass::IP_ADDRESS => request::getInstance()->getServer('REMOTE_ADDR'), recordarMeTableClass::CREATED_AT => date(config::getFormatTimestamp()));
                     recordarMeTableClass::insert($data);
                     setcookie(config::getCookieNameRememberMe(), $hash, time() + config::getCookieTime(), config::getCookiePath());
                 }
                 log::register('identificacion', 'NINGUNA');
                 hook\security\securityHookClass::redirectUrl();
             } else {
                 session::getInstance()->setError('Usuario y contraseña incorrectos');
                 routing::getInstance()->redirect(config::getDefaultModuleSecurity(), config::getDefaultActionSecurity());
             }
         } else {
             routing::getInstance()->redirect(config::getDefaultModule(), config::getDefaultAction());
         }
     } catch (PDOException $exc) {
         session::getInstance()->setFlash('exc', $exc);
         routing::getInstance()->forward('shfSecurity', 'exception');
     }
 }
 public function execute()
 {
     try {
         if (request::getInstance()->isMethod('POST')) {
             $usuario = request::getInstance()->getPost('inputUsuario');
             $password = request::getInstance()->getPost('inputPassword');
             $tipo_documento = request::getInstance()->getPost('inputTipo_documento');
             $identificacion = request::getInstance()->getPost('inputIdentificacion');
             $nombre = request::getInstance()->getPost('inputNombre');
             $apellido = request::getInstance()->getPost('inputApellido');
             $celular = request::getInstance()->getPost('inputCelular');
             $telefono = request::getInstance()->getPost('inputTelefono');
             $correo = request::getInstance()->getPost('inputCorreo');
             $direccion = request::getInstance()->getPost('inputDireccion');
             $fecha_nacimiento = request::getInstance()->getPost('inputFecha_nacimiento');
             $localidad = request::getInstance()->getPost('inputLocalidad');
             validate::insert($usuario, $password, $tipo_documento, $identificacion, $nombre, $apellido, $celular, $telefono, $correo, $direccion, $fecha_nacimiento, $localidad);
             $data1 = array(usuarioTableClass::USER => $usuario, usuarioTableClass::PASSWORD => md5($password), usuarioTableClass::LAST_LOGIN_AT => date(config::getFormatTimestamp()), '__sequence' => 'usuario_id_seq');
             $usuario_id = usuarioTableClass::insert($data1);
             $data2 = array(clienteTableClass::TIPO_DOCUMENTO_ID => $tipo_documento, clienteTableClass::IDENTIFICACION => $identificacion, clienteTableClass::NOMBRE => $nombre, clienteTableClass::APELLIDO => $apellido, clienteTableClass::CELULAR => $celular, clienteTableClass::TELEFONO => $telefono, clienteTableClass::CORREO => $correo, clienteTableClass::DIRECCION => $direccion, clienteTableClass::FECHA_NACIMIENTO => $fecha_nacimiento, clienteTableClass::LOCALIDAD_ID => $localidad, clienteTableClass::USUARIO_ID => $usuario_id);
             clienteTableClass::insert($data2);
             session::getInstance()->setSuccess('El cliente fue creado exitosamente');
             routing::getInstance()->redirect('@cliente_lista');
         }
     } catch (PDOException $exc) {
         session::getInstance()->setFlash('exc', $exc);
         routing::getInstance()->forward('shfSecurity', 'exception');
     }
 }
 public function execute()
 {
     if (session::getInstance()->hasFlash('exc')) {
         $this->exc = session::getInstance()->getFlash('exc');
         $this->defineView('exception', 'shfSecurity', session::getInstance()->getFormatOutput());
     } else {
         routing::getInstance()->redirect(config::getDefaultModule(), config::getDefaultAction());
     }
 }
 public static function clearSessions()
 {
     try {
         $sql = 'DELETE FROM ' . recordarMeTableClass::getNameTable() . ' WHERE localtimestamp(0) > (' . recordarMeTableClass::CREATED_AT . ' + INTERVAL :timeSeconds)';
         $params = array(':timeSeconds' => config::getCookieTime() . ' seconds');
         $answer = model::getInstance()->prepare($sql);
         $answer->execute($params);
         return true;
     } catch (PDOException $exc) {
         throw $exc;
     }
 }
 public function execute()
 {
     try {
         if (session::getInstance()->isUserAuthenticated()) {
             routing::getInstance()->redirect(config::getDefaultModule(), config::getDefaultAction());
         } else {
             $this->defineView('loginForm', 'shfSecurity', session::getInstance()->getFormatOutput());
         }
     } catch (PDOException $exc) {
         session::getInstance()->setFlash('exc', $exc);
         routing::getInstance()->forward('shfSecurity', 'exception');
     }
 }
 public static function setRegisterLastLoginAt($id)
 {
     try {
         $sql = 'UPDATE ' . usuarioTableClass::getNameTable() . '
           SET ' . usuarioTableClass::LAST_LOGIN_AT . ' = :last_login_at
           WHERE ' . usuarioTableClass::ID . ' = :id';
         $params = array(':id' => $id, ':last_login_at' => date(config::getFormatTimestamp()));
         $answer = model::getInstance()->prepare($sql);
         $answer->execute($params);
         return true;
     } catch (PDOException $exc) {
         throw $exc;
     }
 }
 public function execute()
 {
     try {
         log::register('salida del sistema', 'NINGUNA', null, null, session::getInstance()->getUserId());
         session::getInstance()->setUserAuthenticate(false);
         session::getInstance()->setUserId(null);
         session::getInstance()->setUserName(null);
         session::getInstance()->deleteCredentials();
         if (request::getInstance()->hasCookie(config::getCookieNameRememberMe()) === true) {
             recordarMeTableClass::deleteSession(request::getInstance()->getCookie(config::getCookieNameRememberMe()), request::getInstance()->getServer('REMOTE_ADDR'));
             setcookie(config::getCookieNameRememberMe(), '', time() - config::getCookieTime(), config::getCookiePath());
         }
         routing::getInstance()->redirect(config::getDefaultModule(), config::getDefaultAction());
     } catch (PDOException $exc) {
         session::getInstance()->setFlash('exc', $exc);
         routing::getInstance()->forward('shfSecurity', 'exception');
     }
 }
 public function execute()
 {
     try {
         if (request::getInstance()->isMethod('POST')) {
             // primero hay que crear el cliente y luego si los datos!!!
             $data = array(usuarioTableClass::LAST_LOGIN_AT => date(config::getFormatTimestamp()), usuarioTableClass::USER => request::getInstance()->getPost('inputUsuario'), usuarioTableClass::PASSWORD => md5(request::getInstance()->getPost('inputPassword')), '__sequence' => 'usuario_id_seq');
             $usuario_id = usuarioTableClass::insert($data);
             //validate::validateInsert();
             $data = array(clienteTableClass::TIPO_DOCUMENTO_ID => request::getInstance()->getPost(clienteTableClass::getNameField(clienteTableClass::TIPO_DOCUMENTO_ID, true)), clienteTableClass::NUMERO_IDENTIFICACION => request::getInstance()->getPost(clienteTableClass::getNameField(clienteTableClass::NUMERO_IDENTIFICACION, true)), clienteTableClass::NOMBRE_CLIENTE => request::getInstance()->getPost(clienteTableClass::getNameField(clienteTableClass::NOMBRE_CLIENTE, true)), clienteTableClass::APELLIDO_CLIENTE => request::getInstance()->getPost(clienteTableClass::getNameField(clienteTableClass::APELLIDO_CLIENTE, true)), clienteTableClass::CELULAR_CLIENTE => request::getInstance()->getPost(clienteTableClass::getNameField(clienteTableClass::CELULAR_CLIENTE, true)), clienteTableClass::TELEFONO_CLIENTE => request::getInstance()->getPost(clienteTableClass::getNameField(clienteTableClass::TELEFONO_CLIENTE, true)), clienteTableClass::CORREO_CLIENTE => request::getInstance()->getPost(clienteTableClass::getNameField(clienteTableClass::CORREO_CLIENTE, true)), clienteTableClass::DIRECCION_CLIENTE => request::getInstance()->getPost(clienteTableClass::getNameField(clienteTableClass::DIRECCION_CLIENTE, true)), clienteTableClass::FECHA_NACIMIENTO_CLIENTE => request::getInstance()->getPost(clienteTableClass::getNameField(clienteTableClass::FECHA_NACIMIENTO_CLIENTE, true)), clienteTableClass::LOCALIDAD_ID => request::getInstance()->getPost(clienteTableClass::getNameField(clienteTableClass::LOCALIDAD_ID, true)), clienteTableClass::USUARIO_ID => $usuario_id);
             clienteTableClass::insert($data);
             session::getInstance()->setSuccess('El cliente fue creado exitosamente');
             // $this->defineView('cliente', 'prestamo', session::getInstance()->getFormatOutput());
             $this->defineView('index', 'prestamo', session::getInstance()->getFormatOutput());
         } else {
             //inputBarrio
             routing::getInstance()->redirect('prestamo', 'createCliente');
         }
     } catch (PDOException $exc) {
         session::getInstance()->setFlash('exc', $exc);
         routing::getInstance()->forward('shfSecurity', 'exception');
     }
 }
config::setPathAbsolute('/var/www/html/proyecto_porcicola/');
config::setUrlBase('http://www.granjaporcicola.com/');
config::setScope('prod');
// dev
if (session::getInstance()->hasDefaultCulture() === false) {
    config::setDefaultCulture('es');
} else {
    config::setDefaultCulture(session::getInstance()->getDefaultCulture());
}
config::setIndexFile('index.php');
config::setFormatTimestamp('Y-m-d H:i:s');
config::setHeaderJson('Content-Type: application/json; charset=utf-8');
config::setHeaderXml('Content-Type: application/xml; charset=utf-8');
config::setHeaderHtml('Content-Type: text/html; charset=utf-8');
config::setHeaderPdf('Content-type: application/pdf; charset=utf-8');
config::setHeaderJavascript('Content-Type: text/javascript; charset=utf-8');
config::setHeaderExcel2003('Content-Type: application/vnd.ms-excel; charset=utf-8');
config::setHeaderExcel2007('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf-8');
config::setCookieNameRememberMe('mvcSiteRememberMe');
config::setCookieNameSite('mvcSite');
config::setCookiePath('/www.proyectoporcicola.com/web/' . config::getIndexFile());
config::setCookieDomain('http://www.granjaporcicola.com/');
config::setCookieTime(3600 * 8);
// una hora en segundo 3600 y por 8 serían 8 horas
config::setDefaultModule('default');
config::setDefaultAction('index');
config::setDefaultModuleSecurity('shfSecurity');
config::setDefaultActionSecurity('index');
config::setDefaultModulePermission('shfSecurity');
config::setDefaultActionPermission('noPermission');
 public static function validateInsert()
 {
     $flag = false;
     if (self::notBlank(request::getInstance()->getPost('inputUser'))) {
         $flag = true;
         session::getInstance()->setFlash('inputUser', true);
         session::getInstance()->setError('El nombre de usuario es requerido', 'inputUser');
     } else {
         if (is_numeric(request::getInstance()->getPost('inputUser'))) {
             $flag = true;
             session::getInstance()->setFlash('inputUser', true);
             session::getInstance()->setError('El usuario no puede ser númerico', 'inputUser');
         } else {
             if (strlen(request::getInstance()->getPost('inputUser')) > \usuarioTableClass::USER_LENGTH) {
                 $flag = true;
                 session::getInstance()->setFlash('inputUser', true);
                 session::getInstance()->setError('El usuario digitado es mayor en cantidad de caracteres a lo permitido', 'inputUser');
             } else {
                 if (self::isUnique(\usuarioTableClass::ID, true, array(\usuarioTableClass::USER => request::getInstance()->getPost('inputUser')), \usuarioTableClass::getNameTable())) {
                     $flag = true;
                     session::getInstance()->setFlash('inputUser', true);
                     session::getInstance()->setError('El usuario digitado ya existe', 'inputUser');
                 }
             }
         }
     }
     if (self::notBlank(request::getInstance()->getPost('inputPass1')) or self::notBlank(request::getInstance()->getPost('inputPass2'))) {
         $flag = true;
         session::getInstance()->setFlash('inputPass', true);
         session::getInstance()->setError('La contraseña es requerida', 'inputPass');
     } else {
         if (request::getInstance()->getPost('inputPass1') !== request::getInstance()->getPost('inputPass2')) {
             $flag = true;
             session::getInstance()->setFlash('inputPass', true);
             session::getInstance()->setError('Las contraseñas no coinciden', 'inputPass');
         }
     }
     if (self::notBlank(request::getInstance()->getPost('inputName'))) {
         $flag = true;
         session::getInstance()->setFlash('inputName', true);
         session::getInstance()->setError('El nombre del usuario es requerido', 'inputName');
     } else {
         if (is_numeric(request::getInstance()->getPost('inputName'))) {
             $flag = true;
             session::getInstance()->setFlash('inputName', true);
             session::getInstance()->setError('El nombre no puede ser númerico', 'inputName');
         } else {
             if (strlen(request::getInstance()->getPost('inputName')) > \datoUsuarioTableClass::NOMBRE_LENGTH) {
                 $flag = true;
                 session::getInstance()->setFlash('inputName', true);
                 session::getInstance()->setError('El nombre no puede exceder el número de caracteres permitido', 'inputName');
             }
         }
     }
     if (self::notBlank(request::getInstance()->getPost('inputLastName'))) {
         $flag = true;
         session::getInstance()->setFlash('inputLastName', true);
         session::getInstance()->setError('El apellido del usuario es requerido', 'inputLastName');
     } else {
         if (is_numeric(request::getInstance()->getPost('inputLastName'))) {
             $flag = true;
             session::getInstance()->setFlash('inputLastName', true);
             session::getInstance()->setError('El apellido no puede ser númerico', 'inputLastName');
         } else {
             if (strlen(request::getInstance()->getPost('inputLastName')) > \datoUsuarioTableClass::APELLIDOS_LENGTH) {
                 $flag = true;
                 session::getInstance()->setFlash('inputLastName', true);
                 session::getInstance()->setError('El apellido no puede exceder el número de caracteres permitido', 'inputLastName');
             }
         }
     }
     if (self::notBlank(request::getInstance()->getPost('inputMovil'))) {
         $flag = true;
         session::getInstance()->setFlash('inputMovil', true);
         session::getInstance()->setError('El número de celular es requerido o cualquier otro número donde se le pueda contactar', 'inputMovil');
     } else {
         if (strlen(request::getInstance()->getPost('inputMovil')) > \datoUsuarioTableClass::MOVIL_LENGTH) {
             $flag = true;
             session::getInstance()->setFlash('inputMovil', true);
             session::getInstance()->setError('El número de contacto no puede exceder el máximo de caracteres permitidos', 'inputMovil');
         } else {
             if (!preg_match('/^(\\d{3,3}\\-\\d{3,3}\\-\\d{4,4})|^(\\+\\d\\-\\d{3,3}\\-\\d{4,4})/', trim(request::getInstance()->getPost('inputMovil')))) {
                 $flag = true;
                 session::getInstance()->setFlash('inputMovil', true);
                 session::getInstance()->setError('El número de contacto debe cumplir uno de estos patrones: ###-###-#### o +#-###-####', 'inputMovil');
             }
         }
     }
     if (self::notBlank(request::getInstance()->getPost('inputEmail'))) {
         $flag = true;
         session::getInstance()->setFlash('inputEmail', true);
         session::getInstance()->setError('El correo es obligatorio para el contacto por parte de la plataforma', 'inputEmail');
     } else {
         if (strlen(request::getInstance()->getPost('inputEmail')) > \datoUsuarioTableClass::CORREO_LENGTH) {
             $flag = true;
             session::getInstance()->setFlash('inputEmail', true);
             session::getInstance()->setError('El correo no puede exceder el máximo de caracteres permitidos', 'inputEmail');
         } else {
             if (!preg_match("/([\\w\\.\\-_]+)?\\w+@[\\w-_]+(\\.\\w+){1,}/", trim(request::getInstance()->getPost('inputEmail')))) {
                 $flag = true;
                 session::getInstance()->setFlash('inputEmail', true);
                 session::getInstance()->setError('Por favor digite un corre válido', 'inputEmail');
             } else {
                 if (self::isUnique(\datoUsuarioTableClass::ID, true, array(\datoUsuarioTableClass::CORREO => trim(request::getInstance()->getPost('inputEmail'))), \datoUsuarioTableClass::getNameTable())) {
                     $flag = true;
                     session::getInstance()->setFlash('inputEmail', true);
                     session::getInstance()->setError('El correo digitado ya está siendo usado', 'inputEmail');
                 }
             }
         }
     }
     if (self::notBlank(request::getInstance()->getPost('inputSexo'))) {
         $flag = true;
         session::getInstance()->setFlash('inputSexo', true);
         session::getInstance()->setError('Debes selecionar un sexo', 'inputSexo');
     } else {
         if (!self::collection(trim(request::getInstance()->getPost('inputSexo')), array('t', 'f'))) {
             $flag = true;
             session::getInstance()->setFlash('inputSexo', true);
             session::getInstance()->setError('La respuesta dada no es correcta', 'inputSexo');
         }
     }
     if (self::notBlank(request::getInstance()->getPost('inputAprendiz'))) {
         $flag = true;
         session::getInstance()->setFlash('inputAprendiz', true);
         session::getInstance()->setError('Debes responder si eres un aprendiz o no', 'inputAprendiz');
     } else {
         if (!self::collection(trim(request::getInstance()->getPost('inputAprendiz')), array('true', 'false'))) {
             $flag = true;
             session::getInstance()->setFlash('inputAprendiz', true);
             session::getInstance()->setError('La respuesta dada no es correcta', 'inputAprendiz');
         }
     }
     if (request::getInstance()->hasFile('inputFile')) {
         $type = array('image/png', 'image/jpeg', 'image/jpg', 'image/gif');
         if (request::getInstance()->getFile('inputFile')['error'] !== 0) {
             $flag = true;
             session::getInstance()->setFlash('inputFile', true);
             session::getInstance()->setError('Ocurrio un error en la carga de la imágen, por favor vuelva a intentarlo', 'inputFile');
         } else {
             if (array_search(request::getInstance()->getFile('inputFile')['type'], $type) === false) {
                 $flag = true;
                 session::getInstance()->setFlash('inputFile', true);
                 session::getInstance()->setError('Solo se permiten imágenes del tipo jpg, png o gif', 'inputFile');
             } else {
                 if (request::getInstance()->getFile('inputFile')['size'] > config::getFileSizeAvatar()) {
                     $flag = true;
                     session::getInstance()->setFlash('inputFile', true);
                     session::getInstance()->setError('Solo se permiten imágenes con un tamaño máximo de 150kB', 'inputFile');
                 } else {
                     if ($flag === true) {
                         session::getInstance()->setFlash('inputFile', true);
                         session::getInstance()->setError('Debido a errores en el formulario, por favor vuelve a cargar la imagen que vas a usar', 'inputFile');
                     }
                 }
             }
         }
     }
     if ($flag === true) {
         //request::getInstance()->setMethod('GET');
         routing::getInstance()->forward('shfSecurity', 'register');
     }
 }