/** * 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(); }