瀏覽代碼

Update getCalificacionesMateria function , already works

AldrickChavarria 5 月之前
父節點
當前提交
826a6f2419
共有 1 個文件被更改,包括 34 次插入33 次删除
  1. 34 33
      Back/backendP-Educativa/app/Http/Controllers/Api/RegistroCalicaciones.php

+ 34 - 33
Back/backendP-Educativa/app/Http/Controllers/Api/RegistroCalicaciones.php

@@ -243,30 +243,44 @@ class RegistroCalicaciones extends Controller
         return response()->json($periodoBoleta, 200);
     }
 
-    // TODO: Debuggear esta función
+
     public function getCalificacionesMateria(Request $request)
     {
         $idGradoGrupo = $request->idGradoGrupo;
         $idMateria = $request->idMateria;
 
+        // Determinar si el parámetro es un grupo o un grado
+        $esGrupo = DB::table('grupos_usuarios')
+            ->where('idGrupo', $idGradoGrupo)
+            ->exists();
+
         $calificaciones = DB::table('grupos_usuarios as g')
             ->join('usuarios as u', function ($join) {
                 $join->on('g.idEscuela', '=', 'u.idEscuela')
-                    ->on('g.idUsuario', '=', 'u.idUsuario');
+                    ->on('g.idUsuario', '=', 'u.idUsuario')
+                    ->where('u.tipoUsuario', '=', 'AL')
+                    ->where('u.estatus', '=', 'Activo');
+            })
+            ->join('materias as m', function ($join) use ($idMateria, $idGradoGrupo, $esGrupo) {
+                $join->on('m.idEscuela', '=', 'g.idEscuela')
+                    ->where('m.idMateria', '=', $idMateria)
+                    ->where('m.estado', '=', 'Activo')
+                    ->where('m.idGradoGrupoRelacionado', $idGradoGrupo);
             })
-            ->join('materias as m', function ($join) {
-                $join->on('m.idEscuela', '=', 'u.idEscuela')
-                    ->where(function ($query) {
-                        $query->where('m.idGradoGrupoRelacionado', '=', DB::raw('g.idGrupo'))
-                            ->orWhere('m.idGradoGrupoRelacionado', '=', DB::raw('u.grado'));
-                    });
+            ->leftJoin('boletas_calificaciones as b', function ($join) use ($idMateria) {
+                $join->on('b.idEscuela', '=', 'g.idEscuela')
+                    ->on('b.idAlumnoBoletaCalificaciones', '=', 'g.idUsuario')
+                    ->where('b.idMateriaBoletaCalificaciones', '=', $idMateria)
+                    ->where('b.estado', '=', 'Activo');
             })
-            // ->join('boletas_calificaciones as b', function ($join) {
-            //     $join->on('b.idEscuela', '=', 'm.idEscuela')
-            //         ->on('b.idMateriaBoletaCalificaciones', '=', 'm.idMateria');
-            // })
-            ->where('m.idGradoGrupoRelacionado', $idGradoGrupo)
-            // ->where('b.idMateriaBoletaCalificaciones', $idMateria)
+            ->when($esGrupo, function ($query) use ($idGradoGrupo) {
+                // Si es un grupo, filtrar por grupo
+                $query->where('g.idGrupo', $idGradoGrupo);
+            }, function ($query) use ($idGradoGrupo) {
+                // Si es un grado, filtrar por grado
+                $query->where('u.grado', $idGradoGrupo);
+            })
+            ->where('g.estado', 'Activo')
             ->select([
                 'g.idEscuela',
                 'g.idGrupo',
@@ -279,28 +293,15 @@ class RegistroCalicaciones extends Controller
                 'm.idMateria',
                 'm.nombreMateria',
                 'm.idGradoGrupoRelacionado',
-                // 'b.idMateriaBoletaCalificaciones',
-                // 'b.idPeriodoBoletaCalificaciones',
-                // 'b.calificacion'
-            ])
-            ->groupBy([
-                'g.idEscuela',
-                'g.idGrupo',
-                'g.idUsuario',
-                'u.primerNombre',
-                'u.segundoNombre',
-                'u.apellidoPaterno',
-                'u.apellidoMaterno',
-                'u.grado',
-                'm.idMateria',
-                'm.nombreMateria',
-                'm.idGradoGrupoRelacionado',
-                // 'b.idMateriaBoletaCalificaciones',
-                // 'b.idPeriodoBoletaCalificaciones',
-                // 'b.calificacion'
+                'b.idPeriodoBoletaCalificaciones',
+                'b.calificacion'
             ])
+            ->orderBy('u.apellidoPaterno')
+            ->orderBy('u.apellidoMaterno')
+            ->orderBy('u.primerNombre')
             ->get();
 
         return response()->json($calificaciones, 200);
     }
+
 }