|
@@ -6,31 +6,101 @@ import {
|
|
|
Param,
|
|
Param,
|
|
|
Put,
|
|
Put,
|
|
|
Delete,
|
|
Delete,
|
|
|
|
|
+ ParseIntPipe,
|
|
|
|
|
+ Patch,
|
|
|
} from '@nestjs/common';
|
|
} from '@nestjs/common';
|
|
|
import { CreateUserUseCase } from '../../application/use-cases/create-user.use-case';
|
|
import { CreateUserUseCase } from '../../application/use-cases/create-user.use-case';
|
|
|
import { CreateUserDto } from '../../application/dto/create-user.dto';
|
|
import { CreateUserDto } from '../../application/dto/create-user.dto';
|
|
|
|
|
+import { ApiOperation, ApiResponse, ApiParam } from '@nestjs/swagger';
|
|
|
|
|
+import { UseInterceptors } from '@nestjs/common';
|
|
|
|
|
+import { BodyParserInterceptor } from '../../interceptors/body-parser.interceptor';
|
|
|
|
|
+import { FindUserByIdUseCase } from '../../application/use-cases/find-user-by-id.use-case';
|
|
|
|
|
+import { UpdateUserUseCase } from '../../application/use-cases/update-user.use-case';
|
|
|
|
|
+import { UpdateUserDto } from '../../application/dto/update-user.dto';
|
|
|
|
|
+import { DeleteUserUseCase } from '../../application/use-cases/delete-user.use-case';
|
|
|
|
|
+import { FindAllUsersUseCase } from '../../application/use-cases/find-all-users.use-case';
|
|
|
|
|
|
|
|
@Controller('users')
|
|
@Controller('users')
|
|
|
|
|
+@UseInterceptors(BodyParserInterceptor)
|
|
|
export class UserController {
|
|
export class UserController {
|
|
|
- constructor(private readonly createUserUseCase: CreateUserUseCase) {}
|
|
|
|
|
|
|
+ constructor(
|
|
|
|
|
+ private readonly createUserUseCase: CreateUserUseCase,
|
|
|
|
|
+ private readonly findUserByIdUseCase: FindUserByIdUseCase,
|
|
|
|
|
+ private readonly updateUserUseCase: UpdateUserUseCase,
|
|
|
|
|
+ private readonly deleteUserUseCase: DeleteUserUseCase,
|
|
|
|
|
+ private readonly findAllUsersUseCase: FindAllUsersUseCase,
|
|
|
|
|
+ ) {}
|
|
|
|
|
|
|
|
@Post()
|
|
@Post()
|
|
|
|
|
+ @ApiOperation({ description: 'Creater un utilisateur' })
|
|
|
|
|
+ @ApiResponse({ status: 200 })
|
|
|
async create(@Body() createUserDto: CreateUserDto) {
|
|
async create(@Body() createUserDto: CreateUserDto) {
|
|
|
- return this.createUserUseCase.execute(createUserDto);
|
|
|
|
|
|
|
+ //console.log('Requête reçue:', JSON.stringify(createUserDto));
|
|
|
|
|
+ // eslint-disable-next-line no-useless-catch
|
|
|
|
|
+ try {
|
|
|
|
|
+ const result = await this.createUserUseCase.execute(createUserDto);
|
|
|
|
|
+
|
|
|
|
|
+ return result;
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ throw error;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Get(':id')
|
|
@Get(':id')
|
|
|
- async findOne(@Param('id') id: string) {
|
|
|
|
|
- // À implémenter avec le cas d'utilisation approprié
|
|
|
|
|
|
|
+ @ApiOperation({ description: 'Récupérer un utilisateur par son ID' })
|
|
|
|
|
+ @ApiResponse({ status: 200, description: 'Utilisateur trouvé' })
|
|
|
|
|
+ @ApiResponse({ status: 404, description: 'Utilisateur non trouvé' })
|
|
|
|
|
+ @ApiParam({ name: 'id', description: "ID de l'utilisateur", type: 'number' })
|
|
|
|
|
+ async findOne(@Param('id', ParseIntPipe) id: number) {
|
|
|
|
|
+ return this.findUserByIdUseCase.execute(id);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Put(':id')
|
|
@Put(':id')
|
|
|
- async update(@Param('id') id: string, @Body() updateUserDto: any) {
|
|
|
|
|
- // À implémenter avec le cas d'utilisation approprié
|
|
|
|
|
|
|
+ @ApiOperation({ description: 'Mettre à jour un utilisateur par son ID' })
|
|
|
|
|
+ @ApiResponse({
|
|
|
|
|
+ status: 200,
|
|
|
|
|
+ description: 'Utilisateur mis à jour avec succès',
|
|
|
|
|
+ })
|
|
|
|
|
+ @ApiResponse({ status: 404, description: 'Utilisateur non trouvé' })
|
|
|
|
|
+ @ApiParam({ name: 'id', description: "ID de l'utilisateur", type: 'number' })
|
|
|
|
|
+ async update(
|
|
|
|
|
+ @Param('id', ParseIntPipe) id: number,
|
|
|
|
|
+ @Body() updateUserDto: UpdateUserDto,
|
|
|
|
|
+ ) {
|
|
|
|
|
+ return this.updateUserUseCase.execute(id, updateUserDto);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Patch(':id')
|
|
|
|
|
+ @ApiOperation({
|
|
|
|
|
+ description: 'Mettre à jour partiellement un utilisateur par son ID',
|
|
|
|
|
+ })
|
|
|
|
|
+ @ApiResponse({
|
|
|
|
|
+ status: 200,
|
|
|
|
|
+ description: 'Utilisateur partiellement mis à jour avec succès',
|
|
|
|
|
+ })
|
|
|
|
|
+ @ApiResponse({ status: 404, description: 'Utilisateur non trouvé' })
|
|
|
|
|
+ @ApiParam({ name: 'id', description: "ID de l'utilisateur", type: 'number' })
|
|
|
|
|
+ async partialUpdate(
|
|
|
|
|
+ @Param('id', ParseIntPipe) id: number,
|
|
|
|
|
+ @Body() partialUpdateDto: Partial<UpdateUserDto>,
|
|
|
|
|
+ ) {
|
|
|
|
|
+ return this.updateUserUseCase.execute(id, partialUpdateDto);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Delete(':id')
|
|
@Delete(':id')
|
|
|
- async remove(@Param('id') id: string) {
|
|
|
|
|
- // À implémenter avec le cas d'utilisation approprié
|
|
|
|
|
|
|
+ @ApiOperation({ description: 'Supprimer un utilisateur par son ID' })
|
|
|
|
|
+ @ApiResponse({ status: 200, description: 'Utilisateur supprimé avec succès' })
|
|
|
|
|
+ @ApiResponse({ status: 404, description: 'Utilisateur non trouvé' })
|
|
|
|
|
+ @ApiParam({ name: 'id', description: "ID de l'utilisateur", type: 'number' })
|
|
|
|
|
+ async remove(@Param('id', ParseIntPipe) id: number) {
|
|
|
|
|
+ await this.deleteUserUseCase.execute(id);
|
|
|
|
|
+ return { message: 'Utilisateur supprimé avec succès' };
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Get()
|
|
|
|
|
+ @ApiOperation({ description: 'Récupérer tous les utilisateurs' })
|
|
|
|
|
+ @ApiResponse({ status: 200, description: 'Liste des utilisateurs' })
|
|
|
|
|
+ async findAll() {
|
|
|
|
|
+ return this.findAllUsersUseCase.execute();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|