import type { LocalDelivery } from './db'; export function toDateKey(date: Date): string { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; } export function dateFromKey(key: string): Date { const [year, month, day] = key.split('-').map(Number); return new Date(year!, month! - 1, day!, 12); } export function deliveryDateKey(delivery: Pick): string { return delivery.scheduledDate ?? delivery.createdAt.slice(0, 10); } export function addDays(date: Date, days: number): Date { const next = new Date(date); next.setDate(next.getDate() + days); return next; } export function weekStart(date: Date): Date { const start = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 12); start.setDate(start.getDate() - start.getDay()); return start; } export function weekDates(anchor: Date): Date[] { const start = weekStart(anchor); return Array.from({ length: 7 }, (_, index) => addDays(start, index)); } export function activeDeliveries(deliveries: LocalDelivery[]): LocalDelivery[] { return deliveries.filter(delivery => !delivery.deletedAt && delivery.status !== 'cancelled'); } export function deliveriesForDate(deliveries: LocalDelivery[], key: string): LocalDelivery[] { return deliveries.filter(delivery => !delivery.deletedAt && deliveryDateKey(delivery) === key); } export function valueOf(deliveries: LocalDelivery[]): number { return activeDeliveries(deliveries).reduce((sum, delivery) => sum + delivery.totalPriceAgorot, 0); }