예제 #1
0
파일: Nota.php 프로젝트: bluesky777/5myvc
 public static function alumnoPeriodosDetailed($alumno_id, $year_id, $profesor_id = '')
 {
     $alumno = Alumno::alumnoData($alumno_id, $year_id);
     $periodos = Periodo::where('year_id', $year_id)->get();
     if (!$alumno) {
         return false;
     }
     foreach ($periodos as $keyPer => $periodo) {
         $asignaturas = Grupo::detailed_materias($alumno->grupo_id);
         $sumatoria_asignaturas_per = 0;
         foreach ($asignaturas as $keyAsig => $asignatura) {
             if ($profesor_id != $asignatura->profesor_id && $profesor_id != '') {
                 unset($asignaturas[$keyAsig]);
             } else {
                 $asignatura->unidades = Unidad::deAsignatura($asignatura->asignatura_id, $periodo->id);
                 foreach ($asignatura->unidades as $unidad) {
                     $unidad->subunidades = Subunidad::deUnidad($unidad->unidad_id);
                 }
                 Asignatura::calculoAlumnoNotas($asignatura, $alumno->alumno_id);
                 $sumatoria_asignaturas_per += $asignatura->nota_asignatura;
                 // Para sacar promedio del periodo
             }
         }
         try {
             //$periodo->promedio = $sumatoria_asignaturas_per / count($alumno->asignaturas);
             $periodo->promedio = $sumatoria_asignaturas_per / count($asignaturas);
         } catch (Exception $e) {
             $periodo->promedio = 0;
         }
         $periodo->asignaturas = $asignaturas;
     }
     $alumno->periodos = $periodos;
     return $alumno;
 }
예제 #2
0
파일: Year.php 프로젝트: bluesky777/5myvc
    public static function de_un_profesor($profesor_id)
    {
        $consulta = 'SELECT y.id, y.year, y.nombre_colegio, y.abrev_colegio FROM years y
					inner join contratos c on c.year_id=y.id and c.profesor_id = :profesor_id
					where y.deleted_at is null';
        $years = DB::select(DB::raw($consulta), array(':profesor_id' => $profesor_id));
        foreach ($years as $year) {
            $year->periodos = Periodo::where('year_id', '=', $year->id)->get();
        }
        return $years;
    }
예제 #3
0
 public function putEstablecerActual($periodo_id)
 {
     $user = User::fromToken();
     $periodoACambiar = Periodo::findOrFail($periodo_id);
     $periodos = Periodo::where('year_id', '=', $periodoACambiar->year_id)->get();
     foreach ($periodos as $periodo) {
         if ($periodo->id != $periodoACambiar->id) {
             $periodo->actual = false;
             $periodo->save();
         }
     }
     $periodoACambiar->actual = true;
     $periodoACambiar->save();
     return $periodoACambiar;
 }
예제 #4
0
 public static function hastaPeriodo($year_id, $periodos_a_calcular = 'de_usuario', $numero_periodo = 0)
 {
     $periodos = new stdClass();
     // Solo los periodos pasados hasta EL ACTUAL si así fue solicitado
     if ($periodos_a_calcular == 'de_colegio') {
         $periodo_actual = Periodo::where('actual', true)->where('year_id', $year_id)->first();
         $periodos = Periodo::where('numero', '<=', $periodo_actual->numero)->where('year_id', '=', $year_id)->get();
         // Solo los periodos pasados hasta EL DE EL USUARIO
     } elseif ($periodos_a_calcular == 'de_usuario') {
         $periodos = Periodo::where('numero', '<=', $numero_periodo)->where('year_id', '=', $year_id)->get();
     } elseif ($periodos_a_calcular == 'todos') {
         $periodos = Periodo::where('year_id', '=', $year_id)->get();
     }
     return $periodos;
 }
예제 #5
0
 public function getShowProfesor($profesor_id)
 {
     $user = User::fromToken();
     $year = Year::datos_basicos($user->year_id);
     $asignaturas = Profesor::asignaturas($user->year_id, $profesor_id);
     $periodos = Periodo::where('year_id', '=', $user->year_id)->get();
     $year->periodos = $periodos;
     $profesor = Profesor::detallado($profesor_id);
     foreach ($asignaturas as $keyAsig => $asignatura) {
         $alumnos = Grupo::alumnos($asignatura->grupo_id);
         $asignatura->nombres_profesor = $profesor->nombres_profesor;
         $asignatura->apellidos_profesor = $profesor->apellidos_profesor;
         $asignatura->foto_nombre = $profesor->foto_nombre;
         $asignatura->foto_id = $profesor->foto_id;
         $asignatura->sexo = $profesor->sexo;
         $asignatura->periodosProm = Periodo::where('year_id', '=', $user->year_id)->get();
         // A cada alumno le daremos los periodos y la definitiva de cada periodo
         foreach ($alumnos as $keyAl => $alumno) {
             $periodosTemp = Periodo::where('year_id', '=', $user->year_id)->get();
             foreach ($periodosTemp as $keyPer => $periodo) {
                 // Unidades y subunidades de la asignatura en el periodo
                 $asignaturaTemp = Asignatura::find($asignatura->asignatura_id);
                 $asignaturaTemp->unidades = Unidad::deAsignatura($asignaturaTemp->id, $periodo->id);
                 foreach ($asignaturaTemp->unidades as $unidad) {
                     $unidad->subunidades = Subunidad::deUnidad($unidad->unidad_id);
                 }
                 // Traemos las notas de esta asignatura segun las unidades y subunidades calculadas arriba
                 Asignatura::calculoAlumnoNotas($asignaturaTemp, $alumno->alumno_id);
                 $periodo->nota_asignatura = $asignaturaTemp->nota_asignatura;
                 unset($asignaturaTemp);
             }
             $alumno->periodos = $periodosTemp;
             unset($periodosTemp);
             foreach ($asignatura->periodosProm as $keyPer => $periodo) {
                 if (!$periodo->sumatoria) {
                     $periodo->sumatoria = 0;
                 }
                 foreach ($alumno->periodos as $keyPerAl => $periodo_alum) {
                     if ($periodo_alum->id == $periodo->id) {
                         $periodo->sumatoria += $periodo_alum->nota_asignatura;
                     }
                 }
             }
         }
         $asignatura->alumnos = $alumnos;
     }
     return array($year, $asignaturas);
 }
예제 #6
0
    public function asignaturasPerdidasDeAlumno($alumno, $grupo_id, $year_id)
    {
        $asignaturas = Grupo::detailed_materias($grupo_id);
        foreach ($asignaturas as $keyAsig => $asignatura) {
            $asignatura->periodos = Periodo::where('year_id', $year_id)->get();
            $asignatura->cantTotal = 0;
            foreach ($asignatura->periodos as $keyPer => $periodo) {
                $consulta = 'SELECT distinct n.nota, n.id as nota_id, n.alumno_id,  s.id as subunidad_id, s.definicion, u.id as unidad_id, u.periodo_id
						from notas n, subunidades s, unidades u, asignaturas a, matriculas m
						where n.subunidad_id=s.id and s.unidad_id=u.id and u.periodo_id=:periodo_id 
						and u.asignatura_id=a.id and m.alumno_id=n.alumno_id and m.deleted_at is null and m.matriculado=1
						and a.id=:asignatura_id and n.alumno_id=:alumno_id and n.nota < :nota_minima;';
                $notas_perdidas = DB::select(DB::raw($consulta), array(':periodo_id' => $periodo->id, ':asignatura_id' => $asignatura->asignatura_id, ':alumno_id' => $alumno->alumno_id, ':nota_minima' => User::$nota_minima_aceptada));
                $periodo->cantNotasPerdidas = count($notas_perdidas);
                $asignatura->cantTotal += $periodo->cantNotasPerdidas;
                if ($periodo->cantNotasPerdidas == 0) {
                    unset($asignatura->periodos[$keyPer]);
                }
            }
            if (count($asignatura->periodos) == 0) {
                unset($asignaturas[$keyAsig]);
            }
            $hasPeriodosConPerdidas = false;
            foreach ($asignatura->periodos as $keyPer => $periodo) {
                if ($periodo->cantNotasPerdidas > 0) {
                    $hasPeriodosConPerdidas = true;
                }
            }
            if (!$hasPeriodosConPerdidas) {
                unset($asignaturas[$keyAsig]);
            }
        }
        return $asignaturas;
    }
예제 #7
0
 public function putUpdate($id)
 {
     $alumno = Alumno::findOrFail($id);
     $this->sanarInputAlumno();
     try {
         $alumno->no_matricula = Request::input('no_matricula');
         $alumno->nombres = Request::input('nombres');
         $alumno->apellidos = Request::input('apellidos');
         $alumno->sexo = Request::input('sexo', 'M');
         $alumno->fecha_nac = Request::input('fecha_nac');
         $alumno->ciudad_nac = Request::input('ciudad_nac')['id'];
         $alumno->tipo_doc = Request::input('tipo_doc')['id'];
         $alumno->documento = Request::input('documento');
         $alumno->ciudad_doc = Request::input('ciudad_doc')['id'];
         $alumno->tipo_sangre = Request::input('tipo_sangre')['sangre'];
         $alumno->eps = Request::input('eps');
         $alumno->telefono = Request::input('telefono');
         $alumno->celular = Request::input('celular');
         $alumno->barrio = Request::input('barrio');
         $alumno->estrato = Request::input('estrato');
         $alumno->ciudad_resid = Request::input('ciudad_resid');
         $alumno->religion = Request::input('religion');
         $alumno->email = Request::input('email');
         $alumno->facebook = Request::input('facebook');
         $alumno->foto_id = Request::input('foto_id');
         $alumno->pazysalvo = Request::input('pazysalvo', true);
         $alumno->deuda = Request::input('deuda');
         if ($alumno->user_id and Request::has('username')) {
             $this->sanarInputUser();
             $this->checkOrChangeUsername($alumno->user_id);
             $usuario = User::find($alumno->user_id);
             $usuario->username = Request::input('username');
             $usuario->email = Request::input('email2');
             $usuario->is_superuser = Request::input('is_superuser', false);
             $usuario->is_active = Request::input('is_active', true);
             if (Request::has('password')) {
                 if (Request::input('password') == "") {
                     $usuario->password = Hash::make(Request::input('password'));
                 }
             }
             $usuario->save();
             $alumno->user_id = $usuario->id;
             $alumno->save();
             $alumno->user = $usuario;
         }
         if (!$alumno->user_id and Request::has('username')) {
             $this->sanarInputUser();
             $this->checkOrChangeUsername($alumno->user_id);
             $yearactual = Year::actual();
             $periodo_actual = Periodo::where('actual', true)->where('year_id', $yearactual->id)->first();
             $usuario = new User();
             $usuario->username = Request::input('username');
             $usuario->password = Hash::make(Request::input('password', '123456'));
             $usuario->email = Request::input('email2');
             $usuario->is_superuser = Request::input('is_superuser', false);
             $usuario->is_active = Request::input('is_active', true);
             $usuario->periodo_id = $periodo_actual->id;
             $usuario->save();
             $alumno->user_id = $usuario->id;
             $alumno->save();
             $alumno->user = $usuario;
         }
         if (Request::input('grupo')['id']) {
             $grupo_id = Request::input('grupo')['id'];
             $matricula = Matricula::matricularUno($alumno->id, $grupo_id);
             $grupo = Grupo::find($matricula->grupo_id);
             $alumno->grupo = $grupo;
         }
         return $alumno;
     } catch (Exception $e) {
         return abort('400', $e);
     }
 }
예제 #8
0
파일: User.php 프로젝트: bluesky777/5myvc
    public static function fromToken($already_parsed = false, $request = false)
    {
        $userTemp = [];
        $usuario = [];
        $token = [];
        try {
            if ($already_parsed) {
                $token = $already_parsed;
                $userTemp = JWTAuth::toUser($token);
            } else {
                try {
                    $token = JWTAuth::parseToken();
                } catch (JWTException $e) {
                    // No haremos nada, continuaremos verificando datos.
                }
                try {
                    if ($token) {
                        // Lleva aquí y ocurre un error cuando se ha demorado mucho en mover la página.
                        $userTemp = $token->authenticate();
                    } else {
                        return response()->json(['error' => 'No existe Token'], 401);
                    }
                } catch (JWTException $e) {
                    /*
                    $tok = JWTAuth::getToken();
                    $tok->get(); // Sí hay token, definitivamente está expirado :(
                    */
                    abort(401, 'Token ha expirado.');
                }
            }
            if (!$userTemp) {
                abort(401, 'Token inválido, prohibido entrar.');
            }
            if (!$userTemp->periodo_id) {
                $userTemp->periodo_id = Periodo::where('actual', '=', true)->first()->id;
                $userTemp->save();
            }
            $consulta = '';
            switch ($userTemp->tipo) {
                // Alumno, Profesor, Acudiente, Usuario.
                case 'Profesor':
                    $consulta = 'SELECT p.id as persona_id, p.nombres, p.apellidos, p.sexo, p.fecha_nac, p.ciudad_nac, p.user_id, 
									IFNULL(i.nombre, IF(p.sexo="F","default_female.jpg", "default_male.jpg")) as imagen_nombre, 
									p.foto_id, IFNULL(i2.nombre, IF(p.sexo="F","default_female.jpg", "default_male.jpg")) as foto_nombre, 
									"N/A" as grupo_id, ("N/A") as nombre_grupo, ("N/A") as abrev_grupo, 
									"N/A" as year_matricula_id, per.id as periodo_id, per.numero as numero_periodo, 
									y.id as year_id, y.year, y.nota_minima_aceptada, y.actual as year_actual, per.actual as periodo_actual, 
									y.unidad_displayname, y.subunidad_displayname, y.unidades_displayname, y.subunidades_displayname, 
									y.genero_unidad, y.genero_subunidad, per.fecha_plazo, y.alumnos_can_see_notas
								from profesores p 
								left join images i on i.id=:imagen_id
								left join images i2 on i2.id=p.foto_id
								left join periodos per on per.id=:periodo_id
								left join years y on y.id=per.year_id
								where p.deleted_at is null and p.user_id=:user_id';
                    $usuario = DB::select($consulta, array(':user_id' => $userTemp->id, ':imagen_id' => $userTemp->imagen_id, ':periodo_id' => $userTemp->periodo_id));
                    break;
                case 'Alumno':
                    $consulta = 'SELECT a.id as persona_id, a.nombres, a.apellidos, a.user_id, 
									a.sexo, a.fecha_nac, a.ciudad_nac, a.pazysalvo, a.deuda,
									IFNULL(i.nombre, IF(a.sexo="F","default_female.jpg", "default_male.jpg")) as imagen_nombre, 
									a.foto_id, IFNULL(i2.nombre, IF(a.sexo="F","default_female.jpg", "default_male.jpg")) as foto_nombre, 
									g.id as grupo_id, g.nombre as nombre_grupo, g.abrev as abrev_grupo, 
									g.year_id as year_matricula_id, per.id as periodo_id, per.numero as numero_periodo, 
									y.id as year_id, y.year, y.nota_minima_aceptada, y.actual as year_actual, per.actual as periodo_actual, 
									y.unidad_displayname, y.subunidad_displayname, y.unidades_displayname, y.subunidades_displayname, 
									y.genero_unidad, y.genero_subunidad, per.fecha_plazo, y.alumnos_can_see_notas
								from alumnos a 
								inner join matriculas m on m.alumno_id=a.id and m.matriculado=true
								inner join grupos g on g.id=m.grupo_id
								left join images i on i.id=:imagen_id
								left join images i2 on i2.id=a.foto_id
								left join periodos per on per.id=:periodo_id
								left join years y on y.id=per.year_id
								where a.deleted_at is null and a.user_id=:user_id';
                    $usuario = DB::select($consulta, array(':user_id' => $userTemp->id, ':imagen_id' => $userTemp->imagen_id, ':periodo_id' => $userTemp->periodo_id));
                    break;
                case 'Acudiente':
                    $consulta = 'SELECT ac.id as persona_id, ac.nombres, ac.apellidos, ac.user_id, u.username, u.is_superuser,
									ac.sexo, u.email, ac.fecha_nac, ac.ciudad_nac, 
									u.imagen_id, IFNULL(i.nombre, IF(ac.sexo="F","default_female.jpg", "default_male.jpg")) as imagen_nombre, 
									ac.foto_id, IFNULL(i2.nombre, IF(ac.sexo="F","default_female.jpg", "default_male.jpg")) as foto_nombre, 
									"N/A" as grupo_id, ("N/A") as nombre_grupo, ("N/A") as abrev_grupo, 
									"N/A" as year_matricula_id, per.id as periodo_id, per.numero as numero_periodo, 
									y.id as year_id, y.year, y.nota_minima_aceptada, y.actual as year_actual, per.actual as periodo_actual, 
									y.unidad_displayname, y.subunidad_displayname, y.unidades_displayname, y.subunidades_displayname, 
									y.genero_unidad, y.genero_subunidad, per.fecha_plazo, y.alumnos_can_see_notas
								from acudientes ac 
								left join images i on i.id=:imagen_id
								left join images i2 on i2.id=ac.foto_id
								left join periodos per on per.id=:periodo_id
								left join years y on y.id=per.year_id
								where ac.deleted_at is null and ac.user_id=:user_id';
                    $usuario = DB::select($consulta, array(':user_id' => $userTemp->id, ':imagen_id' => $userTemp->imagen_id, ':periodo_id' => $userTemp->periodo_id));
                    break;
                case 'Usuario':
                    $consulta = 'SELECT u.id as persona_id, "" as nombres, "" as apellidos, u.id as user_id, u.username, u.is_superuser, u.tipo, 
									u.sexo, u.email, "N/A" as fecha_nac, "N/A" as ciudad_nac, 
									u.imagen_id, IFNULL(i.nombre, IF(u.sexo="F","default_female.jpg", "default_male.jpg")) as imagen_nombre, 
									u.imagen_id as foto_id, IFNULL(i.nombre, IF(u.sexo="F","default_female.jpg", "default_male.jpg")) as foto_nombre, 
									"N/A" as grupo_id, ("N/A") as nombre_grupo, ("N/A") as abrev_grupo, 
									"N/A" as year_matricula_id, per.id as periodo_id, per.numero as numero_periodo, 
									y.id as year_id, y.year, y.nota_minima_aceptada, y.actual as year_actual, per.actual as periodo_actual, 
									y.unidad_displayname, y.subunidad_displayname, y.unidades_displayname, y.subunidades_displayname, 
									y.genero_unidad, y.genero_subunidad, per.fecha_plazo, y.alumnos_can_see_notas
								from users u
								left join periodos per on per.id=u.periodo_id
								left join years y on y.id=per.year_id
								left join images i on i.id=u.imagen_id 
								where u.id=:user_id and u.deleted_at is null';
                    $usuario = DB::select($consulta, array(':user_id' => $userTemp->id));
                    break;
            }
            $usuario = (array) $usuario[0];
            $userTemp = (array) $userTemp['attributes'];
            //return $userTemp;
            $usuario = array_merge($usuario, $userTemp);
            $usuario = (object) $usuario;
            User::$nota_minima_aceptada = $usuario->nota_minima_aceptada;
            User::$images = 'images/';
            User::$perfilPath = User::$images . 'perfil/';
            User::$imgSharedPath = User::$images . 'shared/';
        } catch (Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
            if (!count(Request::all())) {
                return Response::json(['error' => 'token_expired'], 401);
            }
        }
        /*
        catch(JWTException $e){
        	// No haremos nada, continuaremos verificando datos.
        	return response()->json(['error' => $e], 401);
        }
        */
        // *************************************************
        //    Traeremos los roles y permisos
        // *************************************************
        $user = User::find($usuario->user_id);
        $usuario->roles = $user->roles()->get();
        $perms = [];
        foreach ($usuario->roles as $role) {
            $consulta = 'SELECT pm.name, pm.display_name, pm.description from permission_role pmr
					inner join permissions pm on pm.id = pmr.permission_id 
						and pmr.role_id = :role_id';
            $permisos = DB::select($consulta, array(':role_id' => $role->id));
            foreach ($permisos as $permiso) {
                array_push($perms, $permiso->name);
            }
        }
        $usuario->perms = $perms;
        $usuario->token = $token;
        return $usuario;
    }
예제 #9
0
 public function putUseractive($year_id)
 {
     $user = User::fromToken();
     $usuario = User::findOrFail($user->user_id);
     $peri = Periodo::where('year_id', $year_id)->where('numero', $user->numero_periodo)->first();
     if ($peri) {
         $usuario->periodo_id = $peri->id;
     } else {
         $peris = Periodo::where('year_id', $year_id)->get();
         if (count($peris) > 0) {
             $peri = $peris[count($peris) - 1];
             $usuario->periodo_id = $peri->id;
         } else {
             abort(400, 'Año sin ningún periodo.');
         }
     }
     $usuario->save();
     return $peri;
 }