|
|
@@ -1,6 +1,6 @@
|
|
|
import { Trajet } from '@prisma/client';
|
|
|
import { IPrismaMapper } from './prisma-mapper.interface';
|
|
|
-import { Reservation } 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> {
|
|
|
@@ -8,6 +8,7 @@ export class ReservationMapper implements IPrismaMapper<any, Reservation> {
|
|
|
return new Reservation({
|
|
|
id: prismaReservation.id,
|
|
|
dateAt: prismaReservation.dateAt,
|
|
|
+ paymentMethod: prismaReservation.paymentMethod || PaymentMethod.CASH,
|
|
|
|
|
|
// On garde les IDs pour la compatibilité
|
|
|
userId: prismaReservation.userId,
|
|
|
@@ -96,6 +97,7 @@ export class ReservationMapper implements IPrismaMapper<any, Reservation> {
|
|
|
return {
|
|
|
id: reservation.id,
|
|
|
dateAt: reservation.dateAt,
|
|
|
+ paymentMethod: reservation.paymentMethod || PaymentMethod.CASH,
|
|
|
userId: reservation.userId ?? null,
|
|
|
placeId: reservation.placeId ?? null,
|
|
|
trajetId: reservation.trajetId ?? null,
|
|
|
@@ -105,4 +107,41 @@ export class ReservationMapper implements IPrismaMapper<any, Reservation> {
|
|
|
fromDtoToDomain(dto: unknown): Reservation {
|
|
|
return new Reservation(dto as Reservation);
|
|
|
}
|
|
|
+
|
|
|
+ toResponseDto(reservation: Reservation): any {
|
|
|
+ return {
|
|
|
+ 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,
|
|
|
+ };
|
|
|
+ }
|
|
|
}
|