public function solicitarPassword()
 {
     $response = array();
     $params = $this->input->post();
     $usuario = $this->_usuario_model->getByRut($params['usuario']);
     if ($usuario) {
         $this->load->library(array("core/sistema/sistema_base", "Cadenas"));
         $nueva_pass = Cadenas::cadenaAleatorea();
         if (!filter_var($usuario->usu_c_email, FILTER_VALIDATE_EMAIL) === false) {
             $sistema = new Sistema_base();
             $data = array("usu_c_clave" => sha1($nueva_pass));
             if ($this->_usuario_model->update($data, $usuario->usu_ia_id)) {
                 $to = trim($usuario->usu_c_email);
                 $this->load->model("sendmail_model", "_sendmail");
                 $subject = 'Solicitud Nueva Password';
                 $msg = '<h4>Módulo ' . $sistema->getSistema() . '</h4>';
                 $msg .= 'Estimado/a ' . $usuario->usu_c_nombre . ' ' . $usuario->usu_c_apellido_paterno . ' ' . $usuario->usu_c_apellido_materno . ':<br/><br/>';
                 $msg .= 'Ud. ha solicitado una nueva contraseña, la cual es: <strong>' . $nueva_pass . '</strong><br/>';
                 $msg .= 'Su login de usuario es: <strong>' . $usuario->usu_c_login . '</strong><br/>';
                 $msg .= '<p>' . date('d/m/Y') . '</p>';
                 $email = explode("@", $to);
                 $mitad_email = ceil(strlen($email[0]) / 2);
                 $x = "";
                 for ($i = 0; $i < $mitad_email; $i++) {
                     $x .= "X";
                 }
                 $correo = substr_replace($email[0], $x, 0, $mitad_email);
                 if ($this->_sendmail->emailSend($to, null, null, $subject, $msg, false)) {
                     $json['mensaje'] = "Una nueva contraseña ha sido enviada a su correo " . $correo . "@" . $email[1];
                 } else {
                     $json['mensaje'] = "Se ha generado la nueva contraseña, pero no ha podido ser enviada a su correo. Intentar nuevamente o contactarse a la Mesa de Ayuda 2571581/Anexo (321581)";
                 }
                 $json['estado'] = true;
             } else {
                 $json['estado'] = false;
                 $json['mensaje'] = "No se ha podido generar nueva contraseña. Intente nuevamente";
             }
         } else {
             $data = array("usu_c_clave" => sha1($nueva_pass));
             if ($this->_usuario_model->update($data, $usuario->usu_ia_id)) {
                 $json['mensaje'] = "El rut ingresado no cuenta con correo electrónico asociado y debe contactar a la Mesa de Ayuda 2571581/Anexo (321581)";
                 $json['estado'] = true;
             } else {
                 $json['estado'] = false;
                 $json['mensaje'] = "No se ha podido generar nueva contraseña. Intente nuevamente";
             }
         }
     } else {
         $json['estado'] = false;
         $json['mensaje'] = "No se encuentra usuario con rut ingresado";
     }
     echo json_encode($json);
 }
 /**
  * Guardar
  */
 public function save()
 {
     $this->load->library(array("mantenedor/usuario/mantenedor_usuario_validar", "form/form_utilitario_select"));
     $this->load->model('usuario_hospitales_model');
     $params = $this->input->post(null, true);
     $correcto = $this->mantenedor_usuario_validar->esValido($params);
     if ($correcto) {
         $data = array("usu_c_rut" => $params["rut"], "usu_c_nombre" => $params["nombre"], "usu_c_apellido_paterno" => $params["apellido_paterno"], "usu_c_apellido_materno" => $params["apellido_materno"], "bo_nacional" => $params["nacional"], "usu_c_email" => $params["email"], "usu_c_telefono" => $params["telefono_fijo"], "usu_c_celular" => $params["telefono_celular"], "crg_ia_id" => $params["cargo"], "est_ia_id" => $params["activo"]);
         $usuario = $this->usuario_model->getById($params["id"]);
         if (!is_null($usuario)) {
             $this->usuario_model->update($data, $usuario->usu_ia_id);
             $id_usuario = $usuario->usu_ia_id;
             if ($params["nacional"] == 1) {
                 $lista_regiones = $this->form_utilitario_select->populateMultiselect($this->region_model->listar(), "reg_ia_id");
                 $this->usuario_region_model->query()->insertOneToMany("id_usuario", "id_region", $id_usuario, $lista_regiones);
                 $lista_oficinas = $this->form_utilitario_select->populateMultiselect($this->oficina_model->listar(), "ofi_ia_id");
                 $this->usuario_oficina_model->query()->insertOneToMany("usu_ia_id", "ofi_ia_id", $id_usuario, $lista_oficinas);
             } else {
                 $this->usuario_region_model->query()->insertOneToMany("id_usuario", "id_region", $id_usuario, $params["region"]);
                 $this->usuario_oficina_model->query()->insertOneToMany("usu_ia_id", "ofi_ia_id", $id_usuario, $params['oficinas']);
             }
             $this->usuario_rol_model->query()->insertOneToMany("usu_ia_id", "rol_ia_id", $id_usuario, $params["roles"]);
             $this->usuario_laboratorio_model->query()->insertOneToMany("id_usuario", "id_laboratorio", $id_usuario, $params["laboratorio"]);
             /* registrar hospital asociado */
             if (isset($params['hospital']) and $params['hospital'] > 0) {
                 $arr = array('id_usuario' => $id_usuario, 'id_hospital' => $params['hospital']);
                 $this->usuario_hospitales_model->insert($arr);
             }
             $respuesta = array("correcto" => $correcto, "error" => $this->mantenedor_usuario_validar->getErrores());
         } else {
             $valida_rut = $this->usuario_model->getByRut($params["rut"]);
             if (!$valida_rut) {
                 $data["usu_c_login"] = $this->_getLogin(str_replace(" ", ".", strtolower(substr(trim($params["nombre"]), 0, 1) . "." . trim($params["apellido_paterno"]))));
                 $rut = explode("-", $params["rut"]);
                 $data["usu_c_clave"] = sha1(substr($rut[0], strlen($rut[0]) - 4, 4));
                 $id_usuario = $this->usuario_model->insert($data);
                 if ($params["nacional"] == 1) {
                     $lista_regiones = $this->form_utilitario_select->populateMultiselect($this->region_model->listar(), "reg_ia_id");
                     $this->usuario_region_model->query()->insertOneToMany("id_usuario", "id_region", $id_usuario, $lista_regiones);
                     $lista_oficinas = $this->form_utilitario_select->populateMultiselect($this->oficina_model->listar(), "ofi_ia_id");
                     $this->usuario_oficina_model->query()->insertOneToMany("usu_ia_id", "ofi_ia_id", $id_usuario, $lista_oficinas);
                 } else {
                     $this->usuario_region_model->query()->insertOneToMany("id_usuario", "id_region", $id_usuario, $params["region"]);
                     $this->usuario_oficina_model->query()->insertOneToMany("usu_ia_id", "ofi_ia_id", $id_usuario, $params['oficinas']);
                 }
                 $this->usuario_rol_model->query()->insertOneToMany("usu_ia_id", "rol_ia_id", $id_usuario, $params["roles"]);
                 $this->usuario_laboratorio_model->query()->insertOneToMany("id_usuario", "id_laboratorio", $id_usuario, $params["laboratorio"]);
                 /* registrar hospital asociado */
                 if (isset($params['hospital']) and $params['hospital'] > 0) {
                     $arr = array('id_usuario' => $id_usuario, 'id_hospital' => $params['hospital']);
                     $this->usuario_hospitales_model->insert($arr);
                 }
                 $respuesta = array("correcto" => $correcto, "error" => $this->mantenedor_usuario_validar->getErrores());
             } else {
                 $respuesta = array("correcto" => false, "error" => array("rut" => "Ya existe un usuario con el mismo rut"));
             }
         }
     } else {
         $respuesta = array("correcto" => $correcto, "error" => $this->mantenedor_usuario_validar->getErrores());
     }
     echo json_encode($respuesta);
 }