| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307 |
- <?php
- namespace App\Http\Controllers\Api;
- use App\Http\Controllers\Controller;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- class RegistroCalicaciones extends Controller
- {
- public function getCalificaciones()
- {
- $calificaciones = DB::table('boletas_calificaciones')
- ->leftJoin('usuarios', 'usuarios.idUsuario', '=', 'boletas_calificaciones.idAlumnoBoletaCalificaciones')
- ->leftJoin('vista_materias_grados_grupos', 'vista_materias_grados_grupos.idMateria', '=', 'boletas_calificaciones.idMateriaBoletaCalificaciones')
- ->leftJoin('boletas_periodos', 'boletas_periodos.idPeriodo', '=', 'boletas_calificaciones.idPeriodoBoletaCalificaciones')
- ->select(
- DB::raw("CONCAT(COALESCE(usuarios.primerNombre, ''), ' ', COALESCE(usuarios.segundoNombre, ''), ' ', COALESCE(usuarios.apellidoPaterno, ''),
- ' ', COALESCE(usuarios.apellidoMaterno, '')) AS nombreAlumno"),
- DB::raw("CONCAT(COALESCE(vista_materias_grados_grupos.nombreGrado, ''), ' ', COALESCE(vista_materias_grados_grupos.nombreGrupo, '')) AS gradoGrupo"),
- 'vista_materias_grados_grupos.idGradoGrupoRelacionado',
- 'vista_materias_grados_grupos.nombreMateria',
- 'boletas_periodos.nombrePeriodo',
- 'boletas_calificaciones.*'
- )
- ->get();
- foreach ($calificaciones as $registro) {
- $registro->materiaGradoGrupo = $registro->nombreMateria . ' - ' . $registro->gradoGrupo;
- }
- return response()->json($calificaciones, 200);
- }
- // ------------------------------------------------------------------------------------
- public function registrarCalificacion(Request $request)
- {
- $message = '';
- $status = 0;
- 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;
- try {
- $registro = DB::table('boletas_calificaciones')
- ->where('idEscuela', 'COLEGIOABC')
- ->where('idAlumnoBoletaCalificaciones', $request->alumnos)
- ->where('idMateriaBoletaCalificaciones', $request->materias)
- ->where('idPeriodoBoletaCalificaciones', $request->periodo)
- ->update([
- 'calificacion' => $request->calificacion,
- 'usuarioRegistro' => $request->usuarioRegistro,
- ]);
- $message = 'Registro de calficiacion actualizado';
- $status = 200;
- } catch (\Exception $e) {
- $message = 'Error al editar el registro: ' . $e->getMessage();
- $status = 500;
- }
- return response()->json(['mensaje' => $message], $status);
- }
- public function eliminarEstado(Request $request)
- {
- $message = '';
- $status = 0;
- try {
- $registro = DB::table('boletas_calificaciones')
- ->where('idEscuela', 'COLEGIOABC')
- ->where('idAlumnoBoletaCalificaciones', $request->alumnos)
- ->where('idMateriaBoletaCalificaciones', $request->materias)
- ->where('idPeriodoBoletaCalificaciones', $request->periodo)
- ->update([
- 'estado' => 'Eliminado',
- ]);
- $message = 'Registro eliminado correctamente';
- $status = 200;
- } catch (\Exception $e) {
- $message = 'Error al eliminar el registro: ' . $e->getMessage();
- $status = 500;
- }
- return response()->json(['mensaje' => $message], $status);
- }
- public function habilitarEstado(Request $request)
- {
- $message = '';
- $status = 0;
- try {
- $registro = DB::table('boletas_calificaciones')
- ->where('idEscuela', 'COLEGIOABC')
- ->where('idAlumnoBoletaCalificaciones', $request->alumnos)
- ->where('idMateriaBoletaCalificaciones', $request->materias)
- ->where('idPeriodoBoletaCalificaciones', $request->periodo)
- ->update([
- 'estado' => 'Activo',
- ]);
- $message = 'Registro habilitado correctamente';
- $status = 200;
- } catch (\Exception $e) {
- $message = 'Error al habilitar el registro: ' . $e->getMessage();
- $status = 500;
- }
- return response()->json(['mensaje' => $message], $status);
- }
- public function getPeriodos()
- {
- $periodoBoleta = DB::table('boletas_periodos')
- ->where('estado', 'Activo')
- ->select('idPeriodo', 'nombrePeriodo')
- ->get();
- return response()->json($periodoBoleta, 200);
- }
- 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')
- ->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);
- })
- ->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');
- })
- ->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',
- 'g.idUsuario',
- 'u.primerNombre',
- 'u.segundoNombre',
- 'u.apellidoPaterno',
- 'u.apellidoMaterno',
- 'u.grado',
- 'm.idMateria',
- 'm.nombreMateria',
- 'm.idGradoGrupoRelacionado',
- 'b.idPeriodoBoletaCalificaciones',
- 'b.calificacion'
- ])
- ->orderBy('u.apellidoPaterno')
- ->orderBy('u.apellidoMaterno')
- ->orderBy('u.primerNombre')
- ->get();
- return response()->json($calificaciones, 200);
- }
- }
|