ProfesoresController.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\DB;
  6. use App\Models\Users\RelacionProfesores;
  7. class ProfesoresController extends Controller
  8. {
  9. public function mostrarProfesores()
  10. {
  11. $profesores = DB::table('usuarios')
  12. ->leftJoin('vista_usuarios_materias', 'usuarios.idUsuario', '=', 'vista_usuarios_materias.idProfesor')
  13. ->select(
  14. DB::raw("CONCAT(COALESCE(usuarios.primerNombre, ''), ' ', COALESCE(usuarios.segundoNombre, ''), ' ',
  15. COALESCE(usuarios.apellidoPaterno, ''), ' ', COALESCE(usuarios.apellidoMaterno, '')) AS nombreProfesor"),
  16. 'usuarios.idUsuario',
  17. 'usuarios.estatus',
  18. 'usuarios.tipoUsuario',
  19. 'vista_usuarios_materias.idMateria',
  20. 'vista_usuarios_materias.idGradoGrupoRelacionado',
  21. 'vista_usuarios_materias.colorCurso',
  22. 'vista_usuarios_materias.nombreMateria',
  23. 'vista_usuarios_materias.gradoGrupo',
  24. )
  25. ->where('usuarios.idEscuela', 'COLEGIOABC')
  26. ->where('usuarios.tipoUsuario', 'PR')
  27. ->where('usuarios.estatus', 'Activo')
  28. ->get();
  29. $profesores = $profesores->groupBy('idUsuario')->map(function ($group) {
  30. $first = $group->first();
  31. $nombreMaterias = $group->map(function ($item) {
  32. return [
  33. 'nombreMateria' => $item->nombreMateria,
  34. ];
  35. })->unique()->values()->filter(function ($item) {
  36. return $item['nombreMateria'] !== null;
  37. })->all();
  38. $nombreGrupos = $group->map(function ($item) {
  39. return [
  40. 'idGradoGrupoRelacionado' => $item->idGradoGrupoRelacionado,
  41. 'nombreGrupo' => $item->gradoGrupo,
  42. 'idMateria' => $item->idMateria,
  43. 'nombreMateria' => $item->nombreMateria,
  44. 'colorMateria' => $item->colorCurso
  45. ];
  46. })->values()->filter(function ($item) {
  47. return $item['idGradoGrupoRelacionado'] !== null && $item['nombreGrupo'] !== null;
  48. })->all();
  49. return [
  50. 'nombreProfesor' => $first->nombreProfesor,
  51. 'idUsuario' => $first->idUsuario,
  52. 'tipoUsuario' => $first->tipoUsuario,
  53. 'nombreMaterias' => empty($nombreMaterias) ? [] : array_values($nombreMaterias),
  54. 'nombreGrupos' => empty($nombreGrupos) ? [] : array_values($nombreGrupos)
  55. ];
  56. })->values();
  57. return response()->json([
  58. 'profesores' => $profesores
  59. ], 200);
  60. }
  61. public function RelacionarProfesor(Request $request)
  62. {
  63. $message = '';
  64. $status = 0;
  65. try {
  66. $profesores = DB::table('materias_profesores')->updateOrInsert([
  67. 'idEscuela' => 'COLEGIOABC',
  68. 'idProfesor' => $request->id,
  69. 'idMateria' => $request->idMateria,
  70. 'idGrupo' => $request->idGrupo,
  71. ]);
  72. $message = 'Relación creada exitosamente';
  73. $status = 200;
  74. } catch (\Exception $e) {
  75. $message = $e->getMessage();
  76. $status = 500;
  77. }
  78. return response()->json(['mensaje' => $message], $status);
  79. }
  80. public function eliminarRelacion(Request $request)
  81. {
  82. $message = '';
  83. $status = 0;
  84. try {
  85. $profesores = DB::table('materias_profesores')
  86. ->where('idEscuela', 'COLEGIOABC')
  87. ->where('idProfesor', $request->id)
  88. ->where('idMateria', $request->idMateria)
  89. ->where('idGrupo', $request->idGrupo)
  90. ->delete();
  91. $message = 'Relación eliminada exitosamente';
  92. $status = 200;
  93. } catch (\Exception $e) {
  94. $message = $e->getMessage();
  95. $status = 500;
  96. }
  97. return response()->json(['mensaje' => $message], $status);
  98. }
  99. public function getMaterias()
  100. {
  101. $materia = DB::table('vista_materias_grados_grupos')
  102. ->select(
  103. DB::raw("CONCAT(COALESCE(nombreGrado, ''), COALESCE(nombreGrupo, '')) AS nombreGradoGrupo"),
  104. 'idMateria',
  105. 'nombreMateria',
  106. 'colorCurso',
  107. 'idGradoGrupoRelacionado'
  108. )
  109. ->where('idEscuela', 'COLEGIOABC')
  110. ->where('estado', 'Activo')
  111. ->get();
  112. $materia = $materia->groupBy('nombreMateria')->map(function ($group) {
  113. $fist = $group->first();
  114. $nombreMaterias = $group->map(function ($item) {
  115. return [
  116. 'idMateria' => $item->idMateria,
  117. 'gradoGrupo' => $item->nombreGradoGrupo,
  118. 'idGradoGrupo' => $item->idGradoGrupoRelacionado,
  119. ];
  120. })->values()->all();
  121. return [
  122. 'nombreMateria' => $fist->nombreMateria,
  123. 'colorMateria' => $fist->colorCurso,
  124. 'gradoGrupo' => $nombreMaterias,
  125. ];
  126. })->values();
  127. return response()->json([
  128. 'materias' => $materia
  129. ], 200);
  130. }
  131. function getGrupos($id)
  132. {
  133. // $id = base64_decode($id);
  134. $grupos = DB::table('materias_profesores')
  135. ->select('idGrupo')
  136. ->where('idProfesor', $id)
  137. ->groupBy('idGrupo')
  138. ->get();
  139. foreach ($grupos as $grupo) {
  140. $grupo->nombreGrupo = DB::table('grupos')
  141. ->select('nombreGrupo')
  142. ->where('idGrupo', $grupo->idGrupo)
  143. ->first()->nombreGrupo ?? $grupo->idGrupo;
  144. }
  145. return response()->json($grupos, 200);
  146. }
  147. }