refactor(nestjs): bank transactions matching

This commit is contained in:
Ahmed Bouhuolia
2025-06-05 14:41:26 +02:00
parent f87bd341e9
commit 51988dba3b
43 changed files with 484 additions and 105 deletions

View File

@@ -7,6 +7,7 @@ import { IItemsFilter } from './types/Items.types';
import { ItemTransformer } from './Item.transformer';
import { TenantModelProxy } from '../System/models/TenantBaseModel';
import { ISortOrder } from '../DynamicListing/DynamicFilter/DynamicFilter.types';
import { GetItemsQueryDto } from './dtos/GetItemsQuery.dto';
@Injectable()
export class GetItemsService {
@@ -32,7 +33,7 @@ export class GetItemsService {
* Retrieves items datatable list.
* @param {IItemsFilter} itemsFilter - Items filter.
*/
public async getItems(filterDto: Partial<IItemsFilter>) {
public async getItems(filterDto: Partial<GetItemsQueryDto>) {
const _filterDto = {
sortOrder: ISortOrder.DESC,
columnSortBy: 'created_at',

View File

@@ -23,6 +23,7 @@ import {
} from '@nestjs/swagger';
import { IItemsFilter } from './types/Items.types';
import { CreateItemDto, EditItemDto } from './dtos/Item.dto';
import { GetItemsQueryDto } from './dtos/GetItemsQuery.dto';
@Controller('/items')
@UseGuards(SubscriptionGuard)
@@ -99,7 +100,7 @@ export class ItemsController extends TenantController {
type: Boolean,
description: 'Filter for inactive items',
})
async getItems(@Query() filterDTO: IItemsFilter): Promise<any> {
async getItems(@Query() filterDTO: GetItemsQueryDto): Promise<any> {
return this.itemsApplication.getItems(filterDTO);
}

View File

@@ -12,6 +12,7 @@ import { Injectable } from '@nestjs/common';
import { GetItemsService } from './GetItems.service';
import { IItemsFilter } from './types/Items.types';
import { EditItemDto, CreateItemDto } from './dtos/Item.dto';
import { GetItemsQueryDto } from './dtos/GetItemsQuery.dto';
@Injectable()
export class ItemsApplicationService {
@@ -94,7 +95,7 @@ export class ItemsApplicationService {
* Retrieves the paginated filterable items list.
* @param {Partial<IItemsFilter>} filterDTO
*/
async getItems(filterDTO: Partial<IItemsFilter>) {
async getItems(filterDTO: Partial<GetItemsQueryDto>) {
return this.getItemsService.getItems(filterDTO);
}

View File

@@ -0,0 +1,22 @@
import { ToNumber } from '@/common/decorators/Validators';
import { DynamicFilterQueryDto } from '@/modules/DynamicListing/dtos/DynamicFilterQuery.dto';
import { parseBoolean } from '@/utils/parse-boolean';
import { Transform, Type } from 'class-transformer';
import { IsBoolean, IsInt, IsOptional } from 'class-validator';
export class GetItemsQueryDto extends DynamicFilterQueryDto {
@IsOptional()
@IsInt()
@ToNumber()
page?: number;
@IsOptional()
@IsInt()
@ToNumber()
pageSize?: number;
@IsOptional()
@Transform((param) => parseBoolean(param.value, false))
@IsBoolean()
inactiveMode?: boolean;
}