import { SequelizeTransactionManager } from "@erp/core/api"; import { Sequelize } from "sequelize"; import { CreateCustomerInvoiceUseCase, CreateCustomerInvoicesPresenter } from "../../application/"; import { CustomerInvoiceService } from "../../domain"; import { CustomerInvoiceRepository, customerInvoiceMapper } from "../../infrastructure"; import { CreateCustomerInvoiceController } from "./create-customer-invoice"; export const buildCreateCustomerInvoicesController = (database: Sequelize) => { const transactionManager = new SequelizeTransactionManager(database); const customerInvoiceRepository = new CustomerInvoiceRepository(database, customerInvoiceMapper); const customerInvoiceService = new CustomerInvoiceService(customerInvoiceRepository); const presenter = new CreateCustomerInvoicesPresenter(); const useCase = new CreateCustomerInvoiceUseCase( customerInvoiceService, transactionManager, presenter ); return new CreateCustomerInvoiceController(useCase); };