UserController.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\User;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\DB;
  7. use Illuminate\Support\Facades\Hash;
  8. class UserController extends Controller
  9. {
  10. public function findOne($id)
  11. {
  12. $id = base64_decode($id);
  13. $usuario = DB::table('usuarios')->where('idUsuario', $id)->first();
  14. return response()->json($usuario, 200);
  15. }
  16. public function mostrar()
  17. {
  18. $usuario = DB::table('usuarios')
  19. ->where('idEscuela', 'COLEGIOABC')
  20. ->orderByRaw("FIELD(estatus, 'Activo', 'Inactivo', 'Eliminado')")
  21. ->select(
  22. DB::raw("CONCAT(COALESCE(primerNombre, ''), ' ', COALESCE(segundoNombre, ''), ' ', COALESCE(apellidoPaterno, ''), ' ', COALESCE(apellidoMaterno, '')) AS nombreUsuario"),
  23. 'usuarios.*'
  24. )
  25. ->get();
  26. foreach($usuario as $item) {
  27. if(isset($item->tipoUsuario)){
  28. $tipoUsuario = null;
  29. if($item->tipoUsuario == 'AL'){
  30. $tipoUsuario = 'Alumno';
  31. }else if($item->tipoUsuario == 'PF'){
  32. $tipoUsuario = 'Padre de Familia';
  33. }else if($item->tipoUsuario == 'PR'){
  34. $tipoUsuario = 'Profesor';
  35. }else if($item->tipoUsuario == 'AD'){
  36. $tipoUsuario = 'Administrador';
  37. }
  38. $item->NombreUsuario = $tipoUsuario;
  39. }
  40. }
  41. return response()->json($usuario, 200);
  42. }
  43. public function register(Request $request)
  44. {
  45. $registerUserData = $request->validate([
  46. 'idUsuario' => 'required|string|max:50|unique:usuarios,idUsuario',
  47. 'tipoUsuario' => 'required|in:AL,PR,PF,AD,SU',
  48. 'primerNombre' => 'required|string|max:50',
  49. 'segundoNombre' => 'nullable|string|max:50',
  50. 'apellidoPaterno' => 'required|string|max:50',
  51. 'apellidoMaterno' => 'nullable|string|max:50',
  52. 'alias' => 'nullable|string|max:50',
  53. 'contrasenaHash' => 'nullable|string',
  54. 'correo' => 'nullable|email|max:100|unique:usuarios,correo',
  55. 'grado' => 'nullable|string|max:50',
  56. ]);
  57. // Establecer una contraseña por defecto si no se proporciona
  58. $password = $registerUserData['contrasenaHash'] ?? '12345';
  59. $hashedPassword = Hash::make($password);
  60. $user = User::create([
  61. 'idEscuela' => 'COLEGIOABC',
  62. 'idUsuario' => $registerUserData['idUsuario'],
  63. 'tipoUsuario' => $registerUserData['tipoUsuario'],
  64. 'primerNombre' => $registerUserData['primerNombre'],
  65. 'segundoNombre' => $registerUserData['segundoNombre'],
  66. 'apellidoPaterno' => $registerUserData['apellidoPaterno'],
  67. 'apellidoMaterno' => $registerUserData['apellidoMaterno'],
  68. 'alias' => $registerUserData['alias'],
  69. 'contrasenaHash' => $hashedPassword,
  70. 'correo' => $registerUserData['correo'],
  71. 'grado' => $registerUserData['grado'] ?? 'NA',
  72. ]);
  73. return response()->json([
  74. 'status' => true,
  75. 'mensaje' => 'Usuario creado',
  76. ], 201);
  77. }
  78. public function usuariosHabilitados()
  79. {
  80. $usuario = DB::table('usuarios')
  81. ->where('idEscuela', 'COLEGIOABC')
  82. ->where('estatus', 'Activo')
  83. ->get();
  84. return response()->json($usuario, 200);
  85. }
  86. public function actualizar(Request $request)
  87. {
  88. try {
  89. DB::table('usuarios')
  90. ->updateOrInsert(
  91. ['idUsuario' => $request->id],
  92. [
  93. 'idUsuario' => $request->idUsuario,
  94. 'estatus' => $request->estatus,
  95. 'tipoUsuario' => $request->tipoUsuario,
  96. 'validado' => $request->validado,
  97. 'primerNombre' => $request->primerNombre,
  98. 'segundoNombre' => $request->segundoNombre,
  99. 'apellidoPaterno' => $request->apellidoPaterno,
  100. 'apellidoMaterno' => $request->apellidoMaterno,
  101. 'alias' => $request->alias,
  102. 'correo' => $request->correo,
  103. 'grado' => $request->grado ?? 'NA',
  104. ]
  105. );
  106. return response()->json(['mensaje' => 'Usuario actualizado exitosamente'], 201);
  107. } catch (\Exception $e) {
  108. return response()->json(['mensaje' => 'Error al actualizar el usuario: ' . $e->getMessage()], 500);
  109. }
  110. }
  111. public function eliminar($id)
  112. {
  113. $id = base64_decode($id);
  114. try {
  115. $existsInMateriasProfesores = DB::table('materias_profesores')
  116. ->where('idProfesor', $id)
  117. ->count();
  118. $existInGruposUsuarios = DB::table('grupos_usuarios')
  119. ->where('idUsuario', $id)
  120. ->count();
  121. if ($existsInMateriasProfesores > 0 || $existInGruposUsuarios > 0) {
  122. return response()->json([
  123. 'mensaje' => 'No se puede eliminar el usuario porque está asociado a otros registros.',
  124. 'count1' => $existsInMateriasProfesores,
  125. 'count2' => $existInGruposUsuarios
  126. ], 400);
  127. }
  128. DB::table('usuarios')
  129. ->updateOrInsert(
  130. ['idUsuario' => $id],
  131. ['estatus' => 'Eliminado']
  132. );
  133. return response()->json(['mensaje' => 'Usuario eliminado exitosamente'], 201);
  134. } catch (\Exception $e) {
  135. return response()->json(['mensaje' => 'Error al eliminar el nivel: ' . $e->getMessage()], 500);
  136. }
  137. }
  138. public function habilitar($id)
  139. {
  140. $id = base64_decode($id);
  141. try {
  142. $usuario = DB::table('usuarios')->where('idUsuario', $id)->first();
  143. $existsInGrados = DB::table('grados')
  144. ->where('nombreGrado', $usuario->grado)
  145. ->where('estado', 'Eliminado')
  146. ->exists();
  147. if ($existsInGrados) {
  148. return response()->json(['mensaje' => 'No se puede habilitar el usuario'], 400);
  149. }
  150. DB::table('usuarios')
  151. ->updateOrInsert(
  152. ['idUsuario' => $id],
  153. ['estatus' => 'Activo']
  154. );
  155. return response()->json(['mensaje' => 'Usuario habilitado exitosamente'], 201);
  156. } catch (\Exception $e) {
  157. return response()->json(['mensaje' => 'Error al eliminar el nivel: ' . $e->getMessage()], 500);
  158. }
  159. }
  160. }