/**
  * 
  * @param int $id identificador de la emergencia
  * @throws Exception
  */
 public function setEmergencia($id)
 {
     $this->_emergencia = $this->_emergencia_model->getById($id);
     if (is_null($this->_emergencia)) {
         throw new Exception(__METHOD__ . " - La emergencia no existe");
     }
 }
 /**
  * 
  * @param int $id_emergencia
  */
 public function setEmergencia($id_emergencia)
 {
     $this->_emergencia = $this->_emergencia_model->getById($id_emergencia);
     if (!is_null($this->_emergencia)) {
         $this->setAlarma($this->_emergencia->ala_ia_id);
     }
 }
 /**
  * Finaliza una emergencia
  */
 public function save()
 {
     $this->load->library("validar");
     $correcto = true;
     $error = array();
     $params = $this->input->post(null, true);
     $emergencia = $this->emergencia_model->getById($params["id"]);
     if (!is_null($emergencia)) {
         if (!$this->validar->validarFechaSpanish($params["fecha_cierre"])) {
             $correcto = false;
             $error["fecha-cierre"] = "Debe ingresar una fecha";
         } else {
             $error["fecha-cierre"] = "";
         }
         if (!$this->validar->validarVacio($params["comentarios_cierre"])) {
             $correcto = false;
             $error["comentarios_cierre"] = "Debe ingresar los comentarios";
         } else {
             $error["comentarios_cierre"] = "";
         }
         if ($correcto) {
             $data = array("est_ia_id" => Emergencia_Estado_Model::FINALIZADA, "eme_d_fecha_cierre" => spanishDateToISO($params["fecha_cierre"]), "eme_c_comentario_cierre" => $params["comentarios_cierre"]);
             $this->emergencia_model->query()->update($data, "eme_ia_id", $emergencia->eme_ia_id);
             Evento_historial::putHistorial($emergencia->eme_ia_id, 'La emergencia ha sido finalizada: ' . $params["comentarios_cierre"]);
         }
         $respuesta = array("correcto" => $correcto, "error" => $error);
         echo json_encode($respuesta);
     } else {
         show_404();
     }
 }
 /**
  * Envia correo con reporte
  */
 public function ajax_enviar_correo()
 {
     $correcto = false;
     $pdf = null;
     $params = $this->input->post(null, true);
     $emergencia = $this->_emergencia_model->getById($params["id"]);
     if (!is_null($emergencia)) {
         $codigo = $this->_emergencia_model->getNumeracionReporteEmergencia($emergencia->eme_ia_id);
         $this->load->model('usuario_model', 'UsuarioModel');
         $destinatarios = array();
         //se genera el reporte
         $mapa = false;
         if (isset($params["adjuntar_reporte"]) && $params["adjuntar_reporte"] == 1) {
             if (isset($params['adjuntar_mapa']) && $params['adjuntar_mapa'] == 1) {
                 $this->emergencia_pdf->setHashImagen($params["hash"]);
                 $mapa = true;
             }
             $pdf = $this->emergencia_pdf->generar($emergencia->eme_ia_id, $mapa, $codigo);
             //$cod_pdf = $codigo .'-'.$emergencia->eme_ia_id;
             $reporte = $this->emergencia_email_reporte->setReporte($pdf, $codigo);
         }
         //se agregan destinatarios
         foreach ($params["destinatario"] as $email) {
             $this->emergencia_email_reporte->addTo($email);
             $destinatario = $this->UsuarioModel->getByEmail($email);
             if (!is_null($destinatario)) {
                 $destinatarios[] = $destinatario['usu_c_nombre'] . ' ' . $destinatario['usu_c_apellido_paterno'] . ' ' . $destinatario['usu_c_apellido_materno'];
             } else {
                 $destinatarios[] = $email;
             }
         }
         if (isset($params['copia']) && $params['copia'] == 1) {
             $this->emergencia_email_reporte->addTo($this->session->userdata('session_email'));
         }
         //se agregan archivos adjuntos
         if (count($params["archivos"]) > 0) {
             foreach ($params["archivos"] as $id_archivo) {
                 $this->emergencia_email_reporte->setArchivoAdjunto($id_archivo);
             }
         }
         $this->emergencia_email_reporte->setSubject($params["asunto"]);
         $pie_mensaje = '<p>--<br/>Midas - Emergencias<br/>Ministerio de Salud - Gobierno de Chile</p>';
         $this->emergencia_email_reporte->setMessage($params["mensaje"] . $pie_mensaje);
         $correcto = $this->emergencia_email_reporte->send($emergencia->eme_ia_id);
         if ($correcto) {
             if (!is_null($pdf)) {
                 $hash = $this->_guardarReporteTemporal($pdf, $codigo);
                 $this->evento_archivo->setEvento($emergencia->eme_ia_id);
                 $this->_emergencia_model->guardarRegistroReporteEmergencia($emergencia->eme_ia_id, $codigo);
                 $id_reporte = $this->evento_archivo->addArchivo($hash, $params["asunto"], Archivo_Tipo_Model::REPORTE, NULL, $this->session->userdata('session_idUsuario'));
                 $this->evento_archivo->agregarArchivosAnteriores();
                 $this->evento_archivo->guardar();
                 Evento_historial::putHistorial($emergencia->eme_ia_id, 'Se ha enviado el reporte ' . linkArchivo($id_reporte) . ' de la emergencia a los siguientes usuarios: ' . implode(',', $destinatarios));
             }
         }
     }
     $respuesta = array("correcto" => $correcto, "error" => array());
     echo json_encode($respuesta);
 }
 /**
  * 
  * @param int $id_emergencia
  * @throws Exception
  */
 public function setEmergencia($id_emergencia)
 {
     $this->_emergencia = $this->_emergencia_model->getById($id_emergencia);
     if (is_null($this->_emergencia)) {
         throw new Exception(__METHOD__ . " - No existe la emergencia");
     }
     $this->setTipo($this->_emergencia->tip_ia_id);
 }
 /**
  * Retorna datos de ubicacion de la alarma
  * @throws Exception
  */
 public function ajax_posicion_lugar_emergencia()
 {
     header('Content-type: application/json');
     $data = array("correcto" => false);
     $params = $this->input->post(null, true);
     $emergencia = $this->_emergencia_model->getById($params["id"]);
     if (!is_null($emergencia)) {
         $configuracion = $this->_emergencia_mapa_configuracion_model->getByEmergencia($emergencia->eme_ia_id);
         if (!is_null($configuracion) && ($configuracion->latitud != "" && $configuracion->longitud != "")) {
             $latitud = $configuracion->latitud;
             $longitud = $configuracion->longitud;
             $zoom = $configuracion->zoom;
         } else {
             $lugar_emergencia = $this->_emergencia_elementos_model->getPrimerLugarEmergencia($emergencia->eme_ia_id);
             if (!is_null($lugar_emergencia)) {
                 $coordenadas = Zend_Json::decode($lugar_emergencia->coordenadas);
                 $latitud = $coordenadas["center"]["lat"];
                 $longitud = $coordenadas["center"]["lng"];
             } else {
                 $latitud = $emergencia->eme_c_utm_lat;
                 $longitud = $emergencia->eme_c_utm_lng;
             }
             $zoom = 17;
         }
         $data = array("correcto" => true, "resultado" => array("lat" => $latitud, "lon" => $longitud, "nombre" => $emergencia->eme_c_nombre_emergencia, "zoom" => $zoom));
     } else {
         $data["error"] = "La emergencia no existe";
     }
     echo json_encode($data);
 }
 /**
  * Carga archivos asociados a una emergencia al mapa
  */
 public function ajax_kml_emergencia()
 {
     $this->load->library(array("kml/kml_conversiones"));
     header('Content-type: application/json');
     $data = array("correcto" => true, "resultado" => array("elemento" => array()));
     $params = $this->input->post(null, true);
     $emergencia = $this->_emergencia_model->getById($params["id"]);
     if (!is_null($emergencia)) {
         $configuracion = array();
         $mapa = $this->_emergencia_mapa_configuracion_model->getByEmergencia($params["id"]);
         if (!is_null($mapa)) {
             $configuracion = Zend_Json::decode($mapa->configuracion);
         }
         $lista_elementos = $this->_emergencia_kml_model->listaPorEmergencia($emergencia->eme_ia_id);
         if (count($lista_elementos) > 0) {
             foreach ($lista_elementos as $elemento) {
                 $oculto = false;
                 if (isset($configuracion["archivos_ocultos"]) && in_array($elemento["id"], $configuracion["archivos_ocultos"])) {
                     $oculto = true;
                 }
                 $data["correcto"] = true;
                 $data["resultado"]["elemento"][$elemento["id"]] = array("id" => $elemento["id"], "hash" => "archivo_importado_" . $elemento["id"], "oculto" => $oculto, "tipo" => strtoupper($elemento["tipo"]), "nombre" => strtoupper($elemento["nombre"]), "archivo" => $elemento["archivo"], "elementos" => $this->_emergencia_kml_elemento_model->listaPorKml($elemento["id"]));
             }
         }
     } else {
         $data["info"] = "La emergencia no tiene kml asociadados";
     }
     echo Zend_Json::encode($data);
 }
 /**
  * Formulario para editar alarma
  */
 public function editar()
 {
     $this->load->helper(array("modulo/emergencia/emergencia_form", "modulo/direccion/comuna", "modulo/alarma/alarma_form"));
     $params = $this->uri->uri_to_assoc();
     $alarma = $this->_emergencia_model->getById($params["id"]);
     if (!is_null($alarma)) {
         $descripcion = $alarma->eme_c_descripcion;
         $informacion_adicional = $alarma->eme_c_informacion_adicional;
         $data = array("eme_id" => $alarma->eme_ia_id, "nombre_informante" => $alarma->eme_c_nombre_informante, "nombre_emergencia" => $alarma->eme_c_nombre_emergencia, "id_tipo_emergencia" => $alarma->tip_ia_id, "id_estado_emergencia" => $alarma->est_ia_id, "nombre_lugar" => $alarma->eme_c_lugar_emergencia, "observacion" => $alarma->eme_c_observacion, "informacion_adicional" => $informacion_adicional, "descripcion" => $descripcion, "fecha_emergencia" => ISODateTospanish($alarma->eme_d_fecha_emergencia), "latitud_utm" => $alarma->eme_c_utm_lat, "longitud_utm" => $alarma->eme_c_utm_lng, "nivel_emergencia" => $alarma->eme_nivel);
         if ($alarma->est_ia_id == Emergencia_Estado_Model::EN_CURSO or $alarma->est_ia_id == Emergencia_Estado_Model::FINALIZADA) {
             $formulario = unserialize($alarma->eme_c_datos_tipo_emergencia);
             foreach ($formulario as $key => $value) {
                 $data['form_tipo_' . $key] = $value;
             }
         }
         $lista_comunas = $this->_emergencia_comuna_model->listaComunasPorEmergencia($alarma->eme_ia_id);
         foreach ($lista_comunas as $comuna) {
             $data["lista_comunas"][] = $comuna["com_ia_id"];
         }
         $data["form_name"] = "form_editar";
         $this->load->view("pages/evento/form", $data);
     } else {
         show_404();
     }
 }
 /**
  * Trae datos de casos de fiebre
  */
 public function json_casos_febriles()
 {
     header('Content-type: application/json');
     $this->load->model("casos_febriles_estado_model");
     $this->load->model("casos_febriles_enfermedades_model", "_casos_febriles_enfermedades_model");
     $this->load->model("casos_febriles_model", "_rapanui_dengue_model");
     $this->load->helper(array("modulo/usuario/usuario", "modulo/casos_febriles/permiso"));
     $this->load->library(array("module/evento/evento_configuracion"));
     $params = $this->input->post(null, true);
     $emergencia = $this->_emergencia_model->getById($params["id"]);
     if (is_null($emergencia)) {
         throw new Exception("La emergencia no existe");
     }
     $this->evento_configuracion->setEvento($emergencia->eme_ia_id);
     $casos = array();
     $lista = $this->_rapanui_dengue_model->listar(array("comuna" => $this->evento_configuracion->listaComunas()));
     if ($lista != null) {
         foreach ($lista as $row) {
             $ok = true;
             $propiedades = Zend_Json::decode($row["propiedades"]);
             if ($ok) {
                 $propiedades["MÉDICO"] = (string) nombreUsuario($row["id_usuario"]);
                 if (!permisoCasosFebriles("datos_personales")) {
                     unset($propiedades["RUN"]);
                     unset($propiedades["NOMBRE"]);
                     unset($propiedades["APELLIDO"]);
                     unset($propiedades["TELEFONO"]);
                     unset($propiedades["NUMERO PASAPORTE"]);
                 }
                 $enfermedades_confirmadas = array();
                 if ($row["id_estado"] == Casos_Febriles_Estado_Model::CONFIRMADO) {
                     $lista_enfermedades = $this->_casos_febriles_enfermedades_model->listarPorCaso($row["id"]);
                     if (!is_null($lista_enfermedades)) {
                         foreach ($lista_enfermedades as $enfermedad) {
                             $enfermedades_confirmadas[] = array("id" => $enfermedad["id_enfermedad"], "letra" => strtoupper(substr($enfermedad["nombre"], 0, 1)), "nombre" => strtoupper($enfermedad["nombre"]));
                         }
                     }
                 }
                 $coordenadas = json_decode($row["coordenadas"]);
                 $fecha = DateTime::createFromFormat("Y-m-d H:i:s", $row["fecha"]);
                 $propiedades["TIPO"] = "CASOS FEBRILES";
                 $casos[] = array("id" => $row["numero_caso"], "fecha_ingreso" => $fecha->format("d/m/Y"), "id_estado" => $row["id_estado"], "propiedades" => $propiedades, "enfermedades" => $enfermedades_confirmadas, "lat" => $coordenadas->lat, "lng" => $coordenadas->lng);
             }
         }
     }
     echo json_encode(array("correcto" => true, "lista" => $casos));
 }
 /**
  * Retorna informacion de la emergencia
  */
 public function ajax_emergencia_info()
 {
     $respuesta = array();
     $params = $this->input->post(null, true);
     $emergencia = $this->EmergenciaModel->getById($params["id"]);
     if (!is_null($emergencia)) {
         $nombre_tipo = "";
         $tipo = $this->EmergenciaTipoModel->getById($emergencia->tip_ia_id);
         if (!is_null($tipo)) {
             $nombre_tipo = $tipo->aux_c_nombre;
         }
         $respuesta = array("nombre_emergencia" => $emergencia->eme_c_nombre_emergencia, "nombre_informante" => $emergencia->eme_c_nombre_informante, "tipo" => $nombre_tipo);
     }
     $this->load->view("pages/home/ajax_emergencia_info", $respuesta);
 }
 /**
  * Popup que muestra capas
  * @throws Exception
  */
 public function popup_capas_comuna()
 {
     $this->load->helper(array("modulo/capa/capa", "modulo/visor/visor"));
     $params = $this->input->post(null, true);
     $emergencia = $this->_emergencia_model->getById($params["id"]);
     if (!is_null($emergencia)) {
         $lista_comunas = $this->emergencia_comuna->listComunas($emergencia->eme_ia_id);
         if (count($lista_comunas) > 0) {
             $lista_capas = array();
             $lista_tipos = $this->_tipo_capa_model->listarCategoriasPorComunas($lista_comunas);
             if (count($lista_tipos) > 0) {
                 foreach ($lista_tipos as $tipo) {
                     $lista_capas[] = array("id_categoria" => $tipo["ccb_ia_categoria"], "nombre_categoria" => $tipo["ccb_c_categoria"]);
                 }
             }
             $this->load->view("pages/mapa_capas/popup-capas", array("capas" => $lista_capas, "seleccionadas" => $params["capas"], "comunas" => $lista_comunas));
         }
     } else {
         throw new Exception("La emergencia no existe");
     }
 }
 /**
  * 
  * @param int $id_emergencia
  */
 public function setEmergencia($id_emergencia)
 {
     $this->_emergencia = $this->_emergencia_model->getById($id_emergencia);
 }