import { Inject, Injectable } from '@nestjs/common'; import { omit } from 'lodash'; import { BranchesSettingsService } from '../BranchesSettings'; @Injectable() export class BranchTransactionDTOTransformer { constructor(private readonly branchesSettings: BranchesSettingsService) {} /** * Excludes DTO branch id when mutli-warehouses feature is inactive. * @returns {any} */ private excludeDTOBranchIdWhenInactive = async < T extends { branchId?: number }, >( DTO: T, ): Promise | T> => { const isActive = await this.branchesSettings.isMultiBranchesActive(); return !isActive ? omit(DTO, ['branchId']) : DTO; }; /** * Transforms the input DTO for branches feature. * @param {T} DTO - * @returns {Omit | T} */ public transformDTO = async ( DTO: T, ): Promise | T> => { return this.excludeDTOBranchIdWhenInactive(DTO); }; }