/**
  * Setea la capa
  * @param int $id_capa
  * @throws Exception
  */
 public function setCapa($id_capa)
 {
     $this->_capa = $this->_capa_model->getById($id_capa);
     if (is_null($this->_capa)) {
         throw new Exception(__METHOD__ . " - La capa no existe");
     }
 }
 /**
  * Contenido de tabs
  */
 protected function _htmlTabCapaContent($id_categoria)
 {
     $html = "<div class=\"tab-content\">";
     $primero = true;
     $lista_capas = $this->_capa_model->listarCapasPorComunasYCategoria($id_categoria, $this->_comunas);
     foreach ($lista_capas as $key => $capa) {
         $class = "";
         if ($primero) {
             $class = "active";
         }
         $html .= "<div role=\"tabpanel\" class=\"tab-pane top-spaced " . $class . "\" id=\"capa_" . $capa["cap_ia_id"] . "\">";
         $subcapas = $this->_capa_detalle_model->listarPorCapaComuna($capa["cap_ia_id"], $this->_comunas);
         $html .= "<div class=\"col-lg-12\">" . $this->_ci->load->view("pages/mapa/grilla-subcapas", array("sufijo" => "comuna", "subcapas" => $subcapas, "id_capa" => $capa["cap_ia_id"]), true) . "</div>";
         $html .= "</div>";
         $primero = false;
     }
     $html .= "</div>";
     return $html;
 }
 /**
  * 
  */
 public function ajax_elemento()
 {
     $this->load->helper(array("modulo/capa/capa"));
     $json = array();
     header('Content-type: application/json');
     $data = array("correcto" => false, "error" => "");
     $params = $this->input->post(null, true);
     $elemento = $this->_capa_detalle_elemento_model->getById($params["id"]);
     if (!is_null($elemento)) {
         $subcapa = $this->_capa_detalle_model->getById($elemento->poligono_capitem);
         $capa = $this->_capa_model->getById($subcapa->geometria_capa);
         if ($subcapa->geometria_icono != "") {
             $icono = base_url($subcapa->geometria_icono);
         } else {
             $icono = base_url($capa->icon_path);
         }
         $json = array("id" => $elemento->poligono_id, "id_subcapa" => $elemento->poligono_capitem, "propiedades" => unserialize($elemento->poligono_propiedades), "geojson" => unserialize($elemento->poligono_geometria), "zona" => $capa->cap_c_geozone_number . $capa->cap_c_geozone_letter, "color" => $capa->color, "icono" => $icono);
     }
     $data["correcto"] = true;
     $data["resultado"] = $json;
     echo json_encode($data);
 }
 public function ajax_grilla_items_subcapas_server()
 {
     $this->load->database();
     $params = $this->uri->uri_to_assoc();
     $subcapa = $params['subcapa'];
     $this->load->model('capa_model', 'capa_model');
     $sub_capa = $this->capa_model->getSubCapa($subcapa);
     $id_usuario_capa = $sub_capa['cap_ia_usuario'];
     $id_usuario = $this->session->userdata('session_idUsuario');
     $arr_cabeceras = explode(",", $sub_capa['cap_c_propiedades']);
     $aColumns = array('com_c_nombre', 'prov_c_nombre', 'reg_c_nombre', 'poligono_propiedades', 'poligono_id');
     // DB table to use
     $sTable = 'capas_poligonos_informacion';
     //
     $iDisplayStart = $this->input->get_post('iDisplayStart', true);
     $iDisplayLength = $this->input->get_post('iDisplayLength', true);
     $iSortCol_0 = $this->input->get_post('iSortCol_0', true);
     $iSortingCols = $this->input->get_post('iSortingCols', true);
     $sSearch = $this->input->get_post('sSearch', true);
     $sEcho = $this->input->get_post('sEcho', true);
     $where = ' WHERE poligono_capitem = ' . $subcapa;
     $limit = '';
     // Paging
     if (isset($iDisplayStart) && $iDisplayLength != '-1') {
         $limit .= ' LIMIT ' . $iDisplayStart . ',' . $iDisplayLength;
         //$this->db->limit($this->db->escape_str($iDisplayLength), $this->db->escape_str($iDisplayStart));
     }
     // Ordering
     $order = '';
     if (isset($iSortCol_0)) {
         for ($i = 0; $i < intval($iSortingCols); $i++) {
             $iSortCol = $this->input->get_post('iSortCol_' . $i, true);
             $bSortable = $this->input->get_post('bSortable_' . intval($iSortCol), true);
             $sSortDir = $this->input->get_post('sSortDir_' . $i, true);
             if ($bSortable == 'true') {
                 if (empty($order)) {
                     $order .= ' ORDER BY ';
                 }
                 $order .= $aColumns[intval($this->db->escape_str($iSortCol))] . ' ' . $sSortDir;
                 //$this->db->order_by($aColumns[intval($this->db->escape_str($iSortCol))], $this->db->escape_str($sSortDir));
             }
         }
     }
     /* 
      * Filtering
      * NOTE this does not match the built-in DataTables filtering which does it
      * word by word on any field. It's possible to do here, but concerned about efficiency
      * on very large tables, and MySQL's regex functionality is very limited
      */
     if (isset($sSearch) && !empty($sSearch)) {
         $like = '';
         for ($i = 0; $i < count($aColumns); $i++) {
             $bSearchable = $this->input->get_post('bSearchable_' . $i, true);
             // Individual column filtering
             if (isset($bSearchable) && $bSearchable == 'true') {
                 if (!empty($like)) {
                     $like .= ' OR ';
                 }
                 $like .= $aColumns[$i] . ' LIKE "%' . $sSearch . '%"';
                 //$this->db->or_like($aColumns[$i], $this->db->escape_like_str($sSearch));
             }
         }
         $where .= ' AND (' . $like . ') ';
     }
     $query = 'select SQL_CALC_FOUND_ROWS ' . str_replace(' , ', ' ', implode(', ', $aColumns)) . ' from ' . $sTable . ' ';
     $query .= 'LEFT JOIN comunas c ON c.com_ia_id = capas_poligonos_informacion.poligono_comuna
                 LEFT JOIN provincias p ON (p.prov_ia_id = c.prov_ia_id or p.prov_ia_id = capas_poligonos_informacion.poligono_provincia) 
                 LEFT JOIN regiones r ON (r.reg_ia_id = p.reg_ia_id or r.reg_ia_id = capas_poligonos_informacion.poligono_region) ';
     $this->load->model('rol_model', 'rolModel');
     $puedeEditar = false;
     if ($this->usuario->tieneRol(27) or $id_usuario == $id_usuario_capa) {
         $puedeEditar = true;
     }
     if (!$puedeEditar) {
         $regiones = $this->session->userdata('session_regiones');
         $arr_regionesUsuarios = explode(',', $regiones);
         $arr_provinciasUsuario = array();
         $arr_comunasUsuario = array();
         $this->load->model('provincia_model');
         $this->load->model('comuna_model');
         foreach ($arr_regionesUsuarios as $id_region) {
             $provinciasRegion = $this->provincia_model->listaProvinciasPorRegion($id_region);
             foreach ($provinciasRegion as $prov) {
                 $arr_provinciasUsuario[] = $prov['prov_ia_id'];
                 $comunasProvincia = $this->comuna_model->getComunasPorProvincia($prov['prov_ia_id']);
                 foreach ($comunasProvincia as $com) {
                     $arr_comunasUsuario[] = $com->com_ia_id;
                 }
             }
         }
         $provincias = implode(",", $arr_provinciasUsuario);
         $comunas = implode(",", $arr_comunasUsuario);
         $where .= ' and ((r.reg_ia_id IN (' . $regiones . ') or poligono_region IN (' . $regiones . ')) 
                                 or (p.prov_ia_id IN (' . $provincias . ') or poligono_provincia IN (' . $provincias . ')) 
                                 or (c.com_ia_id IN (' . $comunas . ') or poligono_comuna IN (' . $comunas . ')))';
     }
     $query = $query . $where . $order . $limit;
     /*$this->db->where('poligono_capitem',$subcapa);
       $this->db->join('comunas c','c.com_ia_id = capas_poligonos_informacion.poligono_comuna','inner');
       $this->db->join('provincias p','p.prov_ia_id = c.prov_ia_id','inner');
       $this->db->join('regiones r','r.reg_ia_id = p.reg_ia_id','inner');*/
     // Select Data
     //$this->db->select('SQL_CALC_FOUND_ROWS '.str_replace(' , ', ' ', implode(', ', $aColumns)), false);
     //$rResult = $this->db->get($sTable);
     $rResult = $this->db->query($query);
     // Data set length after filtering
     $foundRows = $this->db->query('select FOUND_ROWS() AS found_rows');
     $foundRows = $foundRows->result_array();
     $iFilteredTotal = $foundRows[0]['found_rows'];
     // Total data set length
     //$iTotal = $this->db->count_all($sTable);ex
     // Output
     $output = array('sEcho' => intval($sEcho), 'iTotalRecords' => $iFilteredTotal, 'iTotalDisplayRecords' => $iFilteredTotal, 'aaData' => array());
     foreach ($rResult->result_array() as $aRow) {
         $row = array();
         foreach ($aColumns as $col) {
             if ($col == 'poligono_propiedades') {
                 $arr_propiedades = array();
                 $propiedades = unserialize($aRow['poligono_propiedades']);
                 foreach ($arr_cabeceras as $cabecera) {
                     $row[] = $propiedades[$cabecera];
                 }
             } elseif ($col == 'poligono_id') {
                 $buttons = '<div class="btn-group-vertical">';
                 if (permisoCapas("editar")) {
                     $buttons .= '<a class="btn btn-xs btn-default btn-square" onclick="$(\'#cargador\').show();Layer.editarItemSubcapa(' . $aRow[$col] . ');$(\'#cargador\').fadeOut();" >
                                     <i class="fa fa-edit"></i>
                                 </a>';
                 }
                 if (permisoCapas("eliminar")) {
                     $buttons .= '<a class="btn btn-xs btn-danger btn-square" onclick="Layer.eliminarItemSubcapa(' . $aRow[$col] . ',' . $subcapa . ')">
                                 <i class="fa fa-trash"></i>
                             </a>';
                 }
                 $buttons .= '</div>';
                 $row[] = $buttons;
             } else {
                 $row[] = $aRow[$col];
             }
         }
         $output['aaData'][] = $row;
     }
     echo json_encode($output);
 }