Backend: agrega PATCH /users/:id y PATCH /professionals/:id (protegidos). Admin: pagina de usuario con edicion de nombre/telefono/ciudad/genero; pagina de profesional con dos secciones editables independientes (datos personales y perfil profesional). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
import { Controller, Get, Patch, Param, Body, UseGuards, Req } from '@nestjs/common';
|
|
import { ApiTags, ApiBearerAuth } from '@nestjs/swagger';
|
|
import { UsersService } from './users.service';
|
|
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
|
|
import { UpdateUserDto, FcmTokenDto } from '../auth/dto/auth.dto';
|
|
|
|
@ApiTags('Users')
|
|
@Controller('users')
|
|
export class UsersController {
|
|
constructor(private users: UsersService) {}
|
|
|
|
@Get()
|
|
findAll(@Req() req) {
|
|
const page = +(req.query.page || 1);
|
|
const limit = +(req.query.limit || 20);
|
|
return this.users.findAll(page, limit);
|
|
}
|
|
|
|
@Get('me')
|
|
@UseGuards(JwtAuthGuard)
|
|
@ApiBearerAuth()
|
|
findMe(@Req() req) {
|
|
return this.users.findById(req.user.sub);
|
|
}
|
|
|
|
@Patch('me')
|
|
@UseGuards(JwtAuthGuard)
|
|
@ApiBearerAuth()
|
|
update(@Req() req, @Body() dto: UpdateUserDto) {
|
|
return this.users.update(req.user.sub, dto);
|
|
}
|
|
|
|
@Patch('me/fcm-token')
|
|
@UseGuards(JwtAuthGuard)
|
|
@ApiBearerAuth()
|
|
updateFcmToken(@Req() req, @Body() dto: FcmTokenDto) {
|
|
return this.users.updateFcmToken(req.user.sub, dto.token);
|
|
}
|
|
|
|
@Patch(':id')
|
|
@UseGuards(JwtAuthGuard)
|
|
@ApiBearerAuth()
|
|
updateById(@Param('id') id: string, @Body() dto: UpdateUserDto) {
|
|
return this.users.update(id, dto);
|
|
}
|
|
|
|
@Get(':id')
|
|
findById(@Param('id') id: string) {
|
|
return this.users.findById(id);
|
|
}
|
|
}
|