/** * Graba las asistencias */ public function executeGrabar() { // inicializando variables $aDatosTipoasistencia = array(); // tomando los datos del formulario $division_id = $this->getRequestParameter('division_id'); $vista_id = $this->getRequestParameter('vista_id'); $d = $this->getRequestParameter('dia'); $m = $this->getRequestParameter('mes'); $y = $this->getRequestParameter('ano'); $destino = "asistencia/index?division_id={$division_id}&dia={$d}&mes={$m}&ano={$y}&vistas={$vista_id}"; if ($this->getRequestParameter('alumno_id')) { $alumno_id = $this->getRequestParameter('alumno_id'); $destino .= "&alumno_id={$alumno_id}"; } $aAsistencia = $this->getRequestParameter('asistencia'); $cantAsistencia = count($aAsistencia); if ($cantAsistencia > 0) { // tomo los tipos de asistencias $aDatosTablaTipoAsistencias = $this->getTiposasistencias(); //grabo al disco $con = Propel::getConnection(); // Propel::getConnection() try { $con->beginTransaction(); $criteria = new Criteria(); foreach ($aAsistencia as $alumno_id => $aPeriodo) { foreach ($aPeriodo as $fecha => $Tipoasistencia) { $cton1 = $criteria->getNewCriterion(AsistenciaPeer::FK_ALUMNO_ID, $alumno_id); $cton2 = $criteria->getNewCriterion(AsistenciaPeer::FECHA, $fecha); $cton1->addAnd($cton2); $criteria->addOr($cton1); } } AsistenciaPeer::doDelete($criteria); foreach ($aAsistencia as $alumno_id => $aPeriodo) { foreach ($aPeriodo as $fecha => $Tipoasistencia) { $Asistencia = new Asistencia(); $Tipoasistencia = strtoupper($Tipoasistencia); if (array_key_exists($Tipoasistencia, $aDatosTablaTipoAsistencias)) { $Asistencia->setFkAlumnoId($alumno_id); list($y, $m, $d) = split("[/. -]", $fecha); $fecha = "{$y}-{$m}-{$d}"; $Asistencia->setFecha($fecha); $Asistencia->setFkTipoasistenciaId($aDatosTablaTipoAsistencias[$Tipoasistencia][0]); $Asistencia->save(); } } } $con->commit(); } catch (PDOException $e) { $con->rollBack(); throw $e; } } return $this->redirect($destino); }