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; } }