Interface Documentation
Overview
This document provides comprehensive documentation of TypeScript interfaces, DTOs, enums, and contracts used throughout the Order Management module. All interfaces are based on real implementations from the codebase.
Data Transfer Objects (DTOs)
Core Order DTOs
OrderDto
import { BaseEntityDto } from '@root/common/application/dto/base-entity.dto';
import { MetaDto } from '@root/common/application/dto/meta.dto';
import { PaymentStatusEnum } from '../../payment/domain/enums/payment.status.enum';
import { OrderStatusEnum } from '../domain/enums/order.status.enum';
import { OrderNotificationSettingsDto } from './sub/notification-settings';
import { OrderProductDto } from './sub/order-product.dto';
import { OrderServiceDto } from './sub/order-service.dto';
import { CustomerDto } from '../../customer/dtos/customer.dto';
@Exclude()
export class OrderDto extends BaseEntityDto {
@ApiProperty({ example: 'OrderDto', required: false })
@IsString()
@IsOptional()
@Expose()
object?: 'OrderDto';
@ApiProperty({
enum: OrderStatusEnum,
default: OrderStatusEnum.inProgress,
required: false
})
@IsEnum(OrderStatusEnum)
@Expose()
status?: OrderStatusEnum;
@ApiProperty({
type: () => MetaDto,
required: false
})
@Type(() => MetaDto)
@IsOptional()
@Expose()
meta?: MetaDto;
@ApiProperty({
type: () => OrderProductDto,
isArray: true,
required: false
})
@IsArray()
@Type(() => OrderProductDto)
@IsOptional()
@Expose()
products?: OrderProductDto[];
@ApiProperty({
type: () => OrderServiceDto,
isArray: true,
required: false
})
@IsArray()
@Type(() => OrderServiceDto)
@IsOptional()
@Expose()
services?: OrderServiceDto[];
@ApiProperty({
enum: PaymentStatusEnum,
default: PaymentStatusEnum.pending,
required: false
})
@IsEnum(PaymentStatusEnum)
@IsOptional()
@Expose()
paymentStatus?: PaymentStatusEnum;
@ApiProperty({ required: false })
@IsString()
@IsOptional()
@Expose()
businessNote?: string;
@ApiProperty({
type: () => OrderNotificationSettingsDto,
required: false
})
@Type(() => OrderNotificationSettingsDto)
@IsOptional()
@Expose()
notificationSettings?: OrderNotificationSettingsDto;
@ApiProperty({ required: false })
@Type(() => CustomerDto)
@IsOptional()
@Expose()
customer?: CustomerDto;
}OrderServiceDto
OrderProductDto
OrderAppointmentDetailsDto
Pagination DTOs
OrderPaginationDto
Supporting DTOs
AttendantDto
AttachmentDto
Public Order DTOs
PublicOrderDto
PublicOrderServiceDto
Use Case DTOs
CreatePublicOrderDto
CreatePublicOrderServiceDto
ChangeOrderStatusDto
CancelOrderDto
Domain Interfaces
Core Domain Interfaces
IOrder
IOrderService
IOrderProduct
Enumerations
OrderStatusEnum
OrderServiceStatusEnum
ReservationTypeEnum
PaymentStatusEnum
ResponseStatusEnum
Use Case Interfaces
Use Case Parameter Interfaces
GetOrderUseCaseParams
GetPagedOrdersUseCaseParams
CreateOrderSagaParams
UpdateOrderSagaParams
DeleteOrderSagaParams
Repository Interfaces
IOrderRepository
IOrderServiceRepository
IOrderProductRepository
Value Object Interfaces
IOrderAppointmentDetails
IOrderNotificationSettings
IAttendant
IAttachment
ILocation
Event Interfaces
Order Events
OrderCreatedEvent
OrderUpdatedEvent
OrderStatusChangedEvent
OrderDeletedEvent
Order Service Events
OrderServiceStatusChangedEvent
OrderServiceAcceptedEvent
OrderServiceCancelledEvent
Validation Constraints
Order Validation
Service Validation
Type Guards and Utility Types
Type Guards
Utility Types
Error Types
Domain Error Types
Constants and Configuration
Order Configuration
Last updated
Was this helpful?