import { MenuItem, MenuItemCategory } from '@backend/domain'
import { MenuItemCategoryResponse, MenuItemResponse } from '../types'

export class MenuItemMapper {
	static entityToResponse(menuItem: MenuItem): MenuItemResponse {
		return {
			id: menuItem.id,
			name: menuItem.name,
			description: menuItem.description,
			price: menuItem.price,
			currency: menuItem.currency,
			amount: menuItem.amount,
			unit: menuItem.unit,
			allergens: menuItem.allergens,
			coverUrl: menuItem.coverUrl,
			isArchived: menuItem.isArchived,
			categories: menuItem.getRootCategories().map((category) => MenuItemCategoryMapper.entityToResponse(category)),
			subcategories: menuItem.getSubcategories().map((category) => MenuItemCategoryMapper.entityToResponse(category)),
		}
	}
}

export class MenuItemCategoryMapper {
	static entityToResponse(menuItemCategory: MenuItemCategory): MenuItemCategoryResponse {
		return {
			categoryId: menuItemCategory.category.id,
			sortOrder: menuItemCategory.sortOrder,
			isVisible: menuItemCategory.isVisible,
		}
	}
}
