Replace entire repo content with updated code from /root/shahikitchen-website/

This commit is contained in:
root
2026-06-30 12:19:55 +00:00
parent 50e3a34895
commit c8b7dc95e4
26 changed files with 1153 additions and 161 deletions
@@ -2,6 +2,7 @@ import type { DeliveryInquiryDetails, PickupInquiryDetails } from '@/domain/cart
import type { BookingDetails } from '@/domain/booking/entities';
import { isBookingComplete } from '@/domain/booking/validation';
import type { Language } from '@/domain/language/entities';
import { localizeOrderLineName } from '@/application/i18n/menu-localization';
import {
calculateOrderTotal,
formatOrderLinesForInquiry,
@@ -46,14 +47,21 @@ export function getSuggestedPickupTime(language: Language, from: Date = new Date
return suggested.toLocaleTimeString(timeLocale, { hour: '2-digit', minute: '2-digit' });
}
function localizeInquiryLines(lang: Language, items: OrderLine[]): string {
return formatOrderLinesForInquiry(
items.map((item) => ({ ...item, name: localizeOrderLineName(lang, item) })),
);
}
export function buildPickupInquiryMessage(
items: OrderLine[],
details: PickupInquiryDetails,
copy: CartInquiryCopy,
language: Language = 'en',
): string | null {
if (items.length === 0) return null;
const lines = formatOrderLinesForInquiry(items);
const lines = localizeInquiryLines(language, items);
const total = calculateOrderTotal(items);
return `${copy.pickupIntro}
@@ -67,10 +75,11 @@ export function buildDeliveryInquiryMessage(
items: OrderLine[],
details: DeliveryInquiryDetails,
copy: CartInquiryCopy,
language: Language = 'en',
): string | null {
if (items.length === 0) return null;
const lines = formatOrderLinesForInquiry(items);
const lines = localizeInquiryLines(language, items);
const total = calculateOrderTotal(items);
return `${copy.deliveryIntro}
@@ -83,6 +92,15 @@ ${copy.messagePreferredTime}: ${details.preferredTime.trim()}
${copy.deliverySwishNote}`;
}
const PACKAGE_NAME_PLACEHOLDER = '{{package}}';
export function buildCateringPackagePricingMessage(
packageName: string,
template: string,
): string {
return template.split(PACKAGE_NAME_PLACEHOLDER).join(packageName);
}
export function buildBookingWhatsAppMessage(
booking: BookingDetails,
preOrder: OrderLine[],