|
|
@@ -1,6 +1,9 @@
|
|
|
import { Trajet } from '@prisma/client';
|
|
|
import { IPrismaMapper } from './prisma-mapper.interface';
|
|
|
-import { Reservation, PaymentMethod } from 'src/domain/entities/reservation.entity';
|
|
|
+import {
|
|
|
+ Reservation,
|
|
|
+ PaymentMethod,
|
|
|
+} from 'src/domain/entities/reservation.entity';
|
|
|
import { User, UserRole } from 'src/domain/entities/user.entity';
|
|
|
|
|
|
export class ReservationMapper implements IPrismaMapper<any, Reservation> {
|
|
|
@@ -113,35 +116,112 @@ export class ReservationMapper implements IPrismaMapper<any, Reservation> {
|
|
|
id: reservation.id,
|
|
|
dateAt: reservation.dateAt,
|
|
|
paymentMethod: reservation.paymentMethod,
|
|
|
- place: reservation.place ? {
|
|
|
- id: reservation.place.id,
|
|
|
- number: reservation.place.number,
|
|
|
- isAvailable: reservation.place.isAvailable,
|
|
|
- vehiculeId: reservation.place.vehiculeId,
|
|
|
- occupiedAt: reservation.place.occupiedAt,
|
|
|
- } : undefined,
|
|
|
- user: reservation.user ? {
|
|
|
- id: reservation.user.id,
|
|
|
- name: reservation.user.name,
|
|
|
- otherName: reservation.user.otherName,
|
|
|
- email: reservation.user.email,
|
|
|
- address: reservation.user.address,
|
|
|
- telephone: reservation.user.telephone,
|
|
|
- role: reservation.user.role,
|
|
|
- } : undefined,
|
|
|
- trajet: reservation.trajet ? {
|
|
|
- id: reservation.trajet.id,
|
|
|
- departAt: reservation.trajet.departAt,
|
|
|
- arriveAt: reservation.trajet.arriveAt,
|
|
|
- departStationId: reservation.trajet.departStationId,
|
|
|
- arriveStationId: reservation.trajet.arriveStationId,
|
|
|
- vehiculeId: reservation.trajet.vehiculeId,
|
|
|
- companyId: reservation.trajet.companyId,
|
|
|
- employeeId: reservation.trajet.employeeId,
|
|
|
- pricePerSeat: reservation.trajet.pricePerSeat,
|
|
|
- registrationClosed: reservation.trajet.registrationClosed,
|
|
|
- availableSeats: reservation.trajet.availableSeats,
|
|
|
- } : undefined,
|
|
|
+ place: reservation.place
|
|
|
+ ? {
|
|
|
+ id: reservation.place.id,
|
|
|
+ number: reservation.place.number,
|
|
|
+ isAvailable: reservation.place.isAvailable,
|
|
|
+ vehiculeId: reservation.place.vehiculeId,
|
|
|
+ occupiedAt: reservation.place.occupiedAt,
|
|
|
+ // Inclure les informations du véhicule si disponibles
|
|
|
+ vehicule: reservation.place.vehicule
|
|
|
+ ? {
|
|
|
+ id: reservation.place.vehicule.id,
|
|
|
+ number_places: reservation.place.vehicule.number_places,
|
|
|
+ color: reservation.place.vehicule.color,
|
|
|
+ type: reservation.place.vehicule.type,
|
|
|
+ immatriculation: reservation.place.vehicule.immatriculation,
|
|
|
+ model: reservation.place.vehicule.model,
|
|
|
+ companyId: reservation.place.vehicule.companyId,
|
|
|
+ driverId: reservation.place.vehicule.driverId,
|
|
|
+ status: reservation.place.vehicule.status,
|
|
|
+ // Inclure les informations de la compagnie si disponibles
|
|
|
+ company: reservation.place.vehicule.company
|
|
|
+ ? {
|
|
|
+ id: reservation.place.vehicule.company.id,
|
|
|
+ name: reservation.place.vehicule.company.name,
|
|
|
+ address: reservation.place.vehicule.company.address,
|
|
|
+ }
|
|
|
+ : undefined,
|
|
|
+ }
|
|
|
+ : undefined,
|
|
|
+ }
|
|
|
+ : undefined,
|
|
|
+ user: reservation.user
|
|
|
+ ? {
|
|
|
+ id: reservation.user.id,
|
|
|
+ name: reservation.user.name,
|
|
|
+ otherName: reservation.user.otherName,
|
|
|
+ email: reservation.user.email,
|
|
|
+ address: reservation.user.address,
|
|
|
+ telephone: reservation.user.telephone,
|
|
|
+ role: reservation.user.role,
|
|
|
+ }
|
|
|
+ : undefined,
|
|
|
+ trajet: reservation.trajet
|
|
|
+ ? {
|
|
|
+ id: reservation.trajet.id,
|
|
|
+ departAt: reservation.trajet.departAt,
|
|
|
+ arriveAt: reservation.trajet.arriveAt,
|
|
|
+ departStationId: reservation.trajet.departStationId,
|
|
|
+ arriveStationId: reservation.trajet.arriveStationId,
|
|
|
+ vehiculeId: reservation.trajet.vehiculeId,
|
|
|
+ companyId: reservation.trajet.companyId,
|
|
|
+ employeeId: reservation.trajet.employeeId,
|
|
|
+ pricePerSeat: reservation.trajet.pricePerSeat,
|
|
|
+ registrationClosed: reservation.trajet.registrationClosed,
|
|
|
+ availableSeats: reservation.trajet.availableSeats,
|
|
|
+ // Inclure les informations du véhicule dans le trajet si disponibles
|
|
|
+ vehicule: reservation.trajet.vehicule
|
|
|
+ ? {
|
|
|
+ id: reservation.trajet.vehicule.id,
|
|
|
+ number_places: reservation.trajet.vehicule.number_places,
|
|
|
+ color: reservation.trajet.vehicule.color,
|
|
|
+ type: reservation.trajet.vehicule.type,
|
|
|
+ immatriculation: reservation.trajet.vehicule.immatriculation,
|
|
|
+ model: reservation.trajet.vehicule.model,
|
|
|
+ companyId: reservation.trajet.vehicule.companyId,
|
|
|
+ driverId: reservation.trajet.vehicule.driverId,
|
|
|
+ status: reservation.trajet.vehicule.status,
|
|
|
+ // Inclure les informations de la compagnie si disponibles
|
|
|
+ company: reservation.trajet.vehicule.company
|
|
|
+ ? {
|
|
|
+ id: reservation.trajet.vehicule.company.id,
|
|
|
+ name: reservation.trajet.vehicule.company.name,
|
|
|
+ address: reservation.trajet.vehicule.company.address,
|
|
|
+ }
|
|
|
+ : undefined,
|
|
|
+ }
|
|
|
+ : undefined,
|
|
|
+ // Inclure les informations des stations si disponibles
|
|
|
+ departStation: reservation.trajet.departStation
|
|
|
+ ? {
|
|
|
+ id: reservation.trajet.departStation.id,
|
|
|
+ name: reservation.trajet.departStation.name,
|
|
|
+ address: reservation.trajet.departStation.address,
|
|
|
+ lat: reservation.trajet.departStation.lat,
|
|
|
+ long: reservation.trajet.departStation.long,
|
|
|
+ description: reservation.trajet.departStation.description,
|
|
|
+ city: reservation.trajet.departStation.city,
|
|
|
+ country: reservation.trajet.departStation.country,
|
|
|
+ municipality: reservation.trajet.departStation.municipality,
|
|
|
+ }
|
|
|
+ : undefined,
|
|
|
+ arriveStation: reservation.trajet.arriveStation
|
|
|
+ ? {
|
|
|
+ id: reservation.trajet.arriveStation.id,
|
|
|
+ name: reservation.trajet.arriveStation.name,
|
|
|
+ address: reservation.trajet.arriveStation.address,
|
|
|
+ lat: reservation.trajet.arriveStation.lat,
|
|
|
+ long: reservation.trajet.arriveStation.long,
|
|
|
+ description: reservation.trajet.arriveStation.description,
|
|
|
+ city: reservation.trajet.arriveStation.city,
|
|
|
+ country: reservation.trajet.arriveStation.country,
|
|
|
+ municipality: reservation.trajet.arriveStation.municipality,
|
|
|
+ }
|
|
|
+ : undefined,
|
|
|
+ }
|
|
|
+ : undefined,
|
|
|
};
|
|
|
}
|
|
|
}
|