/**
  * 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();
 }
 public function getHorariosHabitualesSuperpuestos($horario)
 {
     $connection = parent::initDB();
     // Nuevo horario
     if (is_null($horario->getIdHorarioHabitual())) {
         $query = "SELECT idHorarioHabitual, area, dia, ingreso, egreso " . "FROM horario_asignado_habitual " . "WHERE str_to_date('" . $horario->imprimirIngreso() . "', '%H:%i') < egreso AND " . "      ingreso < str_to_date('" . $horario->imprimirEgreso() . "', '%H:%i') AND " . "      dia = " . $horario->getDia()->getIdDiaSemana() . " AND " . "      usuario = '" . $horario->getUsuario()->getNumeroDocumento() . "' AND " . "      activo = 1";
     } else {
         // Horario existente
         $query = "SELECT idHorarioHabitual, area, dia, ingreso, egreso " . "FROM horario_asignado_habitual " . "WHERE str_to_date('" . $horario->imprimirIngreso() . "', '%H:%i') < egreso AND " . "      ingreso < str_to_date('" . $horario->imprimirEgreso() . "', '%H:%i') AND " . "      dia = " . $horario->getDia()->getIdDiaSemana() . " AND " . "      usuario = '" . $horario->getUsuario()->getNumeroDocumento() . "' AND " . "      idHorarioHabitual != " . $horario->getIdHorarioHabitual() . " AND " . "      activo = 1";
     }
     $result = mysql_query($query);
     $horarios = array();
     while ($row = mysql_fetch_array($result)) {
         $horario = new HorarioHabitual();
         $horario->setIdHorarioHabitual($row['idHorarioHabitual']);
         $horario->setArea($this->areaDAO->getArea($row['area']));
         $horario->setDia(new DiaSemana($row['dia']));
         $horario->setIngreso($row['ingreso']);
         $horario->setEgreso($row['egreso']);
         array_push($horarios, $horario);
     }
     parent::closeDB($connection);
     return $horarios;
 }