Exemplo n.º 1
0
 /**
  * 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);
 }