/**
  * Lista
  * @return array
  */
 protected function _listar()
 {
     if (count($this->_lista_regiones) > 0) {
         return $this->_oficina_model->listarPorRegiones($this->_lista_regiones);
     } else {
         return array();
     }
 }
 /**
  * Servicio para retornar oficinas
  * de acuerdo a la region
  */
 public function rest()
 {
     header('Content-type: application/json');
     $params = $this->uri->uri_to_assoc();
     $lista_oficinas = array();
     $regiones = array();
     if (!empty($params["region"]) and $params["region"] != "null") {
         $regiones = explode(",", $params["region"]);
     }
     if (count($regiones) > 0) {
         $lista_oficinas = $this->oficina_model->listarPorRegiones($regiones);
         if (is_null($lista_oficinas)) {
             $lista_oficinas = array();
         }
     } else {
         $lista_oficinas = $this->oficina_model->listar();
     }
     echo json_encode($lista_oficinas);
 }
 /**
  * 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);
 }