feat: tax rate transformer

This commit is contained in:
Ahmed Bouhuolia
2023-09-11 20:46:46 +02:00
parent 7657337c4f
commit 6abae43c6f
8 changed files with 101 additions and 5 deletions

View File

@@ -1,6 +1,8 @@
import { Inject, Service } from 'typedi';
import HasTenancyService from '../Tenancy/TenancyService';
import { CommandTaxRatesValidators } from './CommandTaxRatesValidators';
import { TransformerInjectable } from '@/lib/Transformer/TransformerInjectable';
import { TaxRateTransformer } from './TaxRateTransformer';
@Service()
export class GetTaxRateService {
@@ -10,6 +12,9 @@ export class GetTaxRateService {
@Inject()
private validators: CommandTaxRatesValidators;
@Inject()
private transformer: TransformerInjectable;
/**
* Retrieves the given tax rate.
* @param {number} tenantId
@@ -24,6 +29,11 @@ export class GetTaxRateService {
// Validates the tax rate existance.
this.validators.validateTaxRateExistance(taxRate);
return taxRate;
// Transforms the tax rate.
return this.transformer.transform(
tenantId,
taxRate,
new TaxRateTransformer()
);
}
}

View File

@@ -1,11 +1,16 @@
import { Inject, Service } from 'typedi';
import HasTenancyService from '../Tenancy/TenancyService';
import { TransformerInjectable } from '@/lib/Transformer/TransformerInjectable';
import { TaxRateTransformer } from './TaxRateTransformer';
@Service()
export class GetTaxRatesService {
@Inject()
private tenancy: HasTenancyService;
@Inject()
private transformer: TransformerInjectable;
/**
* Retrieves the tax rates list.
* @param {number} tenantId
@@ -16,6 +21,11 @@ export class GetTaxRatesService {
const taxRates = await TaxRate.query();
return taxRates;
// Transforms the tax rates.
return this.transformer.transform(
tenantId,
taxRates,
new TaxRateTransformer()
);
}
}

View File

@@ -0,0 +1,20 @@
import { Transformer } from '@/lib/Transformer/Transformer';
export class TaxRateTransformer extends Transformer {
/**
* Include these attributes to tax rate object.
* @returns {Array}
*/
public includeAttributes = (): string[] => {
return ['nameFormatted'];
};
/**
* Formats the tax rate name.
* @param taxRate
* @returns {string}
*/
protected nameFormatted = (taxRate): string => {
return `${taxRate.name} (${taxRate.rate}%)`;
};
}