diff --git a/src/app/[name]/(Dialogs)/order/checkout/enum/Enum.ts b/src/app/[name]/(Dialogs)/order/checkout/enum/Enum.ts index f5c9624..1a37325 100644 --- a/src/app/[name]/(Dialogs)/order/checkout/enum/Enum.ts +++ b/src/app/[name]/(Dialogs)/order/checkout/enum/Enum.ts @@ -1,14 +1,10 @@ export const enum OrderStatus { - NEW = "new", PENDING_PAYMENT = "pendingPayment", PAID = "paid", - CONFIRMED = "confirmed", PREPARING = "preparing", - READY = "ready", + DELIVERED_TO_RECEPIENT = "deliveredToRecepient", SHIPPED = "shipped", COMPLETED = "completed", CANCELED = "canceled", - FAILED = "failed", - REFUNDED = "refunded", } diff --git a/src/app/[name]/(Main)/order/history/enum/Enum.ts b/src/app/[name]/(Main)/order/history/enum/Enum.ts deleted file mode 100644 index 175b881..0000000 --- a/src/app/[name]/(Main)/order/history/enum/Enum.ts +++ /dev/null @@ -1,10 +0,0 @@ -export const enum OrderStatus { - PENDING_PAYMENT = "pendingPayment", - PAID = "paid", - PREPARING = "preparing", - DELIVERED_TO_WAITER = "deliveredToWaiter", - DELIVERED_TO_RECEPTIONIST = "deliveredToReceptionist", - SHIPPED = "shipped", - COMPLETED = "completed", - CANCELED = "canceled", -} diff --git a/src/app/[name]/(Main)/order/history/page.tsx b/src/app/[name]/(Main)/order/history/page.tsx index a4f9cc8..8968dad 100644 --- a/src/app/[name]/(Main)/order/history/page.tsx +++ b/src/app/[name]/(Main)/order/history/page.tsx @@ -12,7 +12,7 @@ import React, { useMemo, useState } from 'react' import { useTranslation } from 'react-i18next'; import { useGetOrders } from './hooks/useHistoryData'; import { HistoryOrderItem } from './types/Types'; -import { OrderStatus } from './enum/Enum'; +import { OrderStatus } from '@/app/[name]/(Dialogs)/order/checkout/enum/Enum'; const fallbackImage = '/assets/images/food-preview.png'; @@ -45,11 +45,10 @@ const getStatusColor = (status: string): string => { 'paid': 'text-green-600 dark:text-green-400', 'preparing': 'text-blue-600 dark:text-blue-400', 'deliveredToWaiter': 'text-purple-600 dark:text-purple-400', - 'deliveredToReceptionist': 'text-indigo-600 dark:text-indigo-400', + 'deliveredToRecepient': 'text-indigo-600 dark:text-indigo-400', 'shipped': 'text-cyan-600 dark:text-cyan-400', 'completed': 'text-green-600 dark:text-green-400', 'canceled': 'text-red-600 dark:text-red-400', - 'cancelled': 'text-red-600 dark:text-red-400', }; return statusMap[status] || 'text-gray-600 dark:text-gray-400'; }; @@ -105,8 +104,8 @@ function OrdersIndex() {
{items.map((item) => { - const imageUrl = getFoodImage(item.food.images); - const foodName = item.food.title || 'بدون نام'; + const imageUrl = getFoodImage(item.variant?.product.images); + const foodName = item.variant?.product.title || 'بدون نام'; const itemTotalPrice = (item.totalPrice || item.unitPrice * item.quantity).toLocaleString('fa-IR'); return (
@@ -190,8 +189,8 @@ function OrdersIndex() {
{items.map((item) => { - const imageUrl = getFoodImage(item.food.images); - const foodName = item.food.title || 'بدون نام'; + const imageUrl = getFoodImage(item.variant?.product.images); + const foodName = item.variant?.product.title || 'بدون نام'; const itemTotalPrice = (item.totalPrice || item.unitPrice * item.quantity).toLocaleString('fa-IR'); return (
@@ -219,7 +218,7 @@ function OrdersIndex() {
{order.status === OrderStatus.COMPLETED && ( - + )} diff --git a/src/app/[name]/(Main)/order/history/service/Service.ts b/src/app/[name]/(Main)/order/history/service/Service.ts index d4e8cac..f8b2bc9 100644 --- a/src/app/[name]/(Main)/order/history/service/Service.ts +++ b/src/app/[name]/(Main)/order/history/service/Service.ts @@ -1,9 +1,9 @@ import { api } from "@/config/axios"; import { OrdersResponse } from "../types/Types"; -import { OrderStatus } from "../enum/Enum"; +import { OrderStatus } from "@/app/[name]/(Dialogs)/order/checkout/enum/Enum"; export const getOrders = async ( - status: "old" | "current" + status: "old" | "current", ): Promise => { const statuses = status === "old" @@ -12,10 +12,9 @@ export const getOrders = async ( OrderStatus.PENDING_PAYMENT, OrderStatus.PAID, OrderStatus.PREPARING, - OrderStatus.DELIVERED_TO_WAITER, - OrderStatus.DELIVERED_TO_RECEPTIONIST, OrderStatus.SHIPPED, OrderStatus.COMPLETED, + OrderStatus.DELIVERED_TO_RECEPIENT, ]; const { data } = await api.get(`/public/orders`, { diff --git a/src/app/[name]/(Main)/order/history/types/Types.ts b/src/app/[name]/(Main)/order/history/types/Types.ts index 7841eb2..fc41b93 100644 --- a/src/app/[name]/(Main)/order/history/types/Types.ts +++ b/src/app/[name]/(Main)/order/history/types/Types.ts @@ -1,4 +1,4 @@ -import { BaseResponse } from "@/app/[name]/(Main)/types/Types"; +import { BaseResponse, Product } from "@/app/[name]/(Main)/types/Types"; import { ServiceArea } from "@/app/[name]/(Dialogs)/order/checkout/types/Types"; export interface HistoryOrderUser { @@ -8,13 +8,13 @@ export interface HistoryOrderUser { deletedAt: string | null; firstName: string; lastName: string | null; - phone: string; birthDate: string | null; marriageDate: string | null; referrer: string | null; isActive: boolean; gender: boolean; avatarUrl: string | null; + phone: string; } export interface HistoryOrderRestaurantScore { @@ -28,7 +28,7 @@ export interface HistoryOrderRestaurantScore { marriageDateScore: string; } -export interface HistoryOrderRestaurant { +export interface HistoryOrderShop { id: string; createdAt: string; updatedAt: string; @@ -55,7 +55,6 @@ export interface HistoryOrderRestaurant { vat: number; domain: string; score: HistoryOrderRestaurantScore; - plan: string; subscriptionId: string; subscriptionEndDate: string; subscriptionStartDate: string; @@ -66,8 +65,8 @@ export interface HistoryOrderDeliveryMethod { createdAt: string; updatedAt: string; deletedAt: string | null; - method: "dineIn" | "pickup" | "deliveryCar" | "deliveryCourier"; - restaurant: string; + method: string; + shop: string; deliveryFee: number; deliveryFeeType: string; perKilometerFee: number | null; @@ -89,30 +88,13 @@ export interface HistoryOrderUserAddress { postalCode: string; } -export interface HistoryOrderAddress { - id: string; - createdAt: string; - updatedAt: string; - deletedAt: string | null; - user: string; - title: string; - address: string; - city: string; - province: string; - postalCode: string; - latitude: number; - longitude: number; - phone: string; - isDefault: boolean; -} - export interface HistoryOrderPaymentMethod { id: string; createdAt: string; updatedAt: string; deletedAt: string | null; - restaurant: string; - method: "CardOnDelivery" | "Cash" | "Online" | "Wallet"; + shop: string; + method: string; gateway: string | null; description: string; enabled: boolean; @@ -120,28 +102,14 @@ export interface HistoryOrderPaymentMethod { merchantId: string | null; } -export interface HistoryOrderFood { +export interface HistoryOrderVariant { id: string; createdAt: string; updatedAt: string; deletedAt: string | null; - restaurant: string; - category: string; - title: string; - desc: string | null; - content: string | null; + value: string; price: number; - order: number | null; - prepareTime: number | null; - weekDays: number[]; - mealTypes: ("breakfast" | "lunch" | "dinner" | "snack")[]; - isActive: boolean; - images: string[] | null; - inPlaceServe: boolean; - pickupServe: boolean; - score: number; - discount: number; - isSpecialOffer: boolean; + product: Product; } export interface HistoryOrderItem { @@ -150,7 +118,7 @@ export interface HistoryOrderItem { updatedAt: string; deletedAt: string | null; order: string; - food: HistoryOrderFood; + variant: HistoryOrderVariant; quantity: number; unitPrice: number; discount: number; @@ -168,10 +136,9 @@ export interface HistoryOrder { updatedAt: string; deletedAt: string | null; user: HistoryOrderUser; - restaurant: HistoryOrderRestaurant; + shop: HistoryOrderShop; deliveryMethod: HistoryOrderDeliveryMethod; userAddress: HistoryOrderUserAddress | null; - carAddress: HistoryOrderUserAddress | null; paymentMethod: HistoryOrderPaymentMethod; orderNumber: number; couponDiscount: number; @@ -184,7 +151,6 @@ export interface HistoryOrder { total: number; totalItems: number; description: string; - tableNumber: string | null; status: string; history: HistoryOrderHistoryItem[]; items: HistoryOrderItem[]; @@ -197,12 +163,6 @@ export interface OrdersResponseMeta { totalPages: number; } -export interface OrdersResponseData { - data: HistoryOrder[]; - meta: OrdersResponseMeta; -} - export type OrdersResponse = BaseResponse & { - meta?: OrdersResponseMeta; + meta: OrdersResponseMeta; }; - diff --git a/src/components/menu/SideMenu.tsx b/src/components/menu/SideMenu.tsx index bb92831..a27b70a 100644 --- a/src/components/menu/SideMenu.tsx +++ b/src/components/menu/SideMenu.tsx @@ -32,10 +32,10 @@ type MenuItemType = { const menuItems: Array> = [ [ { href: 'notifications', title: 'Notifications', icon: Notification }, - { href: 'transactions/discount/club', title: 'CustomerClub', icon: Cup, premiumOnly: true }, - { href: 'transactions/discount', title: 'Discounts', icon: TicketDiscount, premiumOnly: true }, - { href: 'order/history', title: 'Orders', icon: CalendarSearch, premiumOnly: true }, - { href: 'transactions', title: 'Transactions', icon: Receipt1, premiumOnly: true }, + { href: 'transactions/discount/club', title: 'CustomerClub', icon: Cup, premiumOnly: false }, + { href: 'transactions/discount', title: 'Discounts', icon: TicketDiscount, premiumOnly: false }, + { href: 'order/history', title: 'Orders', icon: CalendarSearch, premiumOnly: false }, + { href: 'transactions', title: 'Transactions', icon: Receipt1, premiumOnly: false }, { href: 'game', title: 'Games', icon: Game }, { href: '?share', title: 'ShareWithFriends', icon: Like1 }, { href: 'report', title: 'ReportProblem', icon: NoteBoardIcon },