示例#1
0
 public static function retrieveForAutoSelect($q, $limit)
 {
     $criteria = new Criteria();
     $pieces = explode(" ", $q);
     $criterions = array();
     $idx = 0;
     $criteria->addJoin(GeoPeer::ID, CircunscripcionPeer::GEO_ID);
     foreach ($pieces as $piece) {
         sfContext::getInstance()->getLogger()->debug("A SEARCH PIECE {$piece}");
         $criterions[$idx] = $criteria->getNewCriterion(GeoPeer::NOMBRE, '%' . $piece . '%', Criteria::LIKE);
         $criteria->addAnd($criterions[$idx]);
         $idx++;
     }
     $criteria->addAscendingOrderByColumn(GeoPeer::NOMBRE);
     $criteria->setLimit($limit);
     $circunscripciones = array();
     foreach (CircunscripcionPeer::doSelect($criteria) as $circunscripcion) {
         $circunscripciones[$circunscripcion->getId()] = (string) $circunscripcion;
     }
     return $circunscripciones;
 }
示例#2
0
 /**
  * Retrieve multiple objects by pkey.
  *
  * @param      array $pks List of primary keys
  * @param      PropelPDO $con the connection to use
  * @throws     PropelException Any exceptions caught during processing will be
  *		 rethrown wrapped into a PropelException.
  */
 public static function retrieveByPKs($pks, PropelPDO $con = null)
 {
     if ($con === null) {
         $con = Propel::getConnection(CircunscripcionPeer::DATABASE_NAME, Propel::CONNECTION_READ);
     }
     $objs = null;
     if (empty($pks)) {
         $objs = array();
     } else {
         $criteria = new Criteria(CircunscripcionPeer::DATABASE_NAME);
         $criteria->add(CircunscripcionPeer::ID, $pks, Criteria::IN);
         $objs = CircunscripcionPeer::doSelect($criteria, $con);
     }
     return $objs;
 }
示例#3
0
 public function getResults($geoName = false, $sorted = true)
 {
     $aKey = "Convocatoria_" . $this->getId() . "-{$geoName}-{$sorted}";
     $cache = sfcontext::getInstance()->getViewCacheManager() ? sfcontext::getInstance()->getViewCacheManager()->getCache() : false;
     if ($cache) {
         $key = md5($aKey);
         $data = unserialize($cache->get($key));
     } else {
         $data = false;
     }
     if (!$data) {
         $res = array();
         $c = new Criteria();
         $c->addJoin(ListaPeer::PARTIDO_ID, PartidoPeer::ID);
         $c->add(ListaPeer::CONVOCATORIA_ID, $this->getId());
         $c->setDistinct();
         $res['partidos'] = PartidoPeer::doSelect($c);
         // Circus
         $c = new Criteria();
         $c->addJoin(ListaPeer::CIRCUNSCRIPCION_ID, CircunscripcionPeer::ID);
         $c->addJoin(CircunscripcionPeer::GEO_ID, GeoPeer::ID);
         $c->add(ListaPeer::CONVOCATORIA_ID, $this->getId());
         $c->addAscendingOrderByColumn(GeoPeer::NOMBRE);
         $c->setDistinct();
         //$this->geos = GeoPeer::doSelect( $c );
         $res['circus'] = CircunscripcionPeer::doSelect($c);
         $instituciones = $this->getEleccion()->getEleccionInstitucions();
         //$this->institucionName = $instituciones[0]->getInstitucion();
         $res['institucionName'] = $instituciones[0]->getInstitucion();
         // Minimo de votos necesario para obtener escaño
         $listas = $this->getListas();
         if ($geoName) {
             $c = new Criteria();
             $c->addJoin(ListaPeer::CIRCUNSCRIPCION_ID, CircunscripcionPeer::ID);
             $c->addJoin(CircunscripcionPeer::GEO_ID, GeoPeer::ID);
             $c->add(ListaPeer::CONVOCATORIA_ID, $this->getId());
             $c->add(GeoPeer::NOMBRE, $geoName);
             //$this->geos = GeoPeer::doSelect( $c );
             $circu = CircunscripcionPeer::doSelectOne($c);
             $numEscanyos = $circu->getEscanyos();
         } else {
             $numEscanyos = 0;
             $circuCounted = array();
             foreach ($listas as $lista) {
                 if (!in_array($lista->getCircunscripcion()->getId(), $circuCounted)) {
                     $circuCounted[] = $lista->getCircunscripcion()->getId();
                     $numEscanyos += $lista->getCircunscripcion()->getEscanyos();
                 }
             }
         }
         $listaElectoral = ListaElectoral::getInstance($this->getId(), false, $geoName);
         $politicos = $listaElectoral->getPoliticos();
         $idx = 0;
         //$this->minSumu = 0;
         $res['minSumu'] = 0;
         //$this->minSumd = 0;
         $res['minSumd'] = 0;
         $res['lastDate'] = null;
         $res['apellidos'] = '';
         $res['nombre'] = '';
         foreach ($politicos as $politico) {
             $idx++;
             if ($idx == $numEscanyos + 1) {
                 $res['minSumu'] = $politico->getSumu();
                 $res['minSumd'] = $politico->getSumd();
                 $res['lastDate'] = $politico->getLastDate();
                 $res['apellidos'] = $politico->getApellidos();
                 $res['nombre'] = $politico->getNombre();
             }
         }
         // Ordenar por escaños
         if ($sorted) {
             $idx = 0;
             $res['totalEscanyos'] = 0;
             foreach ($res['partidos'] as $partido) {
                 $listaElectoral = new ListaElectoral($this->getId(), $partido->getId(), $geoName);
                 $escanyos = $listaElectoral->getEscanyos($res['minSumu'], $res['minSumd'], $res['lastDate'], $res['apellidos']);
                 $res['totalEscanyos'] += $escanyos;
                 for ($j = 0; $j < $idx; $j++) {
                     $listaElectoral2 = ListaElectoral::getInstance($this->getId(), $res['partidos'][$j]->getId(), $geoName);
                     if ($listaElectoral2->getEscanyos($res['minSumu'], $res['minSumd'], $res['lastDate'], $res['apellidos']) < $escanyos) {
                         $partidoTmp = clone $res['partidos'][$idx];
                         $res['partidos'][$idx] = $res['partidos'][$j];
                         $res['partidos'][$j] = $partidoTmp;
                     }
                 }
                 $idx++;
             }
         }
         $data = $res;
         if ($cache) {
             $n = rand(0, 100);
             $cache->set($key, serialize($data ? $data : "zero"), 3600 * $n / 100);
         }
     }
     return $data == "zero" ? 0 : $data;
 }
示例#4
0
文件: BaseGeo.php 项目: voota/voota
 /**
  * Gets an array of Circunscripcion objects which contain a foreign key that references this object.
  *
  * If this collection has already been initialized with an identical Criteria, it returns the collection.
  * Otherwise if this Geo has previously been saved, it will retrieve
  * related Circunscripcions from storage. If this Geo is new, it will return
  * an empty collection or the current collection, the criteria is ignored on a new object.
  *
  * @param      PropelPDO $con
  * @param      Criteria $criteria
  * @return     array Circunscripcion[]
  * @throws     PropelException
  */
 public function getCircunscripcions($criteria = null, PropelPDO $con = null)
 {
     if ($criteria === null) {
         $criteria = new Criteria(GeoPeer::DATABASE_NAME);
     } elseif ($criteria instanceof Criteria) {
         $criteria = clone $criteria;
     }
     if ($this->collCircunscripcions === null) {
         if ($this->isNew()) {
             $this->collCircunscripcions = array();
         } else {
             $criteria->add(CircunscripcionPeer::GEO_ID, $this->id);
             CircunscripcionPeer::addSelectColumns($criteria);
             $this->collCircunscripcions = CircunscripcionPeer::doSelect($criteria, $con);
         }
     } else {
         // criteria has no effect for a new object
         if (!$this->isNew()) {
             // the following code is to determine if a new query is
             // called for.  If the criteria is the same as the last
             // one, just return the collection.
             $criteria->add(CircunscripcionPeer::GEO_ID, $this->id);
             CircunscripcionPeer::addSelectColumns($criteria);
             if (!isset($this->lastCircunscripcionCriteria) || !$this->lastCircunscripcionCriteria->equals($criteria)) {
                 $this->collCircunscripcions = CircunscripcionPeer::doSelect($criteria, $con);
             }
         }
     }
     $this->lastCircunscripcionCriteria = $criteria;
     return $this->collCircunscripcions;
 }
示例#5
0
 public function getEscanyos($minSumu, $minSumd, $lastDate, $apellidos)
 {
     $cache = sfcontext::getInstance()->getViewCacheManager() ? sfcontext::getInstance()->getViewCacheManager()->getCache() : false;
     if ($cache) {
         $aKey = "Escanyos_" . $this->convocatoriaId . "-" . $this->partidoId . "-" . $this->geoName . "-{$minSumu}-{$minSumd}-{$lastDate}-{$apellidos}";
         $key = md5($aKey);
         $data = unserialize($cache->get($key));
     } else {
         $data = false;
     }
     if (!$data) {
         //echo "($aKey-$key)";
         if ($this->geoName) {
             if (!$this->numEscanyos) {
                 $this->numEscanyos = 0;
                 foreach ($this->politicos as $politico) {
                     if ($politico->getSumu() > $minSumu || $politico->getSumu() == $minSumu && $politico->getSumd() < $minSumd || $politico->getSumu() == $minSumu && $politico->getSumd() == $minSumd && $politico->getLastDate() > $lastDate && $minSumu != 0 || $politico->getSumu() == $minSumu && $politico->getSumd() == $minSumd && $politico->getLastDate() == $lastDate && $politico->getApellidos() > $apellidos && $minSumu != 0) {
                         //echo "(".$politico->getApellidos().",".$politico->getSumu().",".$politico->getSumd().",".$politico->getLastDate().")";
                         $this->numEscanyos++;
                     }
                 }
             }
         } else {
             // Circus
             $c = new Criteria();
             $c->addJoin(ListaPeer::CIRCUNSCRIPCION_ID, CircunscripcionPeer::ID);
             $c->addJoin(CircunscripcionPeer::GEO_ID, GeoPeer::ID);
             $c->add(ListaPeer::CONVOCATORIA_ID, $this->convocatoriaId);
             $c->addAscendingOrderByColumn(GeoPeer::NOMBRE);
             $c->setDistinct();
             $circus = CircunscripcionPeer::doSelect($c);
             $this->numEscanyos = 0;
             foreach ($circus as $circu) {
                 $listaElectoral = new ListaElectoral($this->convocatoriaId, $this->partidoId, $circu->getGeo()->getNombre());
                 $res = $this->convocatoria->getResults($circu->getGeo()->getNombre(), false);
                 $sum = $listaElectoral->getEscanyos($res['minSumu'], $res['minSumd'], $res['lastDate'], $res['apellidos']);
                 $this->numEscanyos += $sum;
             }
         }
         $data = $this->numEscanyos;
         if ($cache) {
             $cache->set($key, serialize($data ? $data : "zero"), 3600);
         }
     }
     return $data == "zero" ? 0 : $data;
 }