import { Inject, Service } from 'typedi'; import { ISalesByItemsReportQuery, ISalesByItemsSheet, ISalesByItemsTable, } from '@/interfaces'; import { SalesByItemsReportService } from './SalesByItemsService'; import { SalesByItemsTableInjectable } from './SalesByItemsTableInjectable'; import { SalesByItemsExport } from './SalesByItemsExport'; import { SalesByItemsPdfInjectable } from './SalesByItemsPdfInjectable'; @Service() export class SalesByItemsApplication { @Inject() private salesByItemsSheet: SalesByItemsReportService; @Inject() private salesByItemsTable: SalesByItemsTableInjectable; @Inject() private salesByItemsExport: SalesByItemsExport; @Inject() private salesByItemsPdf: SalesByItemsPdfInjectable; /** * Retrieves the sales by items report in json format. * @param {number} tenantId * @param {ISalesByItemsReportQuery} filter * @returns {Promise} */ public sheet( tenantId: number, filter: ISalesByItemsReportQuery ): Promise { return this.salesByItemsSheet.salesByItems(tenantId, filter); } /** * Retrieves the sales by items report in table format. * @param {number} tenantId * @param {ISalesByItemsReportQuery} filter * @returns {Promise} */ public table( tenantId: number, filter: ISalesByItemsReportQuery ): Promise { return this.salesByItemsTable.table(tenantId, filter); } /** * Retrieves the sales by items report in csv format. * @param {number} tenantId * @param {ISalesByItemsReportQuery} filter * @returns {Promise} */ public csv( tenantId: number, filter: ISalesByItemsReportQuery ): Promise { return this.salesByItemsExport.csv(tenantId, filter); } /** * Retrieves the sales by items report in xlsx format. * @param {number} tenantId * @param {ISalesByItemsReportQuery} filter * @returns {Promise} */ public xlsx( tenantId: number, filter: ISalesByItemsReportQuery ): Promise { return this.salesByItemsExport.xlsx(tenantId, filter); } /** * Retrieves the sales by items in pdf format. * @param {number} tenantId * @param {ISalesByItemsReportQuery} query * @returns {Promise} */ public pdf( tenantId: number, query: ISalesByItemsReportQuery ): Promise { return this.salesByItemsPdf.pdf(tenantId, query); } }