| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- <?php
- namespace App\Http\Controllers\Api;
- use App\Http\Controllers\Controller;
- use App\Models\User;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Hash;
- class UserController extends Controller
- {
- public function findOne($id)
- {
- $id = base64_decode($id);
- $usuario = DB::table('usuarios')->where('idUsuario', $id)->first();
- return response()->json($usuario, 200);
- }
- public function mostrar()
- {
- $usuario = DB::table('usuarios')
- ->where('idEscuela', 'COLEGIOABC')
- ->orderByRaw("FIELD(estatus, 'Activo', 'Inactivo', 'Eliminado')")
- ->select(
- DB::raw("CONCAT(COALESCE(primerNombre, ''), ' ', COALESCE(segundoNombre, ''), ' ', COALESCE(apellidoPaterno, ''), ' ', COALESCE(apellidoMaterno, '')) AS nombreUsuario"),
- 'usuarios.*'
- )
- ->get();
- foreach($usuario as $item) {
- if(isset($item->tipoUsuario)){
- $tipoUsuario = null;
- if($item->tipoUsuario == 'AL'){
- $tipoUsuario = 'Alumno';
- }else if($item->tipoUsuario == 'PF'){
- $tipoUsuario = 'Padre de Familia';
- }else if($item->tipoUsuario == 'PR'){
- $tipoUsuario = 'Profesor';
- }else if($item->tipoUsuario == 'AD'){
- $tipoUsuario = 'Administrador';
- }
- $item->NombreUsuario = $tipoUsuario;
- }
- }
- return response()->json($usuario, 200);
- }
- public function register(Request $request)
- {
- $registerUserData = $request->validate([
- 'idUsuario' => 'required|string|max:50|unique:usuarios,idUsuario',
- 'tipoUsuario' => 'required|in:AL,PR,PF,AD,SU',
- 'primerNombre' => 'required|string|max:50',
- 'segundoNombre' => 'nullable|string|max:50',
- 'apellidoPaterno' => 'required|string|max:50',
- 'apellidoMaterno' => 'nullable|string|max:50',
- 'alias' => 'nullable|string|max:50',
- 'contrasenaHash' => 'nullable|string',
- 'correo' => 'nullable|email|max:100|unique:usuarios,correo',
- 'grado' => 'nullable|string|max:50',
- ]);
- // Establecer una contraseña por defecto si no se proporciona
- $password = $registerUserData['contrasenaHash'] ?? '12345';
- $hashedPassword = Hash::make($password);
- $user = User::create([
- 'idEscuela' => 'COLEGIOABC',
- 'idUsuario' => $registerUserData['idUsuario'],
- 'tipoUsuario' => $registerUserData['tipoUsuario'],
- 'primerNombre' => $registerUserData['primerNombre'],
- 'segundoNombre' => $registerUserData['segundoNombre'],
- 'apellidoPaterno' => $registerUserData['apellidoPaterno'],
- 'apellidoMaterno' => $registerUserData['apellidoMaterno'],
- 'alias' => $registerUserData['alias'],
- 'contrasenaHash' => $hashedPassword,
- 'correo' => $registerUserData['correo'],
- 'grado' => $registerUserData['grado'] ?? 'NA',
- ]);
-
- return response()->json([
- 'status' => true,
- 'mensaje' => 'Usuario creado',
- ], 201);
- }
- public function usuariosHabilitados()
- {
- $usuario = DB::table('usuarios')
- ->where('idEscuela', 'COLEGIOABC')
- ->where('estatus', 'Activo')
- ->get();
- return response()->json($usuario, 200);
- }
- public function actualizar(Request $request)
- {
- try {
- DB::table('usuarios')
- ->updateOrInsert(
- ['idUsuario' => $request->id],
- [
- 'idUsuario' => $request->idUsuario,
- 'estatus' => $request->estatus,
- 'tipoUsuario' => $request->tipoUsuario,
- 'validado' => $request->validado,
- 'primerNombre' => $request->primerNombre,
- 'segundoNombre' => $request->segundoNombre,
- 'apellidoPaterno' => $request->apellidoPaterno,
- 'apellidoMaterno' => $request->apellidoMaterno,
- 'alias' => $request->alias,
- 'correo' => $request->correo,
- 'grado' => $request->grado ?? 'NA',
- ]
- );
- return response()->json(['mensaje' => 'Usuario actualizado exitosamente'], 201);
- } catch (\Exception $e) {
- return response()->json(['mensaje' => 'Error al actualizar el usuario: ' . $e->getMessage()], 500);
- }
- }
- public function eliminar($id)
- {
- $id = base64_decode($id);
- try {
- $existsInMateriasProfesores = DB::table('materias_profesores')
- ->where('idProfesor', $id)
- ->count();
- $existInGruposUsuarios = DB::table('grupos_usuarios')
- ->where('idUsuario', $id)
- ->count();
- if ($existsInMateriasProfesores > 0 || $existInGruposUsuarios > 0) {
- return response()->json([
- 'mensaje' => 'No se puede eliminar el usuario porque está asociado a otros registros.',
- 'count1' => $existsInMateriasProfesores,
- 'count2' => $existInGruposUsuarios
- ], 400);
- }
- DB::table('usuarios')
- ->updateOrInsert(
- ['idUsuario' => $id],
- ['estatus' => 'Eliminado']
- );
- return response()->json(['mensaje' => 'Usuario eliminado exitosamente'], 201);
- } catch (\Exception $e) {
- return response()->json(['mensaje' => 'Error al eliminar el nivel: ' . $e->getMessage()], 500);
- }
- }
- public function habilitar($id)
- {
- $id = base64_decode($id);
- try {
- $usuario = DB::table('usuarios')->where('idUsuario', $id)->first();
- $existsInGrados = DB::table('grados')
- ->where('nombreGrado', $usuario->grado)
- ->where('estado', 'Eliminado')
- ->exists();
- if ($existsInGrados) {
- return response()->json(['mensaje' => 'No se puede habilitar el usuario'], 400);
- }
- DB::table('usuarios')
- ->updateOrInsert(
- ['idUsuario' => $id],
- ['estatus' => 'Activo']
- );
- return response()->json(['mensaje' => 'Usuario habilitado exitosamente'], 201);
- } catch (\Exception $e) {
- return response()->json(['mensaje' => 'Error al eliminar el nivel: ' . $e->getMessage()], 500);
- }
- }
- }
|