refactor: tenant proxy providers

This commit is contained in:
Ahmed Bouhuolia
2025-02-15 23:52:12 +02:00
parent 36851d3209
commit 5c0bb52b59
302 changed files with 2396 additions and 1677 deletions

View File

@@ -11,9 +11,12 @@ import { BankRulesModule } from '../BankRules/BankRules.module';
const models = [RegisterTenancyModel(RecognizedBankTransaction)];
@Module({
imports: [BankingTransactionsModule, forwardRef(() => BankRulesModule)],
providers: [
imports: [
BankingTransactionsModule,
forwardRef(() => BankRulesModule),
...models,
],
providers: [
GetAutofillCategorizeTransactionService,
RevertRecognizedTransactionsService,
RecognizeTranasctionsService,

View File

@@ -8,18 +8,23 @@ import { BankRule } from '@/modules/BankRules/models/BankRule';
import { RecognizedBankTransaction } from '../models/RecognizedBankTransaction';
import { UncategorizedBankTransaction } from '@/modules/BankingTransactions/models/UncategorizedBankTransaction';
import { transformToMapBy } from '@/utils/transform-to-map-by';
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
@Injectable()
export class RecognizeTranasctionsService {
constructor(
@Inject(UncategorizedBankTransaction.name)
private readonly uncategorizedCashflowTransactionModel: typeof UncategorizedBankTransaction,
private readonly uncategorizedCashflowTransactionModel: TenantModelProxy<
typeof UncategorizedBankTransaction
>,
@Inject(RecognizedBankTransaction.name)
private readonly recognizedBankTransactionModel: typeof RecognizedBankTransaction,
private readonly recognizedBankTransactionModel: TenantModelProxy<
typeof RecognizedBankTransaction
>,
@Inject(BankRule.name)
private readonly bankRuleModel: typeof BankRule,
private readonly bankRuleModel: TenantModelProxy<typeof BankRule>,
) {}
/**
@@ -33,7 +38,7 @@ export class RecognizeTranasctionsService {
transaction: UncategorizedBankTransaction,
trx?: Knex.Transaction,
) {
const recognizedTransaction = await this.recognizedBankTransactionModel
const recognizedTransaction = await this.recognizedBankTransactionModel()
.query(trx)
.insert({
bankRuleId: bankRule.id,
@@ -43,7 +48,8 @@ export class RecognizeTranasctionsService {
assignedPayee: bankRule.assignPayee,
assignedMemo: bankRule.assignMemo,
});
await this.uncategorizedCashflowTransactionModel
await this.uncategorizedCashflowTransactionModel()
.query(trx)
.findById(transaction.id)
.patch({
@@ -52,7 +58,7 @@ export class RecognizeTranasctionsService {
}
/**
* Regonized the uncategorized transactions.
* Recognized the uncategorized transactions.
* @param {number|Array<number>} ruleId - The target rule id/ids.
* @param {RecognizeTransactionsCriteria}
* @param {Knex.Transaction} trx -
@@ -63,7 +69,7 @@ export class RecognizeTranasctionsService {
trx?: Knex.Transaction,
) {
const uncategorizedTranasctions =
await this.uncategorizedCashflowTransactionModel
await this.uncategorizedCashflowTransactionModel()
.query(trx)
.onBuild((query) => {
query.modify('notRecognized');
@@ -78,14 +84,17 @@ export class RecognizeTranasctionsService {
}
});
const bankRules = await this.bankRuleModel.query(trx).onBuild((q) => {
const rulesIds = !isEmpty(ruleId) ? castArray(ruleId) : [];
const bankRules = await this.bankRuleModel()
.query(trx)
.onBuild((q) => {
const rulesIds = !isEmpty(ruleId) ? castArray(ruleId) : [];
if (rulesIds?.length > 0) {
q.whereIn('id', rulesIds);
}
q.withGraphFetched('conditions');
});
if (rulesIds?.length > 0) {
q.whereIn('id', rulesIds);
}
q.withGraphFetched('conditions');
});
const bankRulesByAccountId = transformToMapBy(
bankRules,
'applyIfAccountId',

View File

@@ -3,6 +3,7 @@ import { castArray, first, uniq } from 'lodash';
import { GetAutofillCategorizeTransctionTransformer } from './GetAutofillCategorizeTransactionTransformer';
import { UncategorizedBankTransaction } from '@/modules/BankingTransactions/models/UncategorizedBankTransaction';
import { TransformerInjectable } from '@/modules/Transformer/TransformerInjectable.service';
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
@Injectable()
export class GetAutofillCategorizeTransactionService {
@@ -10,7 +11,9 @@ export class GetAutofillCategorizeTransactionService {
private readonly transformer: TransformerInjectable,
@Inject(UncategorizedBankTransaction.name)
private readonly uncategorizedBankTransactionModel: typeof UncategorizedBankTransaction,
private readonly uncategorizedBankTransactionModel: TenantModelProxy<
typeof UncategorizedBankTransaction
>,
) {}
/**
@@ -18,13 +21,14 @@ export class GetAutofillCategorizeTransactionService {
* @param {Array<number> | number} uncategorizeTransactionsId - Uncategorized transactions ids.
*/
public async getAutofillCategorizeTransaction(
uncategorizeTransactionsId: Array<number> | number
uncategorizeTransactionsId: Array<number> | number,
) {
const uncategorizeTransactionsIds = uniq(
castArray(uncategorizeTransactionsId)
castArray(uncategorizeTransactionsId),
);
const uncategorizedTransactions =
await this.uncategorizedBankTransactionModel.query()
await this.uncategorizedBankTransactionModel()
.query()
.whereIn('id', uncategorizeTransactionsIds)
.withGraphFetched('recognizedTransaction.assignAccount')
.withGraphFetched('recognizedTransaction.bankRule')
@@ -36,7 +40,7 @@ export class GetAutofillCategorizeTransactionService {
{
uncategorizedTransactions,
firstUncategorizedTransaction: first(uncategorizedTransactions),
}
},
);
}
}