Ejemplo n.º 1
0
 protected function saveCiclolectivo($ciclolectivo)
 {
     //si se guarda el ciclo y se marca como actual
     //los demas ciclo del establecimiento tiene que quedar como ACUAL = false
     $con = Propel::getConnection();
     try {
         $con->beginTransaction();
         if ($ciclolectivo->getActual()) {
             $c1 = new Criteria();
             $c1->add(CiclolectivoPeer::FK_ESTABLECIMIENTO_ID, $this->getUser()->getAttribute('fk_establecimiento_id'));
             $c2 = new Criteria();
             $c2->add(CiclolectivoPeer::ACTUAL, false);
             BasePeer::doUpdate($c1, $c2, $con);
         }
         $ciclolectivo->setFkEstablecimientoId($this->getUser()->getAttribute('fk_establecimiento_id'));
         $isNew = $ciclolectivo->isNew();
         $ciclolectivo->save();
         if ($isNew) {
             # Codigo para copiar las divisiones del ciclo lectivo actual al nuevo
             # La consulta debe contemplar que lo haga desde el ciclo lectivo actual
             if ($this->getRequestParameter('importar')) {
                 $ciclo_actual = CiclolectivoPeer::retrieveByPk($this->getUser()->getAttribute('fk_ciclolectivo_id'));
                 if ($ciclo_actual) {
                     $this->logMessage('ciclo_actual: ' . $ciclo_actual, 'debug');
                     //clonar turnos
                     foreach ($ciclo_actual->getTurnos() as $turno) {
                         $nt = new Turno();
                         $nt->setFkCiclolectivoId($ciclolectivo->getId());
                         $nt->setHoraInicio($turno->getHoraInicio());
                         $nt->setHoraFin($turno->getHoraFin());
                         $nt->setDescripcion($turno->getDescripcion());
                         $nt->save();
                         //clonar las divisiones
                         foreach ($turno->getDivisions() as $division) {
                             $this->logMessage('division: ' . $division, 'debug');
                             $nd = new Division();
                             $nd->setFkAnioId($division->getFkAnioId());
                             $nd->setDescripcion($division->getDescripcion());
                             $nd->setFkTurnoId($nt->getId());
                             $nd->setFkOrientacionId($division->getFkOrientacionId());
                             $nd->setOrden($division->getOrden());
                             $nd->save();
                         }
                     }
                 } else {
                     //no existe el ciclo actual
                     $this->getUser()->setFlash('error', 'No hay un ciclo actual seleccionado');
                 }
             }
         }
         $con->commit();
         if ($ciclolectivo->getActual()) {
             //cambio el attributo porque se cambio el ciclo actual
             $this->getUser()->setAttribute('fk_ciclolectivo_id', $ciclolectivo->getId());
             $this->getUser()->setAttribute('ciclolectivo_descripcion', $ciclolectivo->getDescripcion());
         }
     } catch (Exception $e) {
         $con->rollBack();
         throw $e;
     }
 }