Sfoglia il codice sorgente

Add methods for retrieving tasks and assigning tasks to users in TareasController

EmilianoChavarria 1 mese fa
parent
commit
15b22f2c47

+ 60 - 3
Back/backendP-Educativa/app/Http/Controllers/Api/TareasController.php

@@ -24,6 +24,15 @@ class TareasController extends Controller
         }
     }
 
+    public function getAllTareas(){
+        $tareas = DB::table('tareas')
+            ->where('idEscuela', 'COlEGIOABC')
+            ->orderBy('fechaPublicacion', 'desc')
+            ->get();
+
+        return response()->json($tareas);
+    }
+
     public function crear(Request $request)
     {
 
@@ -33,7 +42,7 @@ class TareasController extends Controller
         $carpetaPeriodo = $periodoService->obtenerPeriodoActivoNombre();
 
         $rutaBucket = 'circulares/';
-        
+
         try {
             // Procesar adjuntoTarea (por si mandas archivos en base64 como en circulares)
             $adjuntos = [];
@@ -75,7 +84,7 @@ class TareasController extends Controller
 
             // Insertar tarea en la base de datos
             DB::table('tareas')->insert([
-                'idEscuela' => $request->idEscuela,
+                'idEscuela' => 'COlEGIOABC',
                 'idMateriaTarea' => $request->idMateriaTarea,
                 'idTipoTarea' => $request->idTipoTarea,
                 'tituloTarea' => $request->tituloTarea,
@@ -84,7 +93,7 @@ class TareasController extends Controller
                 'adjuntoTarea' => json_encode($adjuntos),
                 'fechaPublicacion' => $request->fechaPublicacion,
                 'fechaEntrega' => $request->fechaEntrega,
-                'estado' => $request->estado,
+                'estado' => 'Completa',
                 // estos por default en 'No' si no vienen en la request
                 'entregaDigital' => $request->entregaDigital ?? 'No',
                 'calificacion' => $request->calificacion ?? 'No',
@@ -102,5 +111,53 @@ class TareasController extends Controller
         }
     }
 
+    public function obtenerAlumnosPorMateria($idMateria)
+    {
+        // Primero obtenemos el grado o grupo relacionado con la materia
+        $materia = DB::table('vista_materias_grados_grupos')
+            ->where('idMateria', $idMateria)
+            ->first();
+
+        if (!$materia) {
+            return collect(); // Si no existe la materia
+        }
+
+        $idRelacionado = $materia->idGradoGrupoRelacionado;
+
+        // --- Caso 1: Coincide con el grado del usuario ---
+        $alumnosPorGrado = DB::table('usuarios')
+            ->where('grado', $idRelacionado)
+            ->where('tipoUsuario', 'AL') // solo alumnos
+            ->where('estatus', 'Activo')
+            ->get();
+
+        // --- Caso 2: Coincide con un grupo ---
+        $alumnosPorGrupo = DB::table('usuarios')
+            ->join('grupos', 'usuarios.idUsuario', '=', 'grupos.idUsuario')
+            ->where('grupos.idGrupo', $idRelacionado)
+            ->where('usuarios.tipoUsuario', 'AL')
+            ->where('usuarios.estatus', 'Activo')
+            ->select('usuarios.*')
+            ->get();
+
+        // Unimos los resultados
+        return $alumnosPorGrado->merge($alumnosPorGrupo);
+    }
+
+    public function asignarTareaUsuario(Request $request)
+    {
+
+        // Insertar con Query Builder
+        DB::table('tareas_usuarios_colegioabc')->insert([
+            'idTarea' => $request->idTarea,
+            'idUsuario' => $request->idUsuario,
+        ]);
+
+        return response()->json([
+            'success' => true,
+            'message' => 'Tarea asignada al usuario correctamente',
+        ], 201);
+    }
+
 
 }

+ 4 - 0
Back/backendP-Educativa/routes/api.php

@@ -10,6 +10,7 @@ use App\Http\Controllers\Api\GradoEducativoController;
 use App\Http\Controllers\Api\GrupoController;
 use App\Http\Controllers\Api\MateriaController;
 use App\Http\Controllers\Api\PeriodoController;
+use App\Http\Controllers\Api\TareasController;
 use App\Http\Controllers\Api\UserController;
 use App\Http\Controllers\auth\LoginController;
 use App\Http\Controllers\MailController;
@@ -290,6 +291,9 @@ Route::middleware(['auth:sanctum'])->group(function () {
 
 
 
+    // Rutas para tareas
+    Route::post('/crearTarea', [TareasController::class, 'crear']);
+    Route::get('/materias/{id}/alumnos', [TareasController::class, 'obtenerAlumnosPorMateria']);