Răsfoiți Sursa

(feat) ajouter mes controllers et mes dépendance dans le module. mes routes sont bonne

Brin AMONKONAN 1 an în urmă
părinte
comite
a28e5c1100

+ 41 - 2
node_app/src/app.module.ts

@@ -6,6 +6,19 @@ import { UserController } from './presentation/controllers/user.controller';
 import { CreateUserUseCase } from './application/use-cases/create-user.use-case';
 import { UserRepository } from './infrastructure/database/repositories/user.repository';
 import { UpdateUserUseCase } from './application/use-cases/update-user.use-case';
+import { CompanyController } from './presentation/controllers/company.controller';
+import { CreateCompanyUseCase } from './application/use-cases/company/create-company.use-case';
+import { CompanyRepository } from './infrastructure/database/repositories/company.repository';
+import { CompanyMapper } from './infrastructure/mappers/company.mapper';
+import { FindAllCompaniesUseCase } from './application/use-cases/company/find-all-companies.use-case';
+import { DriverController } from './presentation/controllers/driver.controller';
+import { PlaceController } from './presentation/controllers/place.controller';
+import { VehiculeController } from './presentation/controllers/vehicle.controller';
+import { TrajetController } from './presentation/controllers/trajet.controller';
+import { VehiculeRepository } from './infrastructure/database/repositories/vehicule.repository';
+import { VehiculeMapper } from './infrastructure/mappers/vehicule.mapper';
+import { UpdateCompanyUseCase } from './application/use-cases/company/update-company.use-case';
+import { UserMapper } from './infrastructure/mappers/user.mapper';
 
 @Module({
   imports: [
@@ -15,14 +28,40 @@ import { UpdateUserUseCase } from './application/use-cases/update-user.use-case'
     PrismaModule,
     ServicesModule,
   ],
-  controllers: [UserController],
+  controllers: [
+    UserController,
+    CompanyController,
+    DriverController,
+    PlaceController,
+    VehiculeController,
+    TrajetController,
+  ],
   providers: [
+    // User related providers
     CreateUserUseCase,
-    UpdateUserUseCase, // Ajoutez cette ligne
+    UpdateUserUseCase,
+    UserMapper,
     {
       provide: 'IUserRepository',
       useClass: UserRepository,
     },
+
+    // Company related providers
+    CreateCompanyUseCase,
+    FindAllCompaniesUseCase,
+    UpdateCompanyUseCase,
+    CompanyMapper,
+    {
+      provide: 'CompanyRepository',
+      useClass: CompanyRepository,
+    },
+
+    // Vehicule related providers
+    VehiculeMapper,
+    {
+      provide: 'VehiculeRepository',
+      useClass: VehiculeRepository,
+    },
   ],
 })
 export class AppModule {}

+ 5 - 2
node_app/src/application/use-cases/company/find-all-companies.use-case.ts

@@ -1,10 +1,13 @@
-import { Injectable } from '@nestjs/common';
+import { Injectable, Inject } from '@nestjs/common';
 import { CompanyRepository } from '../../../infrastructure/database/repositories/company.repository';
 import { Company } from '../../../domain/entities/company.entity';
 
 @Injectable()
 export class FindAllCompaniesUseCase {
-  constructor(private readonly companyRepository: CompanyRepository) {}
+  constructor(
+    @Inject('CompanyRepository')
+    private readonly companyRepository: CompanyRepository,
+  ) {}
 
   async execute(): Promise<Company[]> {
     return this.companyRepository.findAll();

+ 3 - 1
node_app/src/main.ts

@@ -24,7 +24,9 @@ async function bootstrap() {
     .addTag('Transport')
     .build();
 
-  const document = SwaggerModule.createDocument(app, config);
+  const document = SwaggerModule.createDocument(app, config, {
+    ignoreGlobalPrefix: false,
+  });
   SwaggerModule.setup('api-docs', app, document);
 
   // Get Prisma Service

+ 41 - 3
node_app/src/presentation/controllers/company.controller.ts

@@ -7,39 +7,77 @@ import {
   Put,
   Delete,
 } from '@nestjs/common';
-import { ApiTags } from '@nestjs/swagger';
+import { ApiResponse, ApiTags, ApiOperation, ApiParam } from '@nestjs/swagger';
 import { CreateCompanyDto } from '../../application/dto/create-company.dto';
 import { UpdateCompanyDto } from '../../application/dto/update-company.dto';
 import { FindAllCompaniesUseCase } from '../../application/use-cases/company/find-all-companies.use-case';
+import { CompanyResponseDto } from 'src/application/dto/responses/company-response.dto';
 
 @ApiTags('companies')
 @Controller('companies')
 export class CompanyController {
   constructor(
-    private readonly findAllCompaniesUseCase: FindAllCompaniesUseCase
+    private readonly findAllCompaniesUseCase: FindAllCompaniesUseCase,
   ) {}
 
   @Post()
+  @ApiOperation({ summary: 'Créer une nouvelle entreprise' })
+  @ApiResponse({
+    status: 201,
+    description: "L'entreprise a été créée avec succès",
+    type: CreateCompanyDto,
+  })
   async create(@Body() createCompanyDto: CreateCompanyDto) {
     // Implementation
   }
 
   @Get()
+  @ApiOperation({ summary: 'Récupérer toutes les entreprises' })
+  @ApiResponse({
+    status: 200,
+    description: 'Liste de toutes les entreprises',
+    type: [CompanyResponseDto],
+  })
   async findAll() {
     return this.findAllCompaniesUseCase.execute();
   }
 
   @Get(':id')
+  @ApiOperation({ summary: 'Récupérer une entreprise par son ID' })
+  @ApiParam({ name: 'id', description: "ID de l'entreprise" })
+  @ApiResponse({
+    status: 200,
+    description: "L'entreprise a été trouvée",
+    type: CompanyResponseDto,
+  })
+  @ApiResponse({ status: 404, description: 'Entreprise non trouvée' })
   async findOne(@Param('id') id: string) {
     // TODO: Implement get company by id use case
   }
 
   @Put(':id')
-  async update(@Param('id') id: string, @Body() updateCompanyDto: any) {
+  @ApiOperation({ summary: 'Mettre à jour une entreprise' })
+  @ApiParam({ name: 'id', description: "ID de l'entreprise" })
+  @ApiResponse({
+    status: 200,
+    description: "L'entreprise a été mise à jour",
+    type: CompanyResponseDto,
+  })
+  async update(
+    @Param('id') id: string,
+    @Body() updateCompanyDto: UpdateCompanyDto,
+  ) {
     // TODO: Implement update company use case
   }
 
   @Delete(':id')
+  @ApiOperation({ summary: 'Supprimer une entreprise' })
+  @ApiParam({ name: 'id', description: "ID de l'entreprise" })
+  @ApiResponse({
+    status: 200,
+    description: "L'entreprise a été supprimée",
+    type: CompanyResponseDto,
+  })
   async remove(@Param('id') id: string) {
     // TODO: Implement delete company use case
   }

+ 77 - 33
node_app/src/presentation/controllers/driver.controller.ts

@@ -1,33 +1,77 @@
-import { Controller, Get, Post, Body, Param, Put, Delete } from '@nestjs/common';
-import { ApiTags } from '@nestjs/swagger';
-
-@ApiTags('drivers')
-@Controller('drivers')
-export class DriverController {
-  constructor() {}
-
-  @Post()
-  async create(@Body() createDriverDto: any) {
-    // TODO: Implement create driver use case
-  }
-
-  @Get()
-  async findAll() {
-    // TODO: Implement get all drivers use case
-  }
-
-  @Get(':id')
-  async findOne(@Param('id') id: string) {
-    // TODO: Implement get driver by id use case
-  }
-
-  @Put(':id')
-  async update(@Param('id') id: string, @Body() updateDriverDto: any) {
-    // TODO: Implement update driver use case
-  }
-
-  @Delete(':id')
-  async remove(@Param('id') id: string) {
-    // TODO: Implement delete driver use case
-  }
-}
+import {
+  Controller,
+  Get,
+  Post,
+  Body,
+  Param,
+  Put,
+  Delete,
+} from '@nestjs/common';
+import { ApiTags, ApiResponse, ApiOperation, ApiParam } from '@nestjs/swagger';
+import { CreateDriverDto } from '../../application/dto/create-driver.dto';
+import { DriverResponseDto } from '../../application/dto/responses/driver-response.dto';
+
+@ApiTags('drivers')
+@Controller('drivers')
+export class DriverController {
+  constructor() {}
+
+  @Post()
+  @ApiOperation({ summary: 'Créer un nouveau chauffeur' })
+  @ApiResponse({
+    status: 201,
+    description: 'Le chauffeur a été créé avec succès',
+    type: DriverResponseDto,
+  })
+  async create(@Body() createDriverDto: CreateDriverDto) {
+    // TODO: Implement create driver use case
+  }
+
+  @Get()
+  @ApiOperation({ summary: 'Récupérer tous les chauffeurs' })
+  @ApiResponse({
+    status: 200,
+    description: 'Liste de tous les chauffeurs',
+    type: [DriverResponseDto],
+  })
+  async findAll() {
+    // TODO: Implement get all drivers use case
+  }
+
+  @Get(':id')
+  @ApiOperation({ summary: 'Récupérer un chauffeur par son ID' })
+  @ApiParam({ name: 'id', description: 'ID du chauffeur' })
+  @ApiResponse({
+    status: 200,
+    description: 'Le chauffeur a été trouvé',
+    type: DriverResponseDto,
+  })
+  @ApiResponse({ status: 404, description: 'Chauffeur non trouvé' })
+  async findOne(@Param('id') id: string) {
+    // TODO: Implement get driver by id use case
+  }
+
+  @Put(':id')
+  @ApiOperation({ summary: 'Mettre à jour un chauffeur' })
+  @ApiParam({ name: 'id', description: 'ID du chauffeur' })
+  @ApiResponse({
+    status: 200,
+    description: 'Le chauffeur a été mis à jour',
+    type: DriverResponseDto,
+  })
+  async update(@Param('id') id: string, @Body() updateDriverDto: any) {
+    // TODO: Implement update driver use case
+  }
+
+  @Delete(':id')
+  @ApiOperation({ summary: 'Supprimer un chauffeur' })
+  @ApiParam({ name: 'id', description: 'ID du chauffeur' })
+  @ApiResponse({
+    status: 200,
+    description: 'Le chauffeur a été supprimé',
+    type: DriverResponseDto,
+  })
+  async remove(@Param('id') id: string) {
+    // TODO: Implement delete driver use case
+  }
+}

+ 77 - 41
node_app/src/presentation/controllers/vehicle.controller.ts

@@ -1,41 +1,77 @@
-import {
-  Controller,
-  Get,
-  Post,
-  Body,
-  Param,
-  Put,
-  Delete,
-} from '@nestjs/common';
-import { ApiTags } from '@nestjs/swagger';
-
-@ApiTags('Vehicules')
-@Controller('Vehicules')
-export class VehiculeController {
-  constructor() {}
-
-  @Post()
-  async create(@Body() createVehiculeDto: any) {
-    // TODO: Implement create Vehicule use case
-  }
-
-  @Get()
-  async findAll() {
-    // TODO: Implement get all Vehicules use case
-  }
-
-  @Get(':id')
-  async findOne(@Param('id') id: string) {
-    // TODO: Implement get Vehicule by id use case
-  }
-
-  @Put(':id')
-  async update(@Param('id') id: string, @Body() updateVehiculeDto: any) {
-    // TODO: Implement update Vehicule use case
-  }
-
-  @Delete(':id')
-  async remove(@Param('id') id: string) {
-    // TODO: Implement delete Vehicule use case
-  }
-}
+import {
+  Controller,
+  Get,
+  Post,
+  Body,
+  Param,
+  Put,
+  Delete,
+} from '@nestjs/common';
+import { ApiTags, ApiResponse, ApiOperation, ApiParam } from '@nestjs/swagger';
+import { CreateVehiculeDto } from '../../application/dto/create-vehicule.dto';
+import { VehiculeResponseDto } from '../../application/dto/responses/vehicule-response.dto';
+
+@ApiTags('Vehicules')
+@Controller('Vehicules')
+export class VehiculeController {
+  constructor() {}
+
+  @Post()
+  @ApiOperation({ summary: 'Créer un nouveau véhicule' })
+  @ApiResponse({
+    status: 201,
+    description: 'Le véhicule a été créé avec succès',
+    type: VehiculeResponseDto,
+  })
+  async create(@Body() createVehiculeDto: CreateVehiculeDto) {
+    // TODO: Implement create Vehicule use case
+  }
+
+  @Get()
+  @ApiOperation({ summary: 'Récupérer tous les véhicules' })
+  @ApiResponse({
+    status: 200,
+    description: 'Liste de tous les véhicules',
+    type: [VehiculeResponseDto],
+  })
+  async findAll() {
+    // TODO: Implement get all Vehicules use case
+  }
+
+  @Get(':id')
+  @ApiOperation({ summary: 'Récupérer un véhicule par son ID' })
+  @ApiParam({ name: 'id', description: 'ID du véhicule' })
+  @ApiResponse({
+    status: 200,
+    description: 'Le véhicule a été trouvé',
+    type: VehiculeResponseDto,
+  })
+  @ApiResponse({ status: 404, description: 'Véhicule non trouvé' })
+  async findOne(@Param('id') id: string) {
+    // TODO: Implement get Vehicule by id use case
+  }
+
+  @Put(':id')
+  @ApiOperation({ summary: 'Mettre à jour un véhicule' })
+  @ApiParam({ name: 'id', description: 'ID du véhicule' })
+  @ApiResponse({
+    status: 200,
+    description: 'Le véhicule a été mis à jour',
+    type: VehiculeResponseDto,
+  })
+  async update(@Param('id') id: string, @Body() updateVehiculeDto: any) {
+    // TODO: Implement update Vehicule use case
+  }
+
+  @Delete(':id')
+  @ApiOperation({ summary: 'Supprimer un véhicule' })
+  @ApiParam({ name: 'id', description: 'ID du véhicule' })
+  @ApiResponse({
+    status: 200,
+    description: 'Le véhicule a été supprimé',
+    type: VehiculeResponseDto,
+  })
+  async remove(@Param('id') id: string) {
+    // TODO: Implement delete Vehicule use case
+  }
+}