import type { ITransactionManager } from "@erp/core/api"; import type { ICreateCustomerInputMapper } from "../mappers"; import type { ICustomerCreator, ICustomerFinder } from "../services"; import type { ICustomerFullSnapshotBuilder, ICustomerSummarySnapshotBuilder, } from "../snapshot-builders"; import { CreateCustomerUseCase, GetCustomerByIdUseCase, ListCustomersUseCase } from "../use-cases"; export function buildGetCustomerByIdUseCase(deps: { finder: ICustomerFinder; fullSnapshotBuilder: ICustomerFullSnapshotBuilder; transactionManager: ITransactionManager; }) { return new GetCustomerByIdUseCase(deps.finder, deps.fullSnapshotBuilder, deps.transactionManager); } export function buildListCustomersUseCase(deps: { finder: ICustomerFinder; summarySnapshotBuilder: ICustomerSummarySnapshotBuilder; transactionManager: ITransactionManager; }) { return new ListCustomersUseCase( deps.finder, deps.summarySnapshotBuilder, deps.transactionManager ); } export function buildCreateCustomerUseCase(deps: { creator: ICustomerCreator; dtoMapper: ICreateCustomerInputMapper; fullSnapshotBuilder: ICustomerFullSnapshotBuilder; transactionManager: ITransactionManager; }) { return new CreateCustomerUseCase({ dtoMapper: deps.dtoMapper, creator: deps.creator, fullSnapshotBuilder: deps.fullSnapshotBuilder, transactionManager: deps.transactionManager, }); } /*export function buildReportCustomerUseCase(deps: { finder: ICustomerFinder; fullSnapshotBuilder: ICustomerFullSnapshotBuilder; reportSnapshotBuilder: ICustomerReportSnapshotBuilder; documentService: CustomerDocumentGeneratorService; transactionManager: ITransactionManager; }) { return new ReportCustomerUseCase( deps.finder, deps.fullSnapshotBuilder, deps.reportSnapshotBuilder, deps.documentService, deps.transactionManager ); }*/ /*export function buildUpdateCustomerUseCase(deps: { finder: ICustomerFinder; fullSnapshotBuilder: ICustomerFullSnapshotBuilder; }) { return new UpdateCustomerUseCase(deps.finder, deps.fullSnapshotBuilder); } export function buildDeleteCustomerUseCase(deps: { finder: ICustomerFinder }) { return new DeleteCustomerUseCase(deps.finder); } export function buildIssueCustomerUseCase(deps: { finder: ICustomerFinder }) { return new IssueCustomerUseCase(deps.finder); } export function buildChangeStatusCustomerUseCase(deps: { finder: ICustomerFinder; transactionManager: ITransactionManager; }) { return new ChangeStatusCustomerUseCase(deps.finder, deps.transactionManager); }*/