69 lines
2.9 KiB
TypeScript
69 lines
2.9 KiB
TypeScript
import type { CateringDish, CateringDishCategory } from './entities';
|
|
|
|
/**
|
|
* Master catalog of dishes available for catering packages.
|
|
* IDs match the catering brief exactly.
|
|
*/
|
|
export const CATERING_DISH_CATALOG: CateringDish[] = [
|
|
// Lamb
|
|
{ id: 'lamb-vindaloo', name: 'Lamb Vindaloo', category: 'lamb', image: 'lamm-vindaloo.jpg' },
|
|
{ id: 'lamb-karahi', name: 'Lamb Karahi', category: 'lamb', image: 'lamm-karahi.jpg' },
|
|
{ id: 'lamb-korma', name: 'Lamb Korma', category: 'lamb', image: 'lamm-rogan-josh.jpg' },
|
|
{ id: 'lamb-achari', name: 'Lamb Achari', category: 'lamb', image: 'lamm-vindaloo.jpg' },
|
|
|
|
// Chicken
|
|
{ id: 'chicken-tikka-masala', name: 'Chicken Tikka Masala', category: 'chicken', image: 'chicken-tikka.jpg' },
|
|
{ id: 'butter-chicken', name: 'Butter Chicken', category: 'chicken', image: 'butter-chicken.jpg' },
|
|
{ id: 'chicken-korma', name: 'Chicken Korma', category: 'chicken', image: 'butter-chicken.jpg' },
|
|
{ id: 'chicken-karahi', name: 'Chicken Karahi', category: 'chicken', image: 'chicken-karahi.jpg' },
|
|
{ id: 'chicken-achari', name: 'Chicken Achari', category: 'chicken', image: 'chicken-karahi.jpg' },
|
|
{ id: 'chicken-biryani', name: 'Chicken Biryani', category: 'chicken', image: 'chicken-biryani.jpg' },
|
|
|
|
// Beef
|
|
{ id: 'shami-kebab', name: 'Shami Kebab', category: 'beef', image: 'shami-sandwich.jpg' },
|
|
{ id: 'seekh-kebab', name: 'Seekh Kebab', category: 'beef', image: 'kebab-roll.jpg' },
|
|
{ id: 'beef-karahi', name: 'Beef Karahi', category: 'beef', image: 'bong-nihari.jpg' },
|
|
|
|
// Vegetarian
|
|
{ id: 'dal', name: 'Dal', category: 'vegetarian', image: 'daal-makhani.jpg' },
|
|
{ id: 'palak-paneer', name: 'Palak Paneer', category: 'vegetarian', image: 'palak-paneer.jpg' },
|
|
{ id: 'shahi-paneer', name: 'Shahi Paneer', category: 'vegetarian', image: 'shahi-paneer.jpg' },
|
|
{ id: 'sabzi', name: 'Sabzi', category: 'vegetarian', image: 'lahore-chana.jpg' },
|
|
|
|
// Sides
|
|
{ id: 'plain-rice', name: 'Plain Rice', category: 'sides', image: 'chicken-biryani.jpg' },
|
|
{ id: 'naan', name: 'Naan', category: 'sides', image: 'keema-naan.jpg' },
|
|
{ id: 'salad', name: 'Salad', category: 'sides', image: 'chana-chaat.jpg' },
|
|
{ id: 'raita', name: 'Raita', category: 'sides', image: 'mango-lassi.jpg' },
|
|
];
|
|
|
|
export const CATERING_CATEGORY_ORDER: CateringDishCategory[] = [
|
|
'lamb',
|
|
'chicken',
|
|
'beef',
|
|
'vegetarian',
|
|
'sides',
|
|
];
|
|
|
|
export function getCateringDishById(id: string): CateringDish | undefined {
|
|
return CATERING_DISH_CATALOG.find((d) => d.id === id);
|
|
}
|
|
|
|
export function groupDishesByCategory(
|
|
dishIds: string[]
|
|
): Record<CateringDishCategory, CateringDish[]> {
|
|
const grouped: Record<CateringDishCategory, CateringDish[]> = {
|
|
lamb: [],
|
|
chicken: [],
|
|
beef: [],
|
|
vegetarian: [],
|
|
sides: [],
|
|
};
|
|
|
|
for (const id of dishIds) {
|
|
const dish = getCateringDishById(id);
|
|
if (dish) grouped[dish.category].push(dish);
|
|
}
|
|
|
|
return grouped;
|
|
} |