This commit is contained in:
Ahmed Bouhuolia
2026-01-18 22:43:54 +02:00
parent bf821885c0
commit db5caa138a
7 changed files with 26 additions and 36 deletions

View File

@@ -35,11 +35,10 @@ import { ThrottlerStorageRedisService } from '@nest-lab/throttler-storage-redis'
const password = configService.get<string>('redis.password');
const db = configService.get<number>('redis.db');
// Ensure we always have valid numbers with fallback defaults
const globalTtl = configService.get<number>('throttle.global.ttl') ?? 60000;
const globalLimit = configService.get<number>('throttle.global.limit') ?? 100;
const authTtl = configService.get<number>('throttle.auth.ttl') ?? 60000;
const authLimit = configService.get<number>('throttle.auth.limit') ?? 10;
const globalTtl = configService.get<number>('throttle.global.ttl');
const globalLimit = configService.get<number>('throttle.global.limit');
const authTtl = configService.get<number>('throttle.auth.ttl');
const authLimit = configService.get<number>('throttle.auth.limit');
return {
throttlers: [

View File

@@ -1,12 +1,12 @@
import { BadRequestException, Injectable } from '@nestjs/common';
import {
ITransactionsByReferencePojo,
ITransactionsByReferenceQuery,
} from './TransactionsByReference.types';
import { TransactionsByReferenceRepository } from './TransactionsByReferenceRepository';
import { TransactionsByReference } from './TransactionsByReferenceReport';
import { getTransactionsByReferenceQuery } from './_utils';
import { TenancyContext } from '@/modules/Tenancy/TenancyContext.service';
import { TransactionsByReferenceQueryDto } from './TransactionsByReferenceQuery.dto';
@Injectable()
export class TransactionsByReferenceService {
@@ -17,18 +17,12 @@ export class TransactionsByReferenceService {
/**
* Retrieve accounts transactions by given reference id and type.
* @param {ITransactionsByReferenceQuery} filter - Transactions by reference query.
* @param {TransactionsByReferenceQueryDto} filter - Transactions by reference query.
* @returns {Promise<ITransactionsByReferencePojo>}
*/
public async getTransactionsByReference(
query: ITransactionsByReferenceQuery
query: TransactionsByReferenceQueryDto
): Promise<ITransactionsByReferencePojo> {
// Validate referenceId is a valid positive number
const referenceId = Number(query.referenceId);
if (isNaN(referenceId) || referenceId <= 0) {
throw new BadRequestException('referenceId must be a valid positive number');
}
const filter = {
...getTransactionsByReferenceQuery(),
...query,
@@ -37,7 +31,7 @@ export class TransactionsByReferenceService {
// Retrieve the accounts transactions of the given reference.
const transactions = await this.repository.getTransactions(
referenceId,
query.referenceId,
filter.referenceType
);
// Transactions by reference report.

View File

@@ -1,19 +1,19 @@
import { Injectable } from '@nestjs/common';
import { TransactionsByReferenceService } from './TransactionsByReference.service';
import { ITransactionsByReferenceQuery } from './TransactionsByReference.types';
import { TransactionsByReferenceQueryDto } from './TransactionsByReferenceQuery.dto';
@Injectable()
export class TransactionsByReferenceApplication {
constructor(
private readonly transactionsByReferenceService: TransactionsByReferenceService,
) {}
) { }
/**
* Retrieve accounts transactions by given reference id and type.
* @param {ITransactionsByReferenceQuery} query - Transactions by reference query.
* @param {TransactionsByReferenceQueryDto} query - Transactions by reference query.
* @returns {Promise<ITransactionsByReferencePojo>}
*/
public async getTransactions(query: ITransactionsByReferenceQuery) {
public async getTransactions(query: TransactionsByReferenceQueryDto) {
return this.transactionsByReferenceService.getTransactionsByReference(
query,
);

View File

@@ -18,5 +18,5 @@ export class TransactionsByReferenceQueryDto {
example: '1',
required: true,
})
referenceId: string;
referenceId: number;
}

View File

@@ -1,27 +1,27 @@
import {
ITransactionsByReferenceQuery,
ITransactionsByReferenceTransaction,
} from './TransactionsByReference.types';
import { FinancialSheet } from '../../common/FinancialSheet';
import { ModelObject } from 'objection';
import { AccountTransaction } from '@/modules/Accounts/models/AccountTransaction.model';
import { INumberFormatQuery } from '../../types/Report.types';
import { TransactionsByReferenceQueryDto } from './TransactionsByReferenceQuery.dto';
export class TransactionsByReference extends FinancialSheet {
readonly transactions: ModelObject<AccountTransaction>[];
readonly query: ITransactionsByReferenceQuery;
readonly query: TransactionsByReferenceQueryDto;
readonly baseCurrency: string;
readonly numberFormat: INumberFormatQuery;
/**
* Constructor method.
* @param {ModelObject<AccountTransaction>[]} transactions
* @param {ITransactionsByReferenceQuery} query
* @param {TransactionsByVendorQueryDto} query
* @param {string} baseCurrency
*/
constructor(
transactions: ModelObject<AccountTransaction>[],
query: ITransactionsByReferenceQuery,
query: TransactionsByReferenceQueryDto,
baseCurrency: string
) {
super();
@@ -46,12 +46,9 @@ export class TransactionsByReference extends FinancialSheet {
credit: this.getAmountMeta(transaction.credit, { money: false }),
debit: this.getAmountMeta(transaction.debit, { money: false }),
// @ts-ignore
// formattedReferenceType: transaction.referenceTypeFormatted,
formattedReferenceType: '',
referenceType: transaction.referenceType,
referenceId: transaction.referenceId,
formattedReferenceType: transaction.referenceTypeFormatted,
contactId: transaction.contactId,
contactType: transaction.contactType,

View File

@@ -2,7 +2,6 @@ import { Injectable } from '@nestjs/common';
import { I18nService } from 'nestjs-i18n';
import { EventEmitter2 } from '@nestjs/event-emitter';
import {
ITransactionsByVendorsFilter,
ITransactionsByVendorsStatement,
} from './TransactionsByVendor.types';
import { TransactionsByVendor } from './TransactionsByVendor';
@@ -10,6 +9,7 @@ import { TransactionsByVendorRepository } from './TransactionsByVendorRepository
import { TransactionsByVendorMeta } from './TransactionsByVendorMeta';
import { getTransactionsByVendorDefaultQuery } from './utils';
import { events } from '@/common/events/events';
import { TransactionsByVendorQueryDto } from './TransactionsByVendorQuery.dto';
@Injectable()
export class TransactionsByVendorsInjectable {
@@ -18,15 +18,15 @@ export class TransactionsByVendorsInjectable {
private readonly transactionsByVendorMeta: TransactionsByVendorMeta,
private readonly eventPublisher: EventEmitter2,
private readonly i18n: I18nService,
) {}
) { }
/**
* Retrieve transactions by by the customers.
* @param {ITransactionsByVendorsFilter} query - Transactions by vendors filter.
* @param {TransactionsByVendorQueryDto} query - Transactions by vendors filter.
* @return {Promise<ITransactionsByVendorsStatement>}
*/
public async transactionsByVendors(
query: ITransactionsByVendorsFilter,
query: TransactionsByVendorQueryDto,
): Promise<ITransactionsByVendorsStatement> {
const filter = { ...getTransactionsByVendorDefaultQuery(), ...query };

View File

@@ -1,26 +1,26 @@
import { TransactionsByVendorsTable } from './TransactionsByVendorTable';
import {
ITransactionsByVendorTable,
ITransactionsByVendorsFilter,
} from './TransactionsByVendor.types';
import { TransactionsByVendorsInjectable } from './TransactionsByVendorInjectable';
import { Injectable } from '@nestjs/common';
import { I18nService } from 'nestjs-i18n';
import { TransactionsByVendorQueryDto } from './TransactionsByVendorQuery.dto';
@Injectable()
export class TransactionsByVendorTableInjectable {
constructor(
private readonly transactionsByVendor: TransactionsByVendorsInjectable,
private readonly i18n: I18nService
) {}
) { }
/**
* Retrieves the transactions by vendor in table format.
* @param {ITransactionsByReferenceQuery} query - The filter query.
* @param {TransactionsByVendorQueryDto} query - The filter query.
* @returns {Promise<ITransactionsByVendorTable>}
*/
public async table(
query: ITransactionsByVendorsFilter
query: TransactionsByVendorQueryDto
): Promise<ITransactionsByVendorTable> {
const sheet = await this.transactionsByVendor.transactionsByVendors(
query