add auth and payment api
This commit is contained in:
59
src/modules/order/order.mapper.ts
Normal file
59
src/modules/order/order.mapper.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
import type { Order } from "@/database/entities/order.entity";
|
||||
import { RoomType } from "@/database/enums/room-type.enum";
|
||||
import type { OrderResponse } from "@/modules/order/order.types";
|
||||
import type { PackageMapper } from "@/modules/package/package.mapper";
|
||||
import type { PartnerMapper } from "@/modules/partner/partner.mapper";
|
||||
|
||||
export class OrderMapper {
|
||||
public constructor(
|
||||
private readonly packageMapper: PackageMapper,
|
||||
private readonly partnerMapper: PartnerMapper,
|
||||
) {}
|
||||
|
||||
public mapEntityToResponse(order: Order): OrderResponse {
|
||||
const details: OrderResponse["details"] = [];
|
||||
let totalPrice = 0;
|
||||
for (const detail of order.details) {
|
||||
let price = 0;
|
||||
switch (detail.roomType) {
|
||||
case RoomType.double:
|
||||
price = order.package.doublePrice;
|
||||
break;
|
||||
case RoomType.triple:
|
||||
price = order.package.triplePrice;
|
||||
break;
|
||||
case RoomType.quad:
|
||||
price = order.package.quadPrice;
|
||||
break;
|
||||
case RoomType.infant:
|
||||
price = order.package.infantPrice ?? 0;
|
||||
break;
|
||||
}
|
||||
|
||||
details.push({
|
||||
price,
|
||||
room_type: detail.roomType,
|
||||
});
|
||||
|
||||
totalPrice += price;
|
||||
}
|
||||
|
||||
return {
|
||||
id: order.id,
|
||||
package: this.packageMapper.mapDetailEntityToResponse(order.package),
|
||||
name: order.name,
|
||||
whatsapp: order.whatsapp,
|
||||
details,
|
||||
total_price: totalPrice,
|
||||
is_verified: order.verification === null,
|
||||
partner: order.partner
|
||||
? this.partnerMapper.mapEntityToResponse(order.partner)
|
||||
: null,
|
||||
expired_at: order.expiredAt,
|
||||
purchased_at: order.purchasedAt,
|
||||
finished_at: order.finishedAt,
|
||||
created_at: order.createdAt,
|
||||
updated_at: order.updatedAt,
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user