/**
  * 
  * @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);
 }
 /**
  * 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);
 }
 /**
  * Devuelve datos para grafico de emergencias
  * de mes por año
  */
 public function json_cantidad_emergencia_mes()
 {
     $lista_years = $this->EmergenciaModel->listarYearsConEmergencias();
     $data = array();
     $label_ano = array();
     $xkeys = array();
     for ($i = 0; $i < 12; $i++) {
         $data_year = array();
         $indice = 0;
         foreach ($lista_years as $year) {
             if ($year["ano"] != 0) {
                 if (array_search($year["ano"], $label_ano) === false) {
                     $label_ano[] = $year["ano"];
                 }
                 if (array_search($indice, $xkeys) === false) {
                     $xkeys[] = $indice;
                 }
                 $data_year[$indice] = $this->EmergenciaModel->cantidadEmergenciasMes($i + 1, $year["ano"]);
                 $indice++;
             }
         }
         $data[] = array_merge(array("m" => "2015-" . $this->_corrigeNumeroMes($i + 1)), $data_year);
     }
     $respuesta = array("correcto" => true, "ykeys" => $xkeys, "labels" => $label_ano, "data" => $data);
     echo json_encode($respuesta);
 }
 /**
  * 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);
 }
 /**
  * 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));
 }
 /**
  * Genera nuevo HASH para el evento
  * este hash permite acceder al mapa de forma publica
  * @return string
  */
 protected function _nuevoHash()
 {
     $this->load->library("core/string/random");
     $hash = $this->random->rand_string(45);
     $existe = $this->_emergencia_model->getByHash($hash);
     if (!is_null($existe)) {
         return $this->_nuevoHash();
     } else {
         return $hash;
     }
 }
 /**
  * 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);
 }
 /**
  * 
  * @param array $datos
  */
 protected function _guardaDatosTipoEmergencia($datos)
 {
     $update = array("eme_c_datos_tipo_emergencia" => serialize($datos));
     $this->_emergencia_model->update($update, $this->_emergencia->eme_ia_id);
 }