mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-19 22:30: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 { VendorsApplication } from './VendorsApplication.service';
|
||||
import {
|
||||
@@ -20,6 +21,11 @@ import { PublicRoute } from '../Auth/Jwt.guard';
|
||||
export class VendorsController {
|
||||
constructor(private vendorsApplication: VendorsApplication) {}
|
||||
|
||||
@Get()
|
||||
getVendors(@Query() filterDTO: IVendorsFilter) {
|
||||
return this.vendorsApplication.getVendors(filterDTO);
|
||||
}
|
||||
|
||||
@Get(':id')
|
||||
getVendor(@Param('id') vendorId: number) {
|
||||
return this.vendorsApplication.getVendor(vendorId);
|
||||
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
IVendorNewDTO,
|
||||
IVendorOpeningBalanceEditDTO,
|
||||
} from './types/Vendors.types';
|
||||
import { GetVendorsService } from './queries/GetVendors.service';
|
||||
|
||||
@Injectable()
|
||||
export class VendorsApplication {
|
||||
@@ -19,7 +20,7 @@ export class VendorsApplication {
|
||||
private deleteVendorService: DeleteVendorService,
|
||||
private editOpeningBalanceService: EditOpeningBalanceVendorService,
|
||||
private getVendorService: GetVendorService,
|
||||
// private getVendorsService: GetVendors,
|
||||
private getVendorsService: GetVendorsService,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -77,11 +78,10 @@ export class VendorsApplication {
|
||||
|
||||
/**
|
||||
* Retrieves the vendors paginated list.
|
||||
* @param {number} tenantId
|
||||
* @param {IVendorsFilter} filterDTO
|
||||
* @returns
|
||||
* @returns {Promise<{vendors: Vendor[], pagination: IPaginationMeta, filterMeta: IFilterMeta}>>}
|
||||
*/
|
||||
// public getVendors = (tenantId: number, filterDTO: IVendorsFilter) => {
|
||||
// return this.getVendorsService.getVendorsList(tenantId, filterDTO);
|
||||
// };
|
||||
public getVendors = (filterDTO: IVendorsFilter) => {
|
||||
return this.getVendorsService.getVendorsList(filterDTO);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
import * as R from 'ramda';
|
||||
import { Vendor } from '../models/Vendor';
|
||||
import { DynamicListService } from '@/modules/DynamicListing/DynamicList.service';
|
||||
import { TransformerInjectable } from '@/modules/Transformer/TransformerInjectable.service';
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import { IFilterMeta, IPaginationMeta } from '@/interfaces/Model';
|
||||
import { VendorTransfromer } from './VendorTransformer';
|
||||
|
||||
@Injectable()
|
||||
export class GetVendorsService {
|
||||
constructor(
|
||||
private dynamicListService: DynamicListService,
|
||||
private transformer: TransformerInjectable,
|
||||
|
||||
@Inject(Vendor.name) private vendorModel: typeof Vendor,
|
||||
) {}
|
||||
|
||||
/**
|
||||
* Retrieve vendors datatable list.
|
||||
* @param {IVendorsFilter} vendorsFilter - Vendors filter.
|
||||
*/
|
||||
public async getVendorsList(filterDTO: IVendorsFilter): Promise<{
|
||||
vendors: Vendor[];
|
||||
pagination: IPaginationMeta;
|
||||
filterMeta: IFilterMeta;
|
||||
}> {
|
||||
// Parses vendors list filter DTO.
|
||||
const filter = this.parseVendorsListFilterDTO(filterDTO);
|
||||
|
||||
// Dynamic list service.
|
||||
const dynamicList = await this.dynamicListService.dynamicList(
|
||||
this.vendorModel,
|
||||
filter,
|
||||
);
|
||||
// Vendors list.
|
||||
const { results, pagination } = await this.vendorModel
|
||||
.query()
|
||||
.onBuild((builder) => {
|
||||
dynamicList.buildQuery()(builder);
|
||||
|
||||
// Switches between active/inactive modes.
|
||||
builder.modify('inactiveMode', filter.inactiveMode);
|
||||
})
|
||||
.pagination(filter.page - 1, filter.pageSize);
|
||||
|
||||
// Transform the vendors.
|
||||
const transformedVendors = await this.transformer.transform(
|
||||
results,
|
||||
new VendorTransfromer(),
|
||||
);
|
||||
return {
|
||||
vendors: transformedVendors,
|
||||
pagination,
|
||||
filterMeta: dynamicList.getResponseMeta(),
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param filterDTO
|
||||
* @returns
|
||||
*/
|
||||
private parseVendorsListFilterDTO(filterDTO) {
|
||||
return R.compose(this.dynamicListService.parseStringifiedFilter)(filterDTO);
|
||||
}
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
// import * as R from 'ramda';
|
||||
// import { Service, Inject } from 'typedi';
|
||||
// import {
|
||||
// IFilterMeta,
|
||||
// IPaginationMeta,
|
||||
// IVendor,
|
||||
// IVendorsFilter,
|
||||
// } from '@/interfaces';
|
||||
// import HasTenancyService from '@/services/Tenancy/TenancyService';
|
||||
// import DynamicListingService from '@/services/DynamicListing/DynamicListService';
|
||||
// import VendorTransfromer from '../VendorTransformer';
|
||||
// import { TransformerInjectable } from '@/lib/Transformer/TransformerInjectable';
|
||||
|
||||
// @Service()
|
||||
// export class GetVendors {
|
||||
// @Inject()
|
||||
// private tenancy: HasTenancyService;
|
||||
|
||||
// @Inject()
|
||||
// private dynamicListService: DynamicListingService;
|
||||
|
||||
// @Inject()
|
||||
// private transformer: TransformerInjectable;
|
||||
|
||||
// /**
|
||||
// * Retrieve vendors datatable list.
|
||||
// * @param {number} tenantId - Tenant id.
|
||||
// * @param {IVendorsFilter} vendorsFilter - Vendors filter.
|
||||
// */
|
||||
// public async getVendorsList(
|
||||
// tenantId: number,
|
||||
// filterDTO: IVendorsFilter
|
||||
// ): Promise<{
|
||||
// vendors: IVendor[];
|
||||
// pagination: IPaginationMeta;
|
||||
// filterMeta: IFilterMeta;
|
||||
// }> {
|
||||
// const { Vendor } = this.tenancy.models(tenantId);
|
||||
|
||||
// // Parses vendors list filter DTO.
|
||||
// const filter = this.parseVendorsListFilterDTO(filterDTO);
|
||||
|
||||
// // Dynamic list service.
|
||||
// const dynamicList = await this.dynamicListService.dynamicList(
|
||||
// tenantId,
|
||||
// Vendor,
|
||||
// filter
|
||||
// );
|
||||
// // Vendors list.
|
||||
// const { results, pagination } = await Vendor.query()
|
||||
// .onBuild((builder) => {
|
||||
// dynamicList.buildQuery()(builder);
|
||||
|
||||
// // Switches between active/inactive modes.
|
||||
// builder.modify('inactiveMode', filter.inactiveMode);
|
||||
// })
|
||||
// .pagination(filter.page - 1, filter.pageSize);
|
||||
|
||||
// // Transform the vendors.
|
||||
// const transformedVendors = await this.transformer.transform(
|
||||
// tenantId,
|
||||
// results,
|
||||
// new VendorTransfromer()
|
||||
// );
|
||||
// return {
|
||||
// vendors: transformedVendors,
|
||||
// pagination,
|
||||
// filterMeta: dynamicList.getResponseMeta(),
|
||||
// };
|
||||
// }
|
||||
|
||||
// /**
|
||||
// *
|
||||
// * @param filterDTO
|
||||
// * @returns
|
||||
// */
|
||||
// private parseVendorsListFilterDTO(filterDTO) {
|
||||
// return R.compose(this.dynamicListService.parseStringifiedFilter)(filterDTO);
|
||||
// }
|
||||
// }
|
||||
Reference in New Issue
Block a user