<?php include_once "entidad/Horario.php"; $horario1 = new Horario(); $horario1->setIngreso('01:00'); $horario1->setEgreso('13:00'); $horario2 = new Horario(); $horario2->setIngreso('15:00'); $horario2->setEgreso('18:00'); echo 'Superposicion horario ? ' . $horario1->superponeCon($horario2);
/** * 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 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; }