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?