public static function countTareasPendientes()
 {
     $c = TareaPeer::getCriterioAlcance();
     $hoy = new Date();
     $hoy_str = $hoy->toString(FMT_DATEMYSQL);
     $c->addAnd(TareaPeer::FECHA_INICIO, $hoy_str, Criteria::LESS_EQUAL);
     $c->addAnd(TareaPeer::FECHA_VENCIMIENTO, $hoy_str, Criteria::GREATER_EQUAL);
     //$c->addAnd();//tomar en cuenta los estados?
     $cuantas = TareaPeer::doCount($c);
     //param 2: distinct.
     return $cuantas;
 }
 /**
  * Returns the number of related Tarea objects.
  *
  * @param      Criteria $criteria
  * @param      boolean $distinct
  * @param      PropelPDO $con
  * @return     int Count of related Tarea objects.
  * @throws     PropelException
  */
 public function countTareas(Criteria $criteria = null, $distinct = false, PropelPDO $con = null)
 {
     if ($criteria === null) {
         $criteria = new Criteria(UsuarioPeer::DATABASE_NAME);
     } else {
         $criteria = clone $criteria;
     }
     if ($distinct) {
         $criteria->setDistinct();
     }
     $count = null;
     if ($this->collTareas === null) {
         if ($this->isNew()) {
             $count = 0;
         } else {
             $criteria->add(TareaPeer::ID_USUARIO, $this->id_usuario);
             $count = TareaPeer::doCount($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 count of the collection.
             $criteria->add(TareaPeer::ID_USUARIO, $this->id_usuario);
             if (!isset($this->lastTareaCriteria) || !$this->lastTareaCriteria->equals($criteria)) {
                 $count = TareaPeer::doCount($criteria, $con);
             } else {
                 $count = count($this->collTareas);
             }
         } else {
             $count = count($this->collTareas);
         }
     }
     return $count;
 }
 /**
  * Para modo telemarketing directo. Muestra la llamada solicitada, para la campaña actual.
  * Es un bucle infinito, a no ser que se acaben todas las llamadas, pendientes.
  * @version 02-04-09
  * @author Ana Martín
  */
 public function mostrarLlamada($num_llamada)
 {
     /*  Para calcular el número total de llamadas que le quedan. */
     $c = $this->getCriterio();
     $c->add(TareaPeer::ID_ESTADO_TAREA, TareaPeer::ID_ESTADO_EVENTO_PLANEADO);
     $c->add(TareaPeer::FECHA_INICIO, date('Y-m-d H:i:s'), Criteria::LESS_EQUAL);
     $numero_total = TareaPeer::doCount($c);
     /*Fin para*/
     $c = $this->getCriterio();
     $c->add(TareaPeer::ID_ESTADO_TAREA, TareaPeer::ID_ESTADO_EVENTO_PLANEADO);
     $c->add(TareaPeer::FECHA_INICIO, date('Y-m-d H:i:s'), Criteria::LESS_EQUAL);
     $c->addDescendingOrderByColumn(TareaPeer::FECHA_INICIO);
     $c->setOffset($num_llamada);
     $tarea = TareaPeer::doSelectOne($c);
     if ($tarea) {
         return $this->redirect('tareas/show?id_tarea=' . $tarea->getPrimaryKey() . '&num_llam=' . $num_llamada . '&numero_total=' . $numero_total);
     } else {
         if ($num_llamada != 0) {
             $this->mostrarLlamada(0);
         } else {
             $this->getUser()->setFlash('notice_error', 'No hay llamadas pendientes aún, para esta campaña. Intentelo más tarde o pruebe con otra campaña');
             return $this->redirect('tareas/telemarketingDirecto');
         }
     }
 }