コード例 #1
0
 /**
  * Genera objetos HorarioAsignado desde la fecha actual hasta que termina el
  * período al que corresponde el HorarioHabitual dado. Marca como no actvos
  * los horarios que caen en feriados o semanas especiales.
  *
  * @param HorarioHabitual $horarioHabitual
  */
 private function generarHorariosAsignados($horarioHabitual)
 {
     $periodoActual = $this->gestorPeriodos->getPeriodoActual($horarioHabitual->getArea()->getIdArea());
     $fechaFinal = $periodoActual->getFin();
     // Obtiene el primer horario que debe cumplir
     $fecha = new DateTime('next ' . $horarioHabitual->getDia()->getNombreIngles());
     while ($fecha->getTimestamp() <= $fechaFinal->getTimestamp()) {
         $horario = new Horario();
         $horario->setUsuario($horarioHabitual->getUsuario());
         $horario->setIdHorarioHabitual($horarioHabitual->getIdHorarioHabitual());
         $horario->setFecha($fecha->format('d-m-Y'));
         $horario->setIngreso($horarioHabitual->imprimirIngreso());
         $horario->setEgreso($horarioHabitual->imprimirEgreso());
         $horario->setArea($horarioHabitual->getArea());
         $horario->setPeriodo($horarioHabitual->getPeriodo());
         $this->insertarHorario($horario);
         $fecha->modify("+1 week");
     }
     $this->horarioDAO->eliminarHorariosEnFeriados();
     $this->horarioDAO->eliminarHorariosEnSemanasEspeciales();
 }
コード例 #2
0
 public function getHorariosSuperpuestos($horario)
 {
     $connection = parent::initDB();
     // Nuevo horario
     if (is_null($horario->getIdHorario())) {
         $query = "SELECT idHorario, area, fecha, ingreso, egreso " . "FROM horario_asignado " . "WHERE str_to_date('" . $horario->imprimirIngreso() . "', '%H:%i') < egreso AND " . "      ingreso < str_to_date('" . $horario->imprimirEgreso() . "', '%H:%i') AND " . "      fecha = str_to_date('" . $horario->imprimirFecha() . "', '%d-%m-%Y') AND " . "      usuario = '" . $horario->getUsuario()->getNumeroDocumento() . "' AND " . "      activo = 1";
     } else {
         // Horario existente
         $query = "SELECT idHorario, area, fecha, ingreso, egreso " . "FROM horario_asignado " . "WHERE str_to_date('" . $horario->imprimirIngreso() . "', '%H:%i') < egreso AND " . "      ingreso < str_to_date('" . $horario->imprimirEgreso() . "', '%H:%i') AND " . "      fecha = str_to_date('" . $horario->imprimirFecha() . "', '%d-%m-%Y') AND " . "      usuario = '" . $horario->getUsuario()->getNumeroDocumento() . "' AND " . "      idHorario != " . $horario->getIdHorario() . " AND " . "      activo = 1";
     }
     $result = mysql_query($query);
     $horarios = array();
     while ($row = mysql_fetch_array($result)) {
         $horario = new Horario();
         $horario->setIdHorario($row['idHorario']);
         $horario->setArea($this->areaDAO->getArea($row['area']));
         $horario->setFechaISO($row['fecha']);
         $horario->setIngreso($row['ingreso']);
         $horario->setEgreso($row['egreso']);
         array_push($horarios, $horario);
     }
     parent::closeDB($connection);
     return $horarios;
 }