mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-18 13:50:31 +00:00
refactor: dynamic list to nestjs
This commit is contained in:
@@ -6,6 +6,7 @@ import {
|
||||
Param,
|
||||
Post,
|
||||
Put,
|
||||
Query,
|
||||
} from '@nestjs/common';
|
||||
import { ExpensesApplication } from './ExpensesApplication.service';
|
||||
import {
|
||||
@@ -13,6 +14,7 @@ import {
|
||||
IExpenseEditDTO,
|
||||
} from './interfaces/Expenses.interface';
|
||||
import { PublicRoute } from '../Auth/Jwt.guard';
|
||||
import { IExpensesFilter } from './Expenses.types';
|
||||
|
||||
@Controller('expenses')
|
||||
@PublicRoute()
|
||||
@@ -59,6 +61,14 @@ export class ExpensesController {
|
||||
return this.expensesApplication.publishExpense(expenseId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the expense transaction details.
|
||||
*/
|
||||
@Get('')
|
||||
public getExpenses(@Query() filterDTO: IExpensesFilter) {
|
||||
return this.expensesApplication.getExpenses(filterDTO);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the expense transaction details.
|
||||
* @param {number} expenseId
|
||||
|
||||
@@ -15,6 +15,7 @@ import { ExpenseGLEntriesStorageService } from './subscribers/ExpenseGLEntriesSt
|
||||
import { ExpenseGLEntriesService } from './subscribers/ExpenseGLEntries.service';
|
||||
import { LedgerModule } from '../Ledger/Ledger.module';
|
||||
import { BranchesModule } from '../Branches/Branches.module';
|
||||
import { GetExpensesService } from './queries/GetExpenses.service';
|
||||
|
||||
@Module({
|
||||
imports: [LedgerModule, BranchesModule],
|
||||
@@ -35,7 +36,9 @@ import { BranchesModule } from '../Branches/Branches.module';
|
||||
TransformerInjectable,
|
||||
ExpensesWriteGLSubscriber,
|
||||
ExpenseGLEntriesStorageService,
|
||||
ExpenseGLEntriesService
|
||||
ExpenseGLEntriesService,
|
||||
GetExpensesService,
|
||||
],
|
||||
})
|
||||
export class ExpensesModule {}
|
||||
|
||||
|
||||
@@ -7,7 +7,9 @@ import { GetExpenseService } from './queries/GetExpense.service';
|
||||
import {
|
||||
IExpenseCreateDTO,
|
||||
IExpenseEditDTO,
|
||||
IExpensesFilter,
|
||||
} from './interfaces/Expenses.interface';
|
||||
import { GetExpensesService } from './queries/GetExpenses.service';
|
||||
|
||||
@Injectable()
|
||||
export class ExpensesApplication {
|
||||
@@ -17,7 +19,7 @@ export class ExpensesApplication {
|
||||
private readonly deleteExpenseService: DeleteExpense,
|
||||
private readonly publishExpenseService: PublishExpense,
|
||||
private readonly getExpenseService: GetExpenseService,
|
||||
// private readonly getExpensesService: GetExpenseService,
|
||||
private readonly getExpensesService: GetExpensesService,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -66,12 +68,11 @@ export class ExpensesApplication {
|
||||
return this.getExpenseService.getExpense(expenseId);
|
||||
};
|
||||
|
||||
// /**
|
||||
// * Retrieve expenses paginated list.
|
||||
// * @param {number} tenantId
|
||||
// * @param {IExpensesFilter} expensesFilter
|
||||
// */
|
||||
// public getExpenses = (tenantId: number, filterDTO: IExpensesFilter) => {
|
||||
// return this.getExpensesService.getExpensesList(tenantId, filterDTO);
|
||||
// };
|
||||
/**
|
||||
* Retrieve expenses paginated list.
|
||||
* @param {IExpensesFilter} expensesFilter
|
||||
*/
|
||||
public getExpenses = (filterDTO: IExpensesFilter) => {
|
||||
return this.getExpensesService.getExpensesList(filterDTO);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,81 +1,70 @@
|
||||
// import { Service, Inject } from 'typedi';
|
||||
// import * as R from 'ramda';
|
||||
// import {
|
||||
// IExpensesFilter,
|
||||
// IExpense,
|
||||
// IPaginationMeta,
|
||||
// IFilterMeta,
|
||||
// } from '@/interfaces';
|
||||
// import DynamicListingService from '@/services/DynamicListing/DynamicListService';
|
||||
// import HasTenancyService from '@/services/Tenancy/TenancyService';
|
||||
// import { ExpenseTransfromer } from './Expense.transformer';
|
||||
// import { TransformerInjectable } from '@/lib/Transformer/TransformerInjectable';
|
||||
import * as R from 'ramda';
|
||||
import { ExpenseTransfromer } from './Expense.transformer';
|
||||
import { DynamicListService } from '@/modules/DynamicListing/DynamicList.service';
|
||||
import { TransformerInjectable } from '@/modules/Transformer/TransformerInjectable.service';
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import { IExpensesFilter, IPaginationMeta } from '../Expenses.types';
|
||||
import { Expense } from '../models/Expense.model';
|
||||
import { IFilterMeta } from '@/interfaces/Model';
|
||||
|
||||
// @Service()
|
||||
// export class GetExpenses {
|
||||
// @Inject()
|
||||
// private dynamicListService: DynamicListingService;
|
||||
@Injectable()
|
||||
export class GetExpensesService {
|
||||
constructor(
|
||||
private readonly transformer: TransformerInjectable,
|
||||
private readonly dynamicListService: DynamicListService,
|
||||
|
||||
// @Inject()
|
||||
// private tenancy: HasTenancyService;
|
||||
@Inject(Expense.name)
|
||||
private readonly expense: typeof Expense,
|
||||
) {}
|
||||
|
||||
// @Inject()
|
||||
// private transformer: TransformerInjectable;
|
||||
/**
|
||||
* Retrieve expenses paginated list.
|
||||
* @param {IExpensesFilter} expensesFilter
|
||||
* @return {IExpense[]}
|
||||
*/
|
||||
public async getExpensesList(
|
||||
filterDTO: IExpensesFilter
|
||||
): Promise<{
|
||||
expenses: Expense[];
|
||||
pagination: IPaginationMeta;
|
||||
filterMeta: IFilterMeta;
|
||||
}> {
|
||||
// Parses list filter DTO.
|
||||
const filter = this.parseListFilterDTO(filterDTO);
|
||||
|
||||
// /**
|
||||
// * Retrieve expenses paginated list.
|
||||
// * @param {number} tenantId
|
||||
// * @param {IExpensesFilter} expensesFilter
|
||||
// * @return {IExpense[]}
|
||||
// */
|
||||
// public getExpensesList = async (
|
||||
// tenantId: number,
|
||||
// filterDTO: IExpensesFilter
|
||||
// ): Promise<{
|
||||
// expenses: IExpense[];
|
||||
// pagination: IPaginationMeta;
|
||||
// filterMeta: IFilterMeta;
|
||||
// }> => {
|
||||
// const { Expense } = this.tenancy.models(tenantId);
|
||||
// Dynamic list service.
|
||||
const dynamicList = await this.dynamicListService.dynamicList(
|
||||
this.expense,
|
||||
filter
|
||||
);
|
||||
// Retrieves the paginated results.
|
||||
const { results, pagination } = await this.expense.query()
|
||||
.onBuild((builder) => {
|
||||
builder.withGraphFetched('paymentAccount');
|
||||
builder.withGraphFetched('categories.expenseAccount');
|
||||
|
||||
// // Parses list filter DTO.
|
||||
// const filter = this.parseListFilterDTO(filterDTO);
|
||||
dynamicList.buildQuery()(builder);
|
||||
filterDTO?.filterQuery && filterDTO?.filterQuery(builder);
|
||||
})
|
||||
.pagination(filter.page - 1, filter.pageSize);
|
||||
|
||||
// // Dynamic list service.
|
||||
// const dynamicList = await this.dynamicListService.dynamicList(
|
||||
// tenantId,
|
||||
// Expense,
|
||||
// filter
|
||||
// );
|
||||
// // Retrieves the paginated results.
|
||||
// const { results, pagination } = await Expense.query()
|
||||
// .onBuild((builder) => {
|
||||
// builder.withGraphFetched('paymentAccount');
|
||||
// builder.withGraphFetched('categories.expenseAccount');
|
||||
// Transformes the expenses models to POJO.
|
||||
const expenses = await this.transformer.transform(
|
||||
results,
|
||||
new ExpenseTransfromer()
|
||||
);
|
||||
return {
|
||||
expenses,
|
||||
pagination,
|
||||
filterMeta: dynamicList.getResponseMeta(),
|
||||
};
|
||||
};
|
||||
|
||||
// dynamicList.buildQuery()(builder);
|
||||
// filterDTO?.filterQuery && filterDTO?.filterQuery(builder);
|
||||
// })
|
||||
// .pagination(filter.page - 1, filter.pageSize);
|
||||
|
||||
// // Transformes the expenses models to POJO.
|
||||
// const expenses = await this.transformer.transform(
|
||||
// tenantId,
|
||||
// results,
|
||||
// new ExpenseTransfromer()
|
||||
// );
|
||||
// return {
|
||||
// expenses,
|
||||
// pagination,
|
||||
// filterMeta: dynamicList.getResponseMeta(),
|
||||
// };
|
||||
// };
|
||||
|
||||
// /**
|
||||
// * Parses filter DTO of expenses list.
|
||||
// * @param filterDTO -
|
||||
// */
|
||||
// private parseListFilterDTO(filterDTO) {
|
||||
// return R.compose(this.dynamicListService.parseStringifiedFilter)(filterDTO);
|
||||
// }
|
||||
// }
|
||||
/**
|
||||
* Parses filter DTO of expenses list.
|
||||
* @param filterDTO -
|
||||
*/
|
||||
private parseListFilterDTO(filterDTO) {
|
||||
return R.compose(this.dynamicListService.parseStringifiedFilter)(filterDTO);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user