From 4ae1957a88a644d42595563ea0dc695214f95965 Mon Sep 17 00:00:00 2001 From: user Date: Mon, 20 Oct 2025 22:39:00 +0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=84=20cleanup:=20more=20order=20logic?= =?UTF-8?q?=20cleanup=20on=20the=20admin=20side=20mostly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domains/order/view/order-details.svelte | 77 ++++++- .../domains/order/view/order-main-info.svelte | 70 +++++-- .../domains/order/view/order-misc-info.svelte | 189 +++++++++--------- .../lib/domains/order/view/order.vm.svelte.ts | 27 +-- .../order/view/orders-table-full.svelte | 65 +++--- .../domains/order/view/orders-table.svelte | 90 +++++++-- .../src/lib/domains/paymentinfo/repository.ts | 6 +- .../src/lib/domains/ckflow/data/repository.ts | 4 +- .../src/lib/domains/ckflow/domain/router.ts | 8 +- .../src/lib/domains/ckflow/domain/usecases.ts | 4 +- .../domains/ckflow/view/ckflow.vm.svelte.ts | 4 +- .../domains/paymentinfo/data/repository.ts | 14 +- .../domains/paymentinfo/domain/usecases.ts | 4 +- .../checkout/flight-checkout.vm.svelte.ts | 4 +- .../logic/domains/ckflow/data/entities.ts | 8 +- packages/logic/domains/order/data/entities.ts | 8 +- .../domains/passengerinfo/data/entities.ts | 6 +- .../domains/paymentinfo/data/entities.ts | 8 +- 18 files changed, 375 insertions(+), 221 deletions(-) diff --git a/apps/admin/src/lib/domains/order/view/order-details.svelte b/apps/admin/src/lib/domains/order/view/order-details.svelte index bd3c5be..34898b0 100644 --- a/apps/admin/src/lib/domains/order/view/order-details.svelte +++ b/apps/admin/src/lib/domains/order/view/order-details.svelte @@ -1,5 +1,78 @@ -show the order details - todo +{#if order} +
+ +
+
+

Order #{order.id}

+

+ Created on {new Date(order.createdAt).toLocaleDateString( + "en-US", + { + year: "numeric", + month: "long", + day: "numeric", + }, + )} +

+
+ + {formatStatus(order.status)} + +
+ + + + +
+ +
+ +
+ + +
+ +
+
+
+{:else} +
+

Order not found

+
+{/if} diff --git a/apps/admin/src/lib/domains/order/view/order-main-info.svelte b/apps/admin/src/lib/domains/order/view/order-main-info.svelte index 6946c60..d571fce 100644 --- a/apps/admin/src/lib/domains/order/view/order-main-info.svelte +++ b/apps/admin/src/lib/domains/order/view/order-main-info.svelte @@ -2,11 +2,11 @@ import Icon from "$lib/components/atoms/icon.svelte"; import Title from "$lib/components/atoms/title.svelte"; import { Badge } from "$lib/components/ui/badge"; + import CustomerDetailsCard from "$lib/domains/customerinfo/view/customer-details-card.svelte"; import type { FullOrderModel } from "$lib/domains/order/data/entities"; - import TicketLegsOverview from "$lib/domains/ticket/view/ticket/ticket-legs-overview.svelte"; + import ProductIcon from "~icons/solar/box-broken"; import CreditCardIcon from "~icons/solar/card-broken"; import EmailIcon from "~icons/solar/letter-broken"; - import TicketIcon from "~icons/solar/ticket-broken"; let { order }: { order: FullOrderModel } = $props(); @@ -17,38 +17,59 @@
- {#if order.emailAccountId && order.emailAccount} + {#if order.emailAccountId}
Account Information
-

{order.emailAccount?.email}

+

Email Account ID: #{order.emailAccountId}

{/if} - +
- - Flight Details + + Product Details
-
- - {order.flightTicketInfo.flightType} - - - {order.flightTicketInfo.cabinClass} - -
+ {#if order.product.discountPrice > 0 && order.product.discountPrice < order.product.price} + Discounted + {/if}
- +
+
+ Product Name +

{order.product.title}

+
+ +
+ Description +

{order.product.description}

+
+ +
+
+ Regular Price +

${order.product.price.toFixed(2)}

+
+ {#if order.product.discountPrice > 0} +
+ Discount Price +

+ ${order.product.discountPrice.toFixed(2)} +

+
+ {/if} +
+
+
@@ -58,6 +79,11 @@
Base Price + ${order.basePrice.toFixed(2)} +
+ +
+ Display Price ${order.displayPrice.toFixed(2)}
@@ -71,9 +97,19 @@ {/if}
- Total Price + Order Price ${order.orderPrice.toFixed(2)}
+ +
+ Fulfilled + ${order.fullfilledPrice.toFixed(2)} +
+ + {#if order.customerInfo} + + + {/if}
diff --git a/apps/admin/src/lib/domains/order/view/order-misc-info.svelte b/apps/admin/src/lib/domains/order/view/order-misc-info.svelte index 4e1b099..87fb671 100644 --- a/apps/admin/src/lib/domains/order/view/order-misc-info.svelte +++ b/apps/admin/src/lib/domains/order/view/order-misc-info.svelte @@ -1,118 +1,115 @@
- +
- - Passengers + + Order Status
- {#each order.passengerInfos as passenger, index} -
-
- - Passenger {index + 1} ({capitalize( - passenger.passengerType, - )}) - -
+
+ Current Status + + {formatStatus(order.status)} + +
- -
-
-
- Name -

- {passenger.passengerPii.firstName} - {passenger.passengerPii.middleName} - {passenger.passengerPii.lastName} -

-
-
- Nationality -

- {capitalize(passenger.passengerPii.nationality)} -

-
-
- Date of Birth -

- {passenger.passengerPii.dob} -

-
-
-
- - -
- {#if passenger.bagSelection.personalBags > 0} -
- - {passenger.bagSelection.personalBags}x Personal - Item -
- {/if} - {#if passenger.bagSelection.handBags > 0} -
- - {passenger.bagSelection.handBags}x Cabin Bag -
- {/if} - {#if passenger.bagSelection.checkedBags > 0} -
- - {passenger.bagSelection.checkedBags}x Checked Bag -
- {/if} -
+
+
+ Order ID + #{order.id}
- - {#if index < order.passengerInfos.length - 1} -
- {/if} - {/each} +
- {#if order.flightTicketInfo.refOIds} - {#each order.flightTicketInfo.refOIds as refOId} - - - Reference Order #{refOId} - - - {/each} + +
+
+ + Timeline +
+ +
+
+ Created At +

{formatDate(order.createdAt)}

+
+ +
+ Last Updated +

{formatDate(order.updatedAt)}

+
+
+
+ + + {#if order.emailAccountId} +
+
+ + Additional Information +
+ +
+
+ Email Account ID + #{order.emailAccountId} +
+ + {#if order.paymentInfoId} +
+ Payment Info ID + #{order.paymentInfoId} +
+ {/if} +
+
{/if}
diff --git a/apps/admin/src/lib/domains/order/view/order.vm.svelte.ts b/apps/admin/src/lib/domains/order/view/order.vm.svelte.ts index 9d203d0..dcb7b5c 100644 --- a/apps/admin/src/lib/domains/order/view/order.vm.svelte.ts +++ b/apps/admin/src/lib/domains/order/view/order.vm.svelte.ts @@ -1,14 +1,14 @@ -import { get } from "svelte/store"; -import { - getDefaultOrderCursor, - type PaginatedOrderInfoModel, - type OrderCursorModel, - getDefaultPaginatedOrderInfoModel, -} from "../data/entities"; +import { encodeCursor } from "$lib/core/string.utils"; import { trpcApiStore } from "$lib/stores/api"; import type { Result } from "@pkg/result"; import { toast } from "svelte-sonner"; -import { encodeCursor } from "$lib/core/string.utils"; +import { get } from "svelte/store"; +import { + getDefaultOrderCursor, + getDefaultPaginatedOrderInfoModel, + type OrderCursorModel, + type PaginatedOrderInfoModel, +} from "../data/entities"; export class OrderViewModel { orderInfo = $state( @@ -82,16 +82,7 @@ export class OrderViewModel { this.resetOrderInfo(); return; } - this.orderInfo = { - ...res.data, - data: res.data.data.map((item) => { - return { - ...item, - createdAt: new Date(item.createdAt), - updatedAt: new Date(item.updatedAt), - }; - }), - }; + this.orderInfo = { ...res.data, data: res.data.data }; } async searchOrders() { diff --git a/apps/admin/src/lib/domains/order/view/orders-table-full.svelte b/apps/admin/src/lib/domains/order/view/orders-table-full.svelte index e72c332..8f78703 100644 --- a/apps/admin/src/lib/domains/order/view/orders-table-full.svelte +++ b/apps/admin/src/lib/domains/order/view/orders-table-full.svelte @@ -1,25 +1,25 @@ {#if data.length > 0} @@ -162,7 +173,7 @@ orderVM.query = q; debouncedSearch(); }} - filterFieldPlaceholder="Search users..." + filterFieldPlaceholder="Search orders..." /> {:else}
diff --git a/apps/admin/src/lib/domains/order/view/orders-table.svelte b/apps/admin/src/lib/domains/order/view/orders-table.svelte index f19c68a..6fc1eee 100644 --- a/apps/admin/src/lib/domains/order/view/orders-table.svelte +++ b/apps/admin/src/lib/domains/order/view/orders-table.svelte @@ -1,34 +1,80 @@