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