public function getDetailed($asignatura_id) { $user = User::fromToken(); $resultado = []; $unidades = Unidad::where('asignatura_id', '=', $asignatura_id)->where('periodo_id', '=', $user->periodo_id)->orderBy('orden')->get(); $asignatura = (object) Asignatura::detallada($asignatura_id, $user->year_id); foreach ($unidades as $unidad) { $subunidades = Subunidad::where('unidad_id', '=', $unidad->id)->orderBy('orden')->get(); foreach ($subunidades as $subunidad) { $notas = Nota::where('subunidad_id', '=', $subunidad->id)->get(); if (count($notas) == 0) { $notasTemp = Nota::crearNotas($asignatura->grupo_id, $subunidad); $subunidad->notas = $notasTemp; } else { $notas = Nota::verificarCrearNotas($asignatura->grupo_id, $subunidad); $subunidad->notas = $notas; } } $unidad->subunidades = $subunidades; } $alumnos = Grupo::alumnos($asignatura->grupo_id); foreach ($alumnos as $alumno) { $userData = Alumno::userData($alumno->alumno_id); $alumno->userData = $userData; } // No cambiar el orden! array_push($resultado, $asignatura); array_push($resultado, $alumnos); array_push($resultado, $unidades); return $resultado; }
private function notasDeLaAsignatura($year_id, $alumno_id, $asignatura_id, $periodos_a_calcular = 'de_usuario', $periodo_usuario) { $periodos = Periodo::hastaPeriodo($year_id, $periodos_a_calcular, $periodo_usuario); foreach ($periodos as $keyPer => $periodo) { $asigna = new stdClass(); $asigna->unidades = Unidad::deAsignatura($asignatura_id, $periodo->id); $nota_asignatura = 0; foreach ($asigna->unidades as $unidad) { $unidad->subunidades = Subunidad::deUnidad($unidad->unidad_id); $nota_unidad = 0; foreach ($unidad->subunidades as $subunidad) { $nota = Nota::where('subunidad_id', '=', $subunidad->subunidad_id)->where('alumno_id', '=', $alumno_id)->first(); if ($nota) { $subunidad->nota = $nota; $subunidad->nota->valor = $nota->nota * $subunidad->porcentaje_subunidad / 100; $nota_unidad += $subunidad->nota->valor; } } $unidad->nota_unidad = $nota_unidad; $valor_unidad = $unidad->nota_unidad * $unidad->porcentaje_unidad / 100; $unidad->valor_unidad = $valor_unidad; $nota_asignatura += $unidad->valor_unidad; } $periodo->unidades = $asigna->unidades; $periodo->nota_asignatura = $nota_asignatura; // Definitiva de la materia en este periodo } return $periodos; }
public static function verificarCrearNota($alumno_id, $subunidad) { $notVerif = Nota::where('subunidad_id', '=', $subunidad->id)->where('alumno_id', '=', $alumno_id)->first(); if ($notVerif) { $nota = $notVerif; } else { $nota = new Nota(); $nota->alumno_id = $alumno->id; $nota->subunidad_id = $subunidad->id; $nota->nota = $subunidad->nota_default; $nota->save(); $notVerif = $nota; } return $notVerif; }
public static function calculoAlumnoNotas(&$asignatura, $alumno_id) { $nota_asignatura = 0; foreach ($asignatura->unidades as $unidad) { $nota_unidad = 0; foreach ($unidad->subunidades as $subunidad) { $nota = Nota::where('subunidad_id', '=', $subunidad->subunidad_id)->where('alumno_id', '=', $alumno_id)->first(); if ($nota) { $subunidad->nota = $nota; $subunidad->nota->valor = $nota->nota * $subunidad->porcentaje_subunidad / 100; $nota_unidad += $subunidad->nota->valor; } } $unidad->nota_unidad = $nota_unidad; $valor_unidad = $unidad->nota_unidad * $unidad->porcentaje_unidad / 100; $unidad->valor_unidad = $valor_unidad; $nota_asignatura += $unidad->valor_unidad; } $asignatura->nota_asignatura = $nota_asignatura; // Definitiva de la materia return $asignatura; }
public static function informacionAsignatura($asignatura_id, $periodo_id) { $result = new \stdClass(); $consulta = 'SELECT id, definicion, porcentaje FROM unidades where asignatura_id=:asignatura_id and periodo_id=:periodo_id and deleted_at is null order by orden'; $unidades = DB::select($consulta, [':asignatura_id' => $asignatura_id, ':periodo_id' => $periodo_id]); $porc_unidades = 0; $result->porc_subunidades_incorrecto = false; $result->porc_notas_incorrecto = false; foreach ($unidades as $unidad) { $porc_unidades += $unidad->porcentaje; $consulta = 'SELECT id, definicion, porcentaje FROM subunidades where unidad_id=:unidad_id and deleted_at is null order by orden'; $unidad->subunidades = DB::select(DB::raw($consulta), array(':unidad_id' => $unidad->id)); $porc_subunidades = 0; foreach ($unidad->subunidades as $subunidad) { $porc_subunidades += $subunidad->porcentaje; $notas = Nota::where('subunidad_id', $subunidad->id)->get(); $subunidad->cantNotas = count($notas); if ($subunidad->cantNotas == 0) { $result->porc_notas_incorrecto = true; } } $unidad->porc_subunidades = $porc_subunidades; if ($unidad->porc_subunidades != 100) { $result->porc_subunidades_incorrecto = true; } } $result->porc_unidades = $porc_unidades; $result->items = $unidades; return $result; }
public static function notas($subunidad_id) { $notas = Nota::where('subunidad_id', '=', $subunidad_id)->get(); return $notas; }