Browse Source

Terminar registro masivo

AldrickChavarria 6 months ago
parent
commit
95784d147b

+ 127 - 19
Back/backendP-Educativa/app/Http/Controllers/Api/RegistroCalicaciones.php

@@ -30,29 +30,137 @@ class RegistroCalicaciones extends Controller
     return response()-> json($calificaciones, 200);
   }
 
-  public function registrarCalificacion(Request $request){
+  // ------------------------------------------------------------------------------------
+
+  public function registrarCalificacion(Request $request) {
     $message = '';
     $status = 0;
-    try{
-        $registro = DB::table('boletas_calificaciones')->Insert([
-            'idEscuela' => 'COLEGIOABC',
-            'idAlumnoBoletaCalificaciones'=> $request-> alumnos,
-            'idMateriaBoletaCalificaciones'=> $request-> materias,
-            'idPeriodoBoletaCalificaciones'=> $request-> periodo,
-            'calificacion' => $request-> calificacion,
-            'usuarioRegistro' => $request-> usuarioRegistro,
-            'estado' => 'Activo',
-        ]);
-
-        $message = 'Registro de calficiacion exitoso'; $status = 200;
-
-    } catch(\Exception $e){
-        $message = 'Error al ingresar el registro: ' . $e->getMessage();
-            $status = 500;
+    
+    try {
+        // Verificar si ya existe una calificación para este alumno, materia y periodo
+        $existente = DB::table('boletas_calificaciones')
+            ->where('idEscuela', 'COLEGIOABC')
+            ->where('idAlumnoBoletaCalificaciones', $request->alumno)
+            ->where('idMateriaBoletaCalificaciones', $request->materia)
+            ->where('idPeriodoBoletaCalificaciones', $request->periodo)
+            ->where('estado', 'Activo')
+            ->first();
+            
+        if ($existente) {
+            // Actualizar la calificación existente
+            DB::table('boletas_calificaciones')
+                ->where('id', $existente->id)
+                ->update([
+                    'calificacion' => $request->calificacion,
+                    'usuarioRegistro' => $request->usuarioRegistro
+                ]);
+                
+            $message = 'Calificación actualizada exitosamente';
+            $status = 200;
+        } else {
+            // Insertar nueva calificación
+            DB::table('boletas_calificaciones')->insert([
+                'idEscuela' => 'COLEGIOABC',
+                'idAlumnoBoletaCalificaciones' => $request->alumno,
+                'idMateriaBoletaCalificaciones' => $request->materia,
+                'idPeriodoBoletaCalificaciones' => $request->periodo,
+                'calificacion' => $request->calificacion,
+                'usuarioRegistro' => $request->usuarioRegistro,
+                'estado' => 'Activo',
+            ]);
+            
+            $message = 'Registro de calificación exitoso';
+            $status = 200;
+        }
+    } catch(\Exception $e) {
+        $message = 'Error al procesar la calificación: ' . $e->getMessage();
+        $status = 500;
     }
+    
     return response()->json(['mensaje' => $message], $status);
-  }
+}
 
+// Nuevo método para carga masiva
+public function registrarCalificacionesMasivas(Request $request) {
+    $respuestas = [];
+    $status = 200;
+    
+    try {
+        $datos = $request->all();
+        $usuarioRegistro = $request->header('usuario'); // O como lo estés recibiendo
+        
+        foreach ($datos as $calificacion) {
+            $response = $this->registrarCalificacionIndividual($calificacion, $usuarioRegistro);
+            $respuestas[] = $response;
+        }
+        
+        $message = 'Proceso de carga masiva completado';
+    } catch(\Exception $e) {
+        $message = 'Error en carga masiva: ' . $e->getMessage();
+        $status = 500;
+    }
+    
+    return response()->json(['mensaje' => $message, 'detalles' => $respuestas], $status);
+}
+
+private function registrarCalificacionIndividual($calificacion, $usuarioRegistro) {
+    try {
+        // Verificar si ya existe
+        $existente = DB::table('boletas_calificaciones')
+            ->where('idEscuela', 'COLEGIOABC')
+            ->where('idAlumnoBoletaCalificaciones', $calificacion['alumnoId'])
+            ->where('idMateriaBoletaCalificaciones', $calificacion['materiaId'])
+            ->where('idPeriodoBoletaCalificaciones', $calificacion['periodoId'])
+            ->where('estado', 'Activo')
+            ->first();
+            
+        if ($existente) {
+            // Actualizar
+            DB::table('boletas_calificaciones')
+                ->where('id', $existente->id)
+                ->update([
+                    'calificacion' => $calificacion['calificacion'],
+                    'usuarioRegistro' => 'JUAN'
+                ]);
+                
+            return [
+                'alumno' => $calificacion['alumnoId'],
+                'materia' => $calificacion['materiaId'],
+                'periodo' => $calificacion['periodoId'],
+                'mensaje' => 'Actualizado',
+                'status' => 200
+            ];
+        } else {
+            // Insertar
+            DB::table('boletas_calificaciones')->insert([
+                'idEscuela' => 'COLEGIOABC',
+                'idAlumnoBoletaCalificaciones' => $calificacion['alumnoId'],
+                'idMateriaBoletaCalificaciones' => $calificacion['materiaId'],
+                'idPeriodoBoletaCalificaciones' => $calificacion['periodoId'],
+                'calificacion' => $calificacion['calificacion'],
+                'usuarioRegistro' => 'JUAN',
+                'estado' => 'Activo',
+            ]);
+            
+            return [
+                'alumno' => $calificacion['alumnoId'],
+                'materia' => $calificacion['materiaId'],
+                'periodo' => $calificacion['periodoId'],
+                'mensaje' => 'Registrado',
+                'status' => 200
+            ];
+        }
+    } catch(\Exception $e) {
+        return [
+            'alumno' => $calificacion['alumnoId'],
+            'materia' => $calificacion['materiaId'],
+            'periodo' => $calificacion['periodoId'],
+            'mensaje' => 'Error: ' . $e->getMessage(),
+            'status' => 500
+        ];
+    }
+}
+// ----------------------------------------------------------------
   public function editarCalificacion(Request $request){
     $message = '';
     $status = 0;
@@ -64,7 +172,7 @@ class RegistroCalicaciones extends Controller
         ->where('idPeriodoBoletaCalificaciones', $request ->periodo)
         ->update([
             'calificacion' => $request-> calificacion,
-            'usuarioRegistro' => $request-> $usuarioRegistro,
+            'usuarioRegistro' => $request-> usuarioRegistro,
         ]);
         $message = 'Registro de calficiacion actualizado'; $status = 200;
     } catch(\Exception $e){

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

@@ -227,6 +227,7 @@ Route::middleware(['auth:sanctum'])->group(function () {
     Route::get('getCalificaciones',[RegistroCalicaciones::class,'getCalificaciones']);
     Route::get('getPeriodosCalificacion',[RegistroCalicaciones::class,'getPeriodos']);
     Route::post('registrarCalificacion',[RegistroCalicaciones::class,'registrarCalificacion']);
+    Route::post('registrarCalificacionesMasivas',[RegistroCalicaciones::class,'registrarCalificacionesMasivas']);
     Route::put('editarCalificacion',[RegistroCalicaciones::class,'editarCalificacion']);
     Route::put('elminarEstadoCalificacion',[RegistroCalicaciones::class,'eliminarEstado']);
     Route::put('habilitarEstadoCalificacion',[RegistroCalicaciones::class,'habilitarEstado']);