public function actionRegistrarParvulos()
 {
     $params = $this->bodyRequest();
     $parvulos = $params['parvulos'];
     $fecha = $params['fecha'];
     $asistenciaModel = Asistencia::model()->findByAttributes(array('fecha' => $fecha));
     if ($asistenciaModel == null) {
         $asistenciaModel = new Asistencia();
         $asistenciaModel->fecha = $fecha;
         if (!$asistenciaModel->save()) {
             $this->sendResponse("No se pudo guardar asistencia model", 500);
         }
     }
     $error = false;
     foreach ($parvulos as $parvulo) {
         $id_parvulo_errores = array();
         $relacionModel = ParvuloAsistencia::model()->findByAttributes(array('id_asistencia' => $asistenciaModel->id_asistencia, 'id_parvulo' => $parvulo['id_parvulo']));
         if ($parvulo['presente'] == "1" && $relacionModel == null) {
             $relacionModel = new ParvuloAsistencia();
             $relacionModel->id_asistencia = $asistenciaModel->id_asistencia;
             $relacionModel->id_parvulo = $parvulo['id_parvulo'];
             if (!$relacionModel->save()) {
                 $error = true;
                 $id_parvulo_errores[] = $parvulo['id_parvulo'];
             }
         } else {
             if ($parvulo['presente'] == "0" && $relacionModel != null) {
                 $relacionModel->delete();
                 $hayOtraRelacion = ParvuloAsistencia::model()->findByAttributes(array('id_asistencia' => $asistenciaModel->id_asistencia));
                 if ($hayOtraRelacion == null) {
                     $asistenciaModel->delete();
                 }
             }
         }
     }
     if (!$error) {
         $this->sendResponse("OK");
     } else {
         $this->sendResponse(array("mensaje" => "No se pudieron guardar los siguientes ids_parvulo", "ids_parvulos" => $id_parvulo_errores), 500);
     }
 }
 public function postCrealista()
 {
     $fecha_fin = Input::get('fecha');
     $fecha_fin_carbon = Carbon::parse($fecha_fin);
     $fecha_inicio_carbon = $fecha_fin_carbon->subDays(Input::get('tipo_lista'))->toDateString();
     $lista = new Lista();
     $lista->fecha_inicio = $fecha_inicio_carbon;
     $lista->fecha_fin = $fecha_fin;
     $lista->save();
     $trabajadores_activos = VistaEmpleado::where('activo', 1)->count();
     $trabajadores = VistaEmpleado::where('activo', 1)->get();
     foreach ($trabajadores as $trabajador) {
         $asistencia = new Asistencia();
         $asistencia->lista_id = $lista->id;
         $asistencia->empleado_id = $trabajador->id;
         $asistencia->save();
         if ($trabajador->departamento_id == 2) {
             $bono_mtto = new BonoMtto();
             $bono_mtto->asistencia_id = $asistencia->id;
             $bono_mtto->save();
         }
     }
     return Redirect::to('personal-operativo/asistencia/' . $lista->id);
 }
示例#3
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);
 }
    public function registrar()
    {
        $this->layout = false;
        //Verifica si es por metodo post
        if ($this->request->is('post')) {
            App::import('Model', 'Asistencia');
            //Verifica que el docente se encuentra registrado
            $no_registrado = 0;
            $no_registrado = $this->Personal->find('count', array('conditions' => array('cedula' => $this->request->data['cedula']), 'recursive' => -1));
            if ($no_registrado < 1) {
                $this->Session->setFlash('Disculpe, Docente no registrado. Contacte el administrador!!', 'default', array('class' => 'error'));
                $this->redirect(array('controller' => 'usuarios', 'action' => 'login'));
            }
            //Si existe en l docente, se realiza la verificación de horarios
            $asistencia_registrada = 0;
            //Consulta de horarios
            $docente = $this->Personal->find('all', array('conditions' => array('cedula' => $this->request->data['cedula']), 'recursive' => -1));
            $row = $this->Personal->query('SELECT personal.id AS id, personal.cedula AS cedula, personal.nombres AS nombres, personal.apellidos AS apellidos, materias.id AS materia_id, materias.nombre AS materia_nombre, secciones.id AS seccion_id, secciones.nombre AS seccion_nombre, aulas.id AS aula_id, aulas.nombre AS aula_nombre, DAYOFWEEK( CURDATE( ) -1 ) AS dia_id, CURDATE( ) AS fecha_hoy, CURTIME( ) AS hora_hoy, (
											bloques_horas.bloque - CURTIME( )
											) AS diferencia, horarios.id as horario_id, NOW() as fecha
											FROM personal, horarios, bloques_horas, materias, secciones, aulas
											WHERE personal.id = horarios.personal_id
											AND materias.id = horarios.materia_id
											AND secciones.id = horarios.seccion_id
											AND aulas.id = horarios.aula_id
											AND cedula =' . $this->request->data['cedula'] . '
											AND DAYOFWEEK( CURDATE( ) -1 ) = horarios.dia_id
											AND bloques_horas.id = horarios.inicio
											AND (
											bloques_horas.bloque - CURTIME( )
											)
											BETWEEN -6000
											AND 12000');
            //Verificación de registro de asistencias existente
            $datos_docente = $docente[0]['Personal']['full_name'];
            if ($row) {
                $asistencia_registrada = $this->Personal->query('SELECT COUNT( asistencias.id ) as asistencia
															FROM asistencias, horarios
															WHERE asistencias.horario_id = ' . $row[0]['horarios']['horario_id'] . '
															AND horarios.id = asistencias.horario_id
															AND DATE( asistencias.fecha ) = DATE( NOW( ) )');
            } else {
                $this->Session->setFlash('Estimado Profesor(a): ' . $datos_docente . ' No hay horario disponible!!', 'default', array('class' => 'error'));
                $this->redirect(array('controller' => 'usuarios', 'action' => 'login'));
            }
            //Asistencia Registrada
            if ($asistencia_registrada[0][0]['asistencia'] > 0) {
                $this->Session->setFlash('Estimado Profesor(a): ' . $datos_docente . ' Su asistencia ya fue registrada!!', 'default', array('class' => 'warning'));
                $this->redirect(array('controller' => 'usuarios', 'action' => 'login'));
            } else {
                //Asignamos el id del horarios
                $this->request->data['Asistencia']['horario_id'] = $row[0]['horarios']['horario_id'];
                //Activamos el estatus de la asistencia
                $this->request->data['Asistencia']['estatus'] = 1;
                $asistencia = new Asistencia();
                $registro = $asistencia->save($this->request->data['Asistencia']);
                if ($registro) {
                    $this->set('horarios', $row);
                    $this->Session->setFlash('Estimado Profesor(a): ' . $datos_docente . ' Asistencia Registrada!!', 'default', array('class' => 'success'));
                    $this->redirect(array('controller' => 'usuarios', 'action' => 'login'));
                }
                //No hay horarios disponibles
            }
        }
    }
 public function submit_create_evento()
 {
     if (Auth::check()) {
         $data["inside_url"] = Config::get('app.inside_url');
         $data["user"] = Session::get('user');
         $data["permisos"] = Session::get('permisos');
         if (in_array('side_nuevo_evento', $data["permisos"])) {
             // Validate the info, create rules for the inputs
             $attributes = array('nombre' => 'Título del Evento', 'fecha_evento' => 'Fecha del Evento', 'idcolegios' => 'Colegio', 'direccion' => 'Dirección Exacta', 'voluntarios' => 'Voluntarios', 'latitud' => 'Punto en el Mapa');
             $messages = array();
             $rules = array('nombre' => 'required|alpha_spaces|min:2|max:100', 'fecha_evento' => 'required', 'idcolegios' => 'required', 'direccion' => 'required|max:100', 'voluntarios' => 'required', 'latitud' => 'required');
             // Run the validation rules on the inputs from the form
             $validator = Validator::make(Input::all(), $rules, $messages, $attributes);
             // If the validator fails, redirect back to the form
             if ($validator->fails()) {
                 return Redirect::to('eventos/create_evento')->withErrors($validator)->withInput(Input::all());
             } else {
                 /* Primero creo el evento */
                 $evento = new Evento();
                 $evento->nombre = Input::get('nombre');
                 $evento->fecha_evento = date('Y-m-d H:i:s', strtotime(Input::get('fecha_evento')));
                 //$evento->idtipo_eventos = Input::get('idtipo_eventos');
                 $evento->direccion = Input::get('direccion');
                 $evento->latitud = Input::get('latitud');
                 $evento->longitud = Input::get('longitud');
                 $evento->idperiodos = Input::get('idperiodos');
                 $evento->save();
                 /* Creo los puntos de reunion */
                 if (!empty(Input::get('puntos_reunion'))) {
                     foreach (Input::get('puntos_reunion') as $punto_reunion) {
                         $punto_reunion_evento = new PuntoEvento();
                         $punto_reunion_evento->idpuntos_reunion = $punto_reunion;
                         $punto_reunion_evento->ideventos = $evento->ideventos;
                         $punto_reunion_evento->save();
                     }
                 }
                 /* Creo las asistencias de los usuarios */
                 foreach (Input::get('voluntarios') as $voluntario) {
                     $asistencia = new Asistencia();
                     $asistencia->asistio = 0;
                     $asistencia->idusers = $voluntario;
                     $asistencia->ideventos = $evento->ideventos;
                     $asistencia->save();
                 }
                 /* Creo las asistencias de los niños */
                 $ninhos = Ninho::getNinhosPorColegio(Input::get('idcolegios'))->get();
                 foreach ($ninhos as $ninho) {
                     $asistencia_ninho = new AsistenciaNinho();
                     $asistencia_ninho->idninhos = $ninho->idninhos;
                     $asistencia_ninho->ideventos = $evento->ideventos;
                     $asistencia_ninho->save();
                 }
                 /* Envio las notificaciones via e-mail a los voluntarios */
                 $emails_voluntarios = Asistencia::getUsersPorEvento($evento->ideventos)->get();
                 $emails = array();
                 foreach ($emails_voluntarios as $email_voluntario) {
                     $emails[] = $email_voluntario->email;
                 }
                 Mail::send('emails.eventRegistration', array('evento' => $evento), function ($message) use($emails, $evento) {
                     $message->to($emails)->subject('Tienes un nuevo evento de AFI Perú.');
                 });
                 // Llamo a la función para registrar el log de auditoria
                 $descripcion_log = "Se creó el evento con id {{$evento->ideventos}}";
                 Helpers::registrarLog(3, $descripcion_log);
                 Session::flash('message', 'Se registró correctamente el evento.');
                 return Redirect::to('eventos/create_evento');
             }
         } else {
             // Llamo a la función para registrar el log de auditoria
             $descripcion_log = "Se intentó acceder a la ruta '" . Request::path() . "' por el método '" . Request::method() . "'";
             Helpers::registrarLog(10, $descripcion_log);
             Session::flash('error', 'Usted no tiene permisos para realizar dicha acción.');
             return Redirect::to('/dashboard');
         }
     } else {
         return View::make('error/error');
     }
 }
示例#6
0
 protected function processForm(sfWebRequest $request, sfForm $form, $celulaId = null)
 {
     $asistencia = $request->getParameter('reunion')['asistencias'];
     $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
     $fields = $form->getFormFieldSchema()->getValue();
     if ($form->isValid()) {
         $reunion = $form->save();
         foreach ($reunion->getAsistencias() as $borrable) {
             $borrable->delete();
         }
         $asistencias = explode(',', $asistencia);
         foreach ($asistencias as $key => $asistencia) {
             if ($asistencia > 0) {
                 $source = new Asistencia();
                 $source->setReunionId($reunion->getId());
                 $source->setMiembroCelulaId($asistencia);
                 $source->save();
             }
         }
         $this->getUser()->setFlash('notice', "Reunión guardada exitosamente", true);
         if (isset($celulaId)) {
             $this->redirect('celulas/show?id=' . $celulaId);
         } else {
             $this->forward('celulas', 'index');
         }
     }
     $this->getUser()->setFlash('error', "Error!!! " . $form->getErrorSchema(), true);
     if (isset($celulaId)) {
         $this->redirect('celulas/show?id=' . $celulaId);
     } else {
         $this->forward('celulas', 'index');
     }
 }