<?php

class Usuarios extends Controller {
    protected $model;
    
    public function __construct() {
        parent::__construct();
        $this->model = $this->loadModel('Usuarios_model');
    }

    public function index($id_usuario = FALSE) {
        if( !isset($_SESSION['login_user']) || !(in_array('admin', $_SESSION['login_user']['PRIVILEGIOS'])) ){
            header('Location:'.URL_SITIO);
            exit();
        }

        $usuario_datos = array(
            'USUARIO' => '',
            'PASS' => '',
            'PRIVILEGIOS' => array()
        );

        $_error_post = false;
        $_save_ok = false;

        if (isset($_POST['action'])) {
            $id_usuario = $_POST['ID_USUARIO'];

            $usuario_datos = array(
                'USUARIO' => $_POST['USUARIO'],
                'PASS' => $_POST['PASS'],
                'PRIVILEGIOS' => $_POST['user_priv']
            );

            $_error = array();
            if (strlen($usuario_datos['USUARIO']) < 4) {
                $_error[] = 'El nombre de usuario debe tener al menos 4 caracteres';
            } elseif (strlen($usuario_datos['PASS']) < 6 && !$id_usuario) {
                $_error[] = 'La contraseña debe tener al menos 6 caracteres';
            } elseif (!count($usuario_datos['PRIVILEGIOS'])) {
                $_error[] = 'Ingrese algún privilegio';
            }

            if (in_array('admin', $usuario_datos['PRIVILEGIOS'])) {
                $usuario_datos['USUARIO'] = array('admin'); //quitamos otros privilegios y solo guardamos admin
            }

            if (count($_error)) {
                $_error_post = implode('<br />', $_error);
            } else {
                if (!$id_usuario && $this->model->getUsuarioByName($usuario_datos['USUARIO'])) {
                    $_error_post = "El nombre de usuario ya está en uso";
                } else {
                    if ($this->model->updateUsuario($id_usuario, $usuario_datos)) {
                        $_save_ok = ($id_usuario) ? "El usuario fue actualizado correctamente" : "El usuario fue guardado correctamente";

                        $usuario_datos = array(
                            'USUARIO' => '',
                            'PASS' => '',
                            'PRIVILEGIOS' => array()
                        );
                    } ELSE {
                        $_error_post = "Hubo un error en la base de datos, intente nuevamente en unos minutos";
                    }
                }
            }
        } elseif ($id_usuario) {
            if ( ($aux = $this->model->getUsuario($id_usuario)) ) {
                $aux['PRIVILEGIOS'] = explode('|', $aux['PRIVILEGIOS']);
                $aux['PASS'] = '';
                $usuario_datos = $aux;
            }
        }

        $usuarios = $this->model->getUsuarios();

        $css_template = array('usuarios');
        $js_template = array('usuarios');
        $page_template = 'usuarios/index';

        require APP_DIR . '/views/_templates/general.php';
    }

    public function pass($pass_user = FALSE) {
        
        $_error_post = false;
        if ($pass_user == $_SESSION['login_user']['ID']) {
            if (isset($_POST['action'])) {
                if (strlen($_POST['PASS']) < 6) {
                    $_error_post = 'La contraseña debe tener al menos 6 caracteres';
                } else {
                    if (!$this->model->getUsuario($pass_user, $_POST['OLD_PASS'])) {
                        $_error_post = "La contraseña ingresada es inválida";
                    } elseif ($this->model->updatePass($pass_user, $_POST['PASS'])) {
                        header('Location:' . URL_SITIO . 'logout');
                        exit();
                    } ELSE {
                        $_error_post = "Hubo un error en la base de datos, intente nuevamente en unos minutos";
                    }
                }
            }
        } else {
            header('Location:'.URL_SITIO);
            exit();
        }

        $css_template = array('usuarios');
        $js_template = array('usuarios');
        $page_template = 'usuarios/pass';

        require APP_DIR . '/views/_templates/general.php';
    }
    
    public function delete($id=NULL) {
        
    }

}
