/**
  * Imprime una fila individual de la tabla.
  *
  * @param SemanaEspecial $semanaEspecial Semana especial a imprimir.
  * @param integer $fila Número de semana especial que se está imprimiendo
  */
 protected function imprimirFila($semanaEspecial, $fila)
 {
     // Debe sumarse uno a la fila porque la fila 0 es la cabecera
     $this->tabla->setCellContents($fila + 1, 0, $semanaEspecial->getDescripcion());
     $this->tabla->setCellContents($fila + 1, 1, $semanaEspecial->imprimirInicio());
     $this->tabla->setCellContents($fila + 1, 2, $semanaEspecial->imprimirFin());
     $this->tabla->setCellContents($fila + 1, 3, $this->acciones($semanaEspecial->getIdSemanaEspecial()));
     $this->tabla->setRowAttributes($fila + 1, $this->clase, false);
 }
 public function getSemanaEspecial($idSemanaEspecial)
 {
     $connection = parent::initDB();
     $query = "SELECT idSemanaEspecial, periodo, descripcion, inicio, fin " . "FROM semana_especial " . "WHERE idSemanaEspecial = {$idSemanaEspecial} ";
     $result = mysql_query($query);
     if (mysql_num_rows($result) != 1) {
         throw new Exception('No se pudo obtener la semana especial');
     }
     $row = mysql_fetch_array($result);
     $semanaEspecial = new SemanaEspecial();
     $semanaEspecial->setIdSemanaEspecial($row['idSemanaEspecial']);
     $semanaEspecial->setPeriodo($this->getPeriodo($row['periodo']));
     $semanaEspecial->setDescripcion($row['descripcion']);
     $semanaEspecial->setInicioISO($row['inicio']);
     $semanaEspecial->setFinISO($row['fin']);
     parent::closeDB($connection);
     return $semanaEspecial;
 }
 /**
  * Realiza las validaciones necesarias y agrega una semana especial al período actual.
  * Informa errores mediante excepciones.
  */
 private function agregarSemanaEspecial()
 {
     if (isset($_REQUEST['idPeriodo']) && isset($_REQUEST['fechaInicioSemanaEspecial']) && isset($_REQUEST['fechaFinSemanaEspecial']) && isset($_REQUEST['descripcionSemanaEspecial'])) {
         // Acciones ejecutadas
         $semanaEspecial = new SemanaEspecial();
         $semanaEspecial->setPeriodo($this->gestorPeriodos->getPeriodo($_REQUEST['idPeriodo']));
         $semanaEspecial->setDescripcion($_REQUEST['descripcionSemanaEspecial']);
         $semanaEspecial->setInicio($_REQUEST['fechaInicioSemanaEspecial']);
         $semanaEspecial->setFin($_REQUEST['fechaFinSemanaEspecial']);
         // Impresion
         imprimirTabulados(5);
         echo '<div class="tablaTituloBotones">';
         try {
             $this->gestorPeriodos->insertarSemanaEspecial($semanaEspecial);
             imprimirTabulados(6);
             echo '<h3>La semana especial:</h3>';
             $semanasEspeciales = array();
             array_push($semanasEspeciales, $semanaEspecial);
             $tabla = new TablaSemanasEspecialesAgregadas($semanasEspeciales);
             $tabla->imprimir();
             imprimirTabulados(6);
             echo '<h3>Ha sido agregada exitosamente</h3>';
         } catch (Exception $excepcion) {
             imprimirTabulados(5);
             echo '<h2>Se produjo un error al procesar la solicitud:</h2><br />';
             imprimirTabulados(5);
             echo '<h3>' . $excepcion->getMessage() . '</h3>';
         }
         imprimirTabulados(5);
         echo '</div>';
         $this->imprimirPeriodo($_REQUEST['idPeriodo']);
     } else {
         throw new Exception('No se especificó un parámetro');
     }
 }
 /**
  * Imprime una fila de tabla con una semana especial y coloca campos para editar el mismo.
  *
  * @param SemanaEspecial $semanaEspecial Semana especial a editar.
  * @param integer $fila Número de semana especial que se está imprimiendo.
  */
 private function filaTablaEditar($semanaEspecial, $fila)
 {
     // Debe sumarse uno a la fila porque la fila 0 es la cabecera
     // Se abre un formulario para editar los campos
     $this->tabla->setCellContents($fila + 1, 0, $this->formulario . '<input class="campoTexto" type="text" name="descripcionSemanaEspecial" size="30" value="' . $semanaEspecial->getDescripcion() . '" />');
     $this->tabla->setCellContents($fila + 1, 1, $semanaEspecial->imprimirInicio());
     $this->tabla->setCellContents($fila + 1, 2, $semanaEspecial->imprimirFin());
     $this->tabla->setCellContents($fila + 1, 3, $this->accionesFilaTablaEditar($semanaEspecial->getIdSemanaEspecial()));
     $this->tabla->setRowAttributes($fila + 1, $this->clase, false);
 }