export const CUSTOMER_ORDER_STATUSES = [
  "received",
  "confirmed",
  "on_the_way",
  "in_progress",
  "completed",
  "cancelled",
] as const;

export type CustomerOrderStatus = (typeof CUSTOMER_ORDER_STATUSES)[number];

const NEXT_STATUS: Record<CustomerOrderStatus, readonly CustomerOrderStatus[]> = {
  received: ["confirmed", "cancelled"],
  confirmed: ["on_the_way", "cancelled"],
  on_the_way: ["in_progress", "cancelled"],
  in_progress: ["completed", "cancelled"],
  completed: [],
  cancelled: [],
};

export function canMoveCustomerOrderStatus(from: CustomerOrderStatus, to: CustomerOrderStatus) {
  return NEXT_STATUS[from].includes(to);
}

export function isCustomerOrderStatus(value: string): value is CustomerOrderStatus {
  return CUSTOMER_ORDER_STATUSES.includes(value as CustomerOrderStatus);
}
