/**
  * Antes de insertar hay que comprobar que no se exceda
  * el número máximo de banners permitido por zona
  */
 public function validaLogico()
 {
     parent::validaLogico();
     if ($this->getPrimaryKeyValue() == '') {
         // Voy a insertar
         $zona = new SldZonas($this->IdZona);
         $slider = new SldSliders();
         $rows = $slider->cargaCondicion("count(Id) as nMax", "IdZona='{$this->IdZona}'");
         if ($zona->getNumeroMaximoSliders() > 0 and $zona->getNumeroMaximoSliders() < $rows[0]['nMax'] + 1) {
             $this->_errores[] = "Se ha superado el número de sliders para la zona {$zona->getTitulo()}. Consulte con el administrador de la web";
         }
         unset($slider);
         unset($zona);
     }
     $filtro = $this->getPrimaryKeyValue() == '' ? '1' : "Id<>'{$this->getPrimaryKeyValue()}'";
     $sld = new SldSliders();
     $rows = $sld->cargaCondicion("distinct IdTipo", $filtro);
     unset($sld);
     foreach ($rows as $row) {
         $tiposExistentes[$row['IdTipo']] = true;
     }
     // Comprobar la jerarquía de los sliders
     $query = "";
     if ($this->IdTipo > '0') {
         if ($tiposExistentes['1']) {
             $this->_errores[] = "Ya existe un slider fijo para toda la WEB";
         } else {
             if ($this->IdTipo == '1') {
                 $this->_alertas[] = "Los posibles sliders fijos que hubiese pasan a ser variables";
                 $query = "UPDATE {$this->getDataBaseName()}.SldSliders SET IdTipo='0' WHERE IdTipo>'0'";
             }
             if ($this->IdTipo == '2' and $tiposExistentes['2']) {
                 $query = "UPDATE {$this->getDataBaseName()}.SldSliders SET IdTipo='0' WHERE IdTipo='{$this->IdTipo}'";
                 $this->_alertas[] = "Ya existía un slider fijo para el HOME, ha sido cambiado";
             }
             if ($this->IdTipo == '3' and $tiposExistentes['3']) {
                 $query = "UPDATE {$this->getDataBaseName()}.SldSliders SET IdTipo='0' WHERE IdTipo='{$this->IdTipo}'";
                 $this->_alertas[] = "Ya existía un slider fijo para la WEB excepto el HOME, ha sido cambiado";
             }
             if ($query) {
                 $em = new EntityManager($this->getConectionName());
                 if ($em->getDbLink()) {
                     $em->query($query);
                     //echo $query;
                 }
                 $em->desConecta();
                 unset($em);
             }
         }
     }
 }
 /**
  * Devuelve un array anidado de zonas de sliders con sus sliders
  * 
  * @return array Array de zonas y sliders
  */
 public function getArbolZonasSliders()
 {
     $zona = new SldZonas();
     $zonas = $zona->cargaCondicion("Id,Titulo", "1", "SortOrder ASC");
     unset($zona);
     $arbol = array();
     foreach ($zonas as $zona) {
         $slider = new SldSliders();
         $sliders = $slider->cargaCondicion('Id', "IdZona='{$zona['Id']}'", "SortOrder ASC");
         unset($slider);
         $arbol[$zona['Id']]['titulo'] = $zona['Titulo'];
         $arbol[$zona['Id']]['nSliders'] = count($sliders);
         foreach ($sliders as $slider) {
             $arbol[$zona['Id']]['sliders'][] = new SldSliders($slider['Id']);
         }
     }
     return $arbol;
 }