diff --git a/apps/bff/src/integrations/freebit/interfaces/freebit.types.ts b/apps/bff/src/integrations/freebit/interfaces/freebit.types.ts index 2ce6d8f5..87fb4c9d 100644 --- a/apps/bff/src/integrations/freebit/interfaces/freebit.types.ts +++ b/apps/bff/src/integrations/freebit/interfaces/freebit.types.ts @@ -310,7 +310,7 @@ export interface FreebitEsimAccountActivationResponse { } // Portal-specific types for SIM management -export type { SimDetails, SimUsage, SimTopUpHistory } from "@customer-portal/contracts/sim"; +export type { SimDetails, SimUsage, SimTopUpHistory } from "@customer-portal/domain/sim"; // Error handling export interface FreebitError extends Error { diff --git a/apps/bff/src/integrations/freebit/services/freebit-mapper.service.ts b/apps/bff/src/integrations/freebit/services/freebit-mapper.service.ts index 56d41716..1e496877 100644 --- a/apps/bff/src/integrations/freebit/services/freebit-mapper.service.ts +++ b/apps/bff/src/integrations/freebit/services/freebit-mapper.service.ts @@ -6,7 +6,6 @@ import type { } from "../interfaces/freebit.types"; import type { SimDetails, SimTopUpHistory, SimUsage } from "@customer-portal/domain/sim"; import { Providers } from "@customer-portal/domain/sim"; -import { normalizeAccount as normalizeAccountUtil } from "@customer-portal/integrations-freebit/utils"; @Injectable() export class FreebitMapperService { @@ -35,7 +34,7 @@ export class FreebitMapperService { * Normalize account identifier (remove formatting) */ normalizeAccount(account: string): string { - return normalizeAccountUtil(account); + return Providers.Freebit.normalizeAccount(account); } /** diff --git a/apps/bff/src/integrations/freebit/services/freebit-operations.service.ts b/apps/bff/src/integrations/freebit/services/freebit-operations.service.ts index 65ba7e2e..dd3017fd 100644 --- a/apps/bff/src/integrations/freebit/services/freebit-operations.service.ts +++ b/apps/bff/src/integrations/freebit/services/freebit-operations.service.ts @@ -221,7 +221,7 @@ export class FreebitOperationsService { ): Promise<{ ipv4?: string; ipv6?: string }> { // Import and validate with the schema const { freebitPlanChangeRequestSchema } = await import( - "@customer-portal/schemas/integrations/freebit/requests/plan-change.schema" + "@customer-portal/domain/sim/providers/freebit/requests" ); try { @@ -281,7 +281,7 @@ export class FreebitOperationsService { try { // Import and validate with the new schema const { freebitSimFeaturesRequestSchema } = await import( - "@customer-portal/schemas/integrations/freebit/requests/features.schema" + "@customer-portal/domain/sim/providers/freebit/requests" ); const validatedFeatures = freebitSimFeaturesRequestSchema.parse({ @@ -481,7 +481,7 @@ export class FreebitOperationsService { // Import schemas dynamically to avoid circular dependencies const { freebitEsimActivationParamsSchema, freebitEsimActivationRequestSchema } = await import( - "@customer-portal/schemas/integrations/freebit/requests/esim-activation.schema" + "@customer-portal/domain/sim/providers/freebit/requests" ); // Validate input parameters diff --git a/apps/bff/src/modules/orders/orders.controller.ts b/apps/bff/src/modules/orders/orders.controller.ts index 8eb06217..74d02d1e 100644 --- a/apps/bff/src/modules/orders/orders.controller.ts +++ b/apps/bff/src/modules/orders/orders.controller.ts @@ -8,7 +8,7 @@ import { sfOrderIdParamSchema, type CreateOrderRequest, type SfOrderIdParam, -} from "@customer-portal/domain"; +} from "@customer-portal/domain/orders"; @Controller("orders") export class OrdersController { diff --git a/apps/bff/src/modules/orders/services/order-builder.service.ts b/apps/bff/src/modules/orders/services/order-builder.service.ts index 1bec396c..4bfb11e2 100644 --- a/apps/bff/src/modules/orders/services/order-builder.service.ts +++ b/apps/bff/src/modules/orders/services/order-builder.service.ts @@ -1,6 +1,6 @@ import { Injectable, Inject } from "@nestjs/common"; import { Logger } from "nestjs-pino"; -import type { OrderBusinessValidation, UserMapping } from "@customer-portal/domain"; +import type { OrderBusinessValidation, UserMapping } from "@customer-portal/domain/orders"; import { SalesforceFieldMapService, type SalesforceFieldMap } from "@bff/core/config/field-map"; import { UsersService } from "@bff/modules/users/users.service"; type OrderBuilderFieldKey = diff --git a/apps/bff/src/modules/orders/services/order-fulfillment-orchestrator.service.ts b/apps/bff/src/modules/orders/services/order-fulfillment-orchestrator.service.ts index 389c7f26..7a705ea7 100644 --- a/apps/bff/src/modules/orders/services/order-fulfillment-orchestrator.service.ts +++ b/apps/bff/src/modules/orders/services/order-fulfillment-orchestrator.service.ts @@ -16,7 +16,15 @@ import { SimFulfillmentService } from "./sim-fulfillment.service"; import { DistributedTransactionService } from "@bff/core/database/services/distributed-transaction.service"; import { getErrorMessage } from "@bff/core/utils/error.util"; import { SalesforceFieldMapService } from "@bff/core/config/field-map"; -import type { OrderDetailsResponse } from "@customer-portal/domain"; +import type { OrderDetailsResponse } from "@customer-portal/domain/orders"; +import { + orderSummarySchema, + orderStatusSchema, + z, + type OrderSummary, + type SalesforceOrderRecord, + type SalesforceOrderItemRecord, +} from "@customer-portal/domain/orders"; import type { FulfillmentOrderDetails, FulfillmentOrderItem } from "../types/fulfillment.types"; export interface OrderFulfillmentStep { diff --git a/apps/bff/src/modules/orders/services/order-fulfillment-validator.service.ts b/apps/bff/src/modules/orders/services/order-fulfillment-validator.service.ts index cc3341e7..2c404a02 100644 --- a/apps/bff/src/modules/orders/services/order-fulfillment-validator.service.ts +++ b/apps/bff/src/modules/orders/services/order-fulfillment-validator.service.ts @@ -4,9 +4,9 @@ import { SalesforceService } from "@bff/integrations/salesforce/salesforce.servi import { WhmcsPaymentService } from "@bff/integrations/whmcs/services/whmcs-payment.service"; import { MappingsService } from "@bff/modules/id-mappings/mappings.service"; import { getErrorMessage } from "@bff/core/utils/error.util"; -import type { SalesforceOrderRecord } from "@customer-portal/domain"; +import type { SalesforceOrderRecord } from "@customer-portal/domain/orders"; import { SalesforceFieldMapService, type SalesforceFieldMap } from "@bff/core/config/field-map"; -import { sfOrderIdParamSchema } from "@customer-portal/domain"; +import { sfOrderIdParamSchema } from "@customer-portal/domain/orders"; type OrderStringFieldKey = "activationStatus"; export interface OrderFulfillmentValidationResult { diff --git a/apps/bff/src/modules/orders/services/order-item-builder.service.ts b/apps/bff/src/modules/orders/services/order-item-builder.service.ts index 64936491..e7d4e039 100644 --- a/apps/bff/src/modules/orders/services/order-item-builder.service.ts +++ b/apps/bff/src/modules/orders/services/order-item-builder.service.ts @@ -3,7 +3,7 @@ import { Logger } from "nestjs-pino"; import { SalesforceConnection } from "@bff/integrations/salesforce/services/salesforce-connection.service"; import { OrderPricebookService } from "./order-pricebook.service"; import { PrismaService } from "@bff/infra/database/prisma.service"; -import { createOrderRequestSchema } from "@customer-portal/domain"; +import { createOrderRequestSchema } from "@customer-portal/domain/orders"; /** * Handles building order items from SKU data diff --git a/apps/bff/src/modules/orders/services/order-orchestrator.service.ts b/apps/bff/src/modules/orders/services/order-orchestrator.service.ts index f643bc4f..c64311c7 100644 --- a/apps/bff/src/modules/orders/services/order-orchestrator.service.ts +++ b/apps/bff/src/modules/orders/services/order-orchestrator.service.ts @@ -13,7 +13,7 @@ import { type SalesforceOrderItemRecord, type SalesforceQueryResult, type SalesforceProduct2Record, -} from "@customer-portal/domain"; +} from "@customer-portal/domain/orders"; import { SalesforceFieldMapService, type SalesforceFieldMap } from "@bff/core/config/field-map"; import { assertSalesforceId, buildInClause } from "@bff/integrations/salesforce/utils/soql.util"; import { getErrorMessage } from "@bff/core/utils/error.util"; diff --git a/apps/bff/src/modules/orders/services/order-pricebook.service.ts b/apps/bff/src/modules/orders/services/order-pricebook.service.ts index 0371240c..b522934f 100644 --- a/apps/bff/src/modules/orders/services/order-pricebook.service.ts +++ b/apps/bff/src/modules/orders/services/order-pricebook.service.ts @@ -4,11 +4,12 @@ import { Logger } from "nestjs-pino"; import { SalesforceConnection } from "@bff/integrations/salesforce/services/salesforce-connection.service"; import { SalesforceFieldMapService } from "@bff/core/config/field-map"; import { getStringField } from "@bff/modules/catalog/utils/salesforce-product.mapper"; -import type { - SalesforcePricebookEntryRecord, - SalesforceProduct2Record, - SalesforceQueryResult, -} from "@customer-portal/domain"; +import { + z, + type SalesforceProduct2Record, + type SalesforceQueryResult, + type SalesforceQueryRecord, +} from "@customer-portal/domain/orders"; import { assertSalesforceId, buildInClause, diff --git a/apps/bff/src/modules/orders/services/order-validator.service.ts b/apps/bff/src/modules/orders/services/order-validator.service.ts index fa1565ae..a2349516 100644 --- a/apps/bff/src/modules/orders/services/order-validator.service.ts +++ b/apps/bff/src/modules/orders/services/order-validator.service.ts @@ -9,7 +9,7 @@ import { orderBusinessValidationSchema, type CreateOrderRequest, type OrderBusinessValidation, -} from "@customer-portal/domain"; +} from "@customer-portal/domain/orders"; import type { WhmcsProduct } from "@bff/integrations/whmcs/types/whmcs-api.types"; import { OrderPricebookService } from "./order-pricebook.service"; diff --git a/packages/domain/sim/providers/freebit/mapper.ts b/packages/domain/sim/providers/freebit/mapper.ts index eacd662c..86d66bc9 100644 --- a/packages/domain/sim/providers/freebit/mapper.ts +++ b/packages/domain/sim/providers/freebit/mapper.ts @@ -146,3 +146,7 @@ export function transformFreebitQuotaHistory(raw: unknown): SimTopUpHistory { return simTopUpHistorySchema.parse(history); } +export function normalizeAccount(account: string): string { + return account.replace(/\D/g, ""); +} + diff --git a/packages/domain/src/validation/api/requests.d.ts b/packages/domain/src/validation/api/requests.d.ts index bde369e1..bd6ddf3c 100644 --- a/packages/domain/src/validation/api/requests.d.ts +++ b/packages/domain/src/validation/api/requests.d.ts @@ -168,8 +168,8 @@ export declare const orderConfigurationsSchema: z.ZodObject<{ }, z.core.$strip>; export declare const createOrderRequestSchema: z.ZodObject<{ orderType: z.ZodEnum<{ - Internet: "Internet"; SIM: "SIM"; + Internet: "Internet"; VPN: "VPN"; Other: "Other"; }>; diff --git a/packages/domain/src/validation/business/orders.d.ts b/packages/domain/src/validation/business/orders.d.ts index 8c13a6f0..563c8085 100644 --- a/packages/domain/src/validation/business/orders.d.ts +++ b/packages/domain/src/validation/business/orders.d.ts @@ -1,8 +1,8 @@ import { z } from "zod"; export declare const orderBusinessValidationSchema: z.ZodObject<{ orderType: z.ZodEnum<{ - Internet: "Internet"; SIM: "SIM"; + Internet: "Internet"; VPN: "VPN"; Other: "Other"; }>; @@ -54,8 +54,8 @@ export declare const skuValidationSchema: z.ZodObject<{ sku: z.ZodString; isActive: z.ZodBoolean; productType: z.ZodEnum<{ - Internet: "Internet"; SIM: "SIM"; + Internet: "Internet"; VPN: "VPN"; Addon: "Addon"; Fee: "Fee"; diff --git a/packages/domain/src/validation/shared/entities.d.ts b/packages/domain/src/validation/shared/entities.d.ts index d760d30f..2d49b663 100644 --- a/packages/domain/src/validation/shared/entities.d.ts +++ b/packages/domain/src/validation/shared/entities.d.ts @@ -31,9 +31,9 @@ export declare const casePrioritySchema: z.ZodEnum<{ }>; export declare const paymentStatusSchema: z.ZodEnum<{ pending: "pending"; - processing: "processing"; completed: "completed"; failed: "failed"; + processing: "processing"; cancelled: "cancelled"; refunded: "refunded"; }>; @@ -164,9 +164,9 @@ export declare const paymentSchema: z.ZodObject<{ currency: z.ZodOptional; status: z.ZodEnum<{ pending: "pending"; - processing: "processing"; completed: "completed"; failed: "failed"; + processing: "processing"; cancelled: "cancelled"; refunded: "refunded"; }>; diff --git a/packages/domain/src/validation/shared/primitives.d.ts b/packages/domain/src/validation/shared/primitives.d.ts index d7722bf5..4d0f382c 100644 --- a/packages/domain/src/validation/shared/primitives.d.ts +++ b/packages/domain/src/validation/shared/primitives.d.ts @@ -31,9 +31,9 @@ export declare const genderEnum: z.ZodEnum<{ other: "other"; }>; export declare const statusEnum: z.ZodEnum<{ + pending: "pending"; active: "active"; inactive: "inactive"; - pending: "pending"; suspended: "suspended"; }>; export declare const priorityEnum: z.ZodEnum<{