import { Order } from '@backend/domain'
import { map } from 'es-toolkit/compat'
import { OrderResponse } from '../types'

export class OrderMapper {
	static entityToResponse(order: Order): OrderResponse {
		return {
			id: order.id,
			currencyCode: order.currencyCode,
			outstandingAmount: order.outstandingAmount,
			paidAmount: order.paidAmount,
			baseAmount: order.baseAmount,
			taxAmount: order.taxAmount,
			taxPercentage: order.taxPercentage,
			totalAmount: order.totalAmount,
			state: order.state,
			createdAt: order.createdAt,
			tableIds: map(order.tables, 'id'),
			reservationId: order.reservation?.id,
			items:
				order.items?.map((item) => ({
					id: item.id,
					menuItemId: item.menuItem.id,
					name: item.name,
					unitPrice: item.unitPrice,
					paid: item.paid,
					paidQuantity: item.paidQuantity,
					quantity: item.quantity,
					quantityUnit: item.quantityUnit,
					state: item.state,
					course: item.course,
				})) ?? [],
		}
	}
}
