<?php
defined('BASEPATH') or exit('No direct script access allowed');

class Usuarios extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        $this->load->model("Usuarios_model");
        $this->load->model("tipousuarios_model");
        if (!$this->session->userdata("login")) {
            redirect(base_url() . "cpanel");
        }
    }

    public function index()
    {

        $contenido_interno = array(
            'usuarios' => $this->Usuarios_model->getUsuarios(),
        );

        $contenido_exterior = array(
            'title'     => 'Usuarios',
            'contenido' => $this->load->view('backend/usuarios/index', $contenido_interno, true),
        );

        $this->load->view('backend/template', $contenido_exterior);
    }

    public function add()
    {

        $contenido_interno = array(
            'tipousuarios' => $this->tipousuarios_model->gettipousuarios(),
        );

        $contenido_exterior = array(
            'title'     => 'Agregar Usuario',
            'contenido' => $this->load->view('backend/usuarios/add', $contenido_interno, true),
        );

        $this->load->view('backend/template', $contenido_exterior);

    }

    public function store()
    {
        $nombre   = $this->input->post("nombre");
        $apellidos = $this->input->post("apellidos");
        $Cedula       = $this->input->post("Cedula");
        $telefono  = $this->input->post("telefono");

        $email    = $this->input->post("email");
        $password = $this->input->post("password");

        $idtipousuario = $this->input->post("idtipousuario");

        $this->form_validation->set_rules('nombre', 'nombre', 'trim|required', array('required' => 'Debes proporcionar un %s.'));
        $this->form_validation->set_rules('apellidos', 'Apellidos', 'trim|required', array('required' => 'Debes proporcionar un %s.'));
        $this->form_validation->set_rules('Cedula', 'Cedula', 'trim|required|min_length[9]|is_unique[usuarios.Cedula]', array('required' => 'Debes proporcionar un numero de %s.', 'is_unique' => 'Este numero de %s ya existe', 'min_length' => 'La %s debe ser de 9 digitos como minimo'));
        $this->form_validation->set_rules('email', 'email', 'trim|required|valid_email|is_unique[usuarios.email]', array('required' => 'Debes proporcionar un %s.', 'is_unique' => 'Este %s ya existe', 'valid_email' => 'El %s no es valido'));
        $this->form_validation->set_rules('password', 'Contraseña', 'trim|required', array('required' => 'Debes proporcionar una %s.'));
        $this->form_validation->set_rules('idtipousuario', 'Tipo Usuario', 'trim|required', array('required' => 'Debes proporcionar un %s.'));
        $this->form_validation->set_error_delimiters('<span class="help-block">', '</span>');

        if ($this->form_validation->run() == false) {
            $this->add();
        } else {
            $dataUsuario = array(

                'nombre'       => ucwords($nombre),
                'apellidos'     => ucwords($apellidos),
                'Cedula'           => $Cedula,
                'telefono'      => $telefono,
                'email'         => $email,
                'pass_usuario'  => md5($password),
                'idtipousuario' => $idtipousuario,
            );

            if ($this->Usuarios_model->guardar($dataUsuario)) {
                redirect(base_url() . "backend/usuarios");
            } else {
                $this->session->set_flashdata("error","No se pudo registrar al usuario");
                redirect(base_url() . "backend/usuarios/add");
            }
        }

    }

    public function edit($id)
    {

        $contenido_interno = array(
            'usuario'      => $this->Usuarios_model->getUsuario($id),
            'tipousuarios' => $this->tipousuarios_model->gettipousuarios(),
        );

        $contenido_exterior = array(
            'title'     => 'Editar Usuario',
            'contenido' => $this->load->view('backend/usuarios/edit', $contenido_interno, true),
        );

        $this->load->view('backend/template', $contenido_exterior);
    }

    public function update()
    {
        $idUsuario    = $this->input->post("id_usuario");
        $nombre       = $this->input->post("nombre");
        $apellidos    = $this->input->post("apellidos");
        $Cedula       = $this->input->post("Cedula");
        $telefono     = $this->input->post("telefono");
        $email        = $this->input->post("email");
        $idtipousuario  = $this->input->post("idtipousuario");

        $usuario_actual = $this->Usuarios_model->getUsuario($idUsuario);

        if ($Cedula != $usuario_actual->Cedula) {
            $Cedula_is_unique = '|is_unique[usuarios.Cedula]';
        } else {
            $Cedula_is_unique = '';
        }

        $this->form_validation->set_rules('nombre', 'nombre', 'trim|required', array('required' => 'Debes proporcionar un %s.'));
        $this->form_validation->set_rules('apellidos', 'Apellidos', 'trim|required', array('required' => 'Debes proporcionar un %s.'));
        $this->form_validation->set_rules('Cedula', 'Cedula', 'trim|required|min_length[9]' . $Cedula_is_unique, array('required' => 'Debes proporcionar un numero de %s.', 'is_unique' => 'Este numero de %s ya existe', 'min_length' => 'La %s debe ser de 9 digitos como minimo'));
        $this->form_validation->set_rules('email', 'email', 'trim|required|valid_email|is_unique[usuarios.email]', array('required' => 'Debes proporcionar un %s.', 'is_unique' => 'Este %s ya existe', 'valid_email' => 'El %s no es valido'));
        $this->form_validation->set_rules('idtipousuario', 'Tipo Usuario', 'trim|required', array('required' => 'Debes proporcionar un %s.'));
        $this->form_validation->set_error_delimiters('<p class="text-danger">', '</p>');

        if ($this->form_validation->run() == false) {
            $this->edit($idUsuario);
        } else {
            $dataUsuario = array(
                'nombre'      => $nombre,
                'apellidos'   => $apellidos,
                'Cedula'      => $Cedula,
                'telefono'    => $telefono,
                'email'       => $email,
                'idtipousuario' => $idtipousuario,
            );

            if ($this->Usuarios_model->update($idUsuario, $dataUsuario)) {
                redirect(base_url() . "backend/usuarios");
            } else {
                $this->session->set_flashdata("error","No se pudo registrar al usuario");
                redirect(base_url() . "backend/usuarios/edit/" . $idUsuario);
            }
        }

    }

    public function delete($idusuario)
    {

        if ($this->Usuarios_model->delete($idusuario)) {
            redirect(base_url() . "backend/usuarios");
        } else {
            redirect(base_url() . "backend/usuarios");
        }
    }

}
