mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-15 20:30:33 +00:00
refactor(nestjs): list resources
This commit is contained in:
@@ -143,7 +143,7 @@ export class AccountsController {
|
||||
status: 200,
|
||||
description: 'The accounts have been successfully retrieved.',
|
||||
})
|
||||
async getAccounts(@Query() filter: IAccountsFilter) {
|
||||
async getAccounts(@Query() filter: Partial<IAccountsFilter>) {
|
||||
return this.accountsApplication.getAccounts(filter);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ export class AccountsApplication {
|
||||
* @returns {Promise<{ accounts: IAccountResponse[]; filterMeta: IFilterMeta }>}
|
||||
*/
|
||||
public getAccounts = (
|
||||
filterDTO: IAccountsFilter,
|
||||
filterDTO: Partial<IAccountsFilter>,
|
||||
): Promise<{ accounts: Account[]; filterMeta: IFilterMeta }> => {
|
||||
return this.getAccountsService.getAccountsList(filterDTO);
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import * as R from 'ramda';
|
||||
import { IAccountsFilter } from './Accounts.types';
|
||||
import { IAccountsFilter, IAccountsStructureType } from './Accounts.types';
|
||||
import { DynamicListService } from '../DynamicListing/DynamicList.service';
|
||||
import { AccountTransformer } from './Account.transformer';
|
||||
import { TransformerInjectable } from '../Transformer/TransformerInjectable.service';
|
||||
@@ -26,10 +26,17 @@ export class GetAccountsService {
|
||||
* @returns {Promise<{ accounts: IAccountResponse[]; filterMeta: IFilterMeta }>}
|
||||
*/
|
||||
public async getAccountsList(
|
||||
filterDTO: IAccountsFilter,
|
||||
filterDto: Partial<IAccountsFilter>,
|
||||
): Promise<{ accounts: Account[]; filterMeta: IFilterMeta }> {
|
||||
const parsedFilterDto = {
|
||||
sortOrder: 'desc',
|
||||
columnSortBy: 'created_at',
|
||||
inactiveMode: false,
|
||||
structure: IAccountsStructureType.Tree,
|
||||
...filterDto,
|
||||
};
|
||||
// Parses the stringified filter roles.
|
||||
const filter = this.parseListFilterDTO(filterDTO);
|
||||
const filter = this.parseListFilterDTO(parsedFilterDto);
|
||||
|
||||
// Dynamic list service.
|
||||
const dynamicList = await this.dynamicListService.dynamicList(
|
||||
@@ -49,7 +56,7 @@ export class GetAccountsService {
|
||||
const transformedAccounts = await this.transformerService.transform(
|
||||
accounts,
|
||||
new AccountTransformer(),
|
||||
{ accountsGraph, structure: filterDTO.structure },
|
||||
{ accountsGraph, structure: parsedFilterDto.structure },
|
||||
);
|
||||
|
||||
return {
|
||||
|
||||
@@ -56,7 +56,7 @@ export class BillsApplication {
|
||||
* Retrieve bills data table list.
|
||||
* @param {IBillsFilter} billsFilter -
|
||||
*/
|
||||
public getBills(filterDTO: IBillsFilter) {
|
||||
public getBills(filterDTO: Partial<IBillsFilter>) {
|
||||
return this.getBillsService.getBills(filterDTO);
|
||||
}
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ export class BillsController {
|
||||
type: Number,
|
||||
description: 'The bill id',
|
||||
})
|
||||
getBills(@Query() filterDTO: IBillsFilter) {
|
||||
getBills(@Query() filterDTO: Partial<IBillsFilter>) {
|
||||
return this.billsApplication.getBills(filterDTO);
|
||||
}
|
||||
|
||||
|
||||
@@ -21,13 +21,20 @@ export class GetBillsService {
|
||||
* Retrieve bills data table list.
|
||||
* @param {IBillsFilter} billsFilter -
|
||||
*/
|
||||
public async getBills(filterDTO: IBillsFilter): Promise<{
|
||||
public async getBills(filterDTO: Partial<IBillsFilter>): Promise<{
|
||||
bills: Bill;
|
||||
pagination: IPaginationMeta;
|
||||
filterMeta: IFilterMeta;
|
||||
}> {
|
||||
const _filterDto = {
|
||||
page: 1,
|
||||
pageSize: 12,
|
||||
sortOrder: 'desc',
|
||||
columnSortBy: 'created_at',
|
||||
...filterDTO,
|
||||
};
|
||||
// Parses bills list filter DTO.
|
||||
const filter = this.parseListFilterDTO(filterDTO);
|
||||
const filter = this.parseListFilterDTO(_filterDto);
|
||||
|
||||
// Dynamic list service.
|
||||
const dynamicFilter = await this.dynamicListService.dynamicList(
|
||||
@@ -42,7 +49,7 @@ export class GetBillsService {
|
||||
dynamicFilter.buildQuery()(builder);
|
||||
|
||||
// Filter query.
|
||||
filterDTO?.filterQuery && filterDTO?.filterQuery(builder);
|
||||
_filterDto?.filterQuery && _filterDto?.filterQuery(builder);
|
||||
})
|
||||
.pagination(filter.page - 1, filter.pageSize);
|
||||
|
||||
|
||||
@@ -6,9 +6,13 @@ import {
|
||||
Param,
|
||||
Post,
|
||||
Put,
|
||||
Query,
|
||||
} from '@nestjs/common';
|
||||
import { CustomersApplication } from './CustomersApplication.service';
|
||||
import { ICustomerOpeningBalanceEditDTO } from './types/Customers.types';
|
||||
import {
|
||||
ICustomerOpeningBalanceEditDTO,
|
||||
ICustomersFilter,
|
||||
} from './types/Customers.types';
|
||||
import { ApiOperation, ApiTags } from '@nestjs/swagger';
|
||||
import { CreateCustomerDto } from './dtos/CreateCustomer.dto';
|
||||
import { EditCustomerDto } from './dtos/EditCustomer.dto';
|
||||
@@ -24,6 +28,12 @@ export class CustomersController {
|
||||
return this.customersApplication.getCustomer(customerId);
|
||||
}
|
||||
|
||||
@Get()
|
||||
@ApiOperation({ summary: 'Retrieves the customers paginated list.' })
|
||||
getCustomers(@Query() filterDTO: Partial<ICustomersFilter>) {
|
||||
return this.customersApplication.getCustomers(filterDTO);
|
||||
}
|
||||
|
||||
@Post()
|
||||
@ApiOperation({ summary: 'Create a new customer.' })
|
||||
createCustomer(@Body() customerDTO: CreateCustomerDto) {
|
||||
|
||||
@@ -76,7 +76,7 @@ export class CustomersApplication {
|
||||
* Retrieve customers paginated list.
|
||||
* @param {ICustomersFilter} filter - Cusotmers filter.
|
||||
*/
|
||||
public getCustomers = (filterDTO: ICustomersFilter) => {
|
||||
public getCustomers = (filterDTO: Partial<ICustomersFilter>) => {
|
||||
return this.getCustomersService.getCustomersList(filterDTO);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -34,10 +34,18 @@ export class GetCustomers {
|
||||
* @returns {Promise<GetCustomersResponse>}
|
||||
*/
|
||||
public async getCustomersList(
|
||||
filterDTO: ICustomersFilter,
|
||||
filterDto: Partial<ICustomersFilter>,
|
||||
): Promise<GetCustomersResponse> {
|
||||
const _filterDto = {
|
||||
inactiveMode: false,
|
||||
sortOrder: 'desc',
|
||||
columnSortBy: 'created_at',
|
||||
page: 1,
|
||||
pageSize: 12,
|
||||
...filterDto,
|
||||
};
|
||||
// Parses customers list filter DTO.
|
||||
const filter = this.parseCustomersListFilterDTO(filterDTO);
|
||||
const filter = this.parseCustomersListFilterDTO(_filterDto);
|
||||
|
||||
const dynamicList = await this.dynamicListService.dynamicList(
|
||||
this.customerModel(),
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import { BaseModel } from '@/models/Model';
|
||||
|
||||
export type ISortOrder = 'DESC' | 'ASC';
|
||||
export enum ISortOrder {
|
||||
DESC = 'DESC',
|
||||
ASC = 'ASC'
|
||||
}
|
||||
|
||||
export interface IDynamicFilter {
|
||||
setModel(model: typeof BaseModel): void;
|
||||
@@ -18,7 +21,7 @@ export interface IFilterRole {
|
||||
export interface IDynamicListFilter {
|
||||
customViewId?: number;
|
||||
filterRoles?: IFilterRole[];
|
||||
columnSortBy: ISortOrder;
|
||||
columnSortBy: string;
|
||||
sortOrder: ISortOrder;
|
||||
stringifiedFilterRoles?: string;
|
||||
searchKeyword?: string;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { castArray, isEmpty } from 'lodash';
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { IDynamicListFilter } from './DynamicFilter/DynamicFilter.types';
|
||||
import { DynamicListSortBy } from './DynamicListSortBy.service';
|
||||
import { DynamicListSearch } from './DynamicListSearch.service';
|
||||
import { DynamicListCustomView } from './DynamicListCustomView.service';
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { DynamicListFilterRoles } from './DynamicListFilterRoles.service';
|
||||
import { DynamicFilter } from './DynamicFilter';
|
||||
import { MetableModel } from './types/DynamicList.types';
|
||||
|
||||
@@ -3,7 +3,6 @@ import { ISortOrder } from './DynamicFilter/DynamicFilter.types';
|
||||
import { ERRORS } from './constants';
|
||||
import { DynamicFilterSortBy } from './DynamicFilter';
|
||||
import { ServiceError } from '../Items/ServiceError';
|
||||
import { BaseModel } from '@/models/Model';
|
||||
import { DynamicFilterAbstractor } from './DynamicFilter/DynamicFilterAbstractor';
|
||||
import { MetableModel } from './types/DynamicList.types';
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ import {
|
||||
import { OnEvent } from '@nestjs/event-emitter';
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { EventTrackerService } from '../EventTracker.service';
|
||||
|
||||
import { events } from '@/common/events/events';
|
||||
|
||||
@Injectable()
|
||||
export class TransactionsLockingEventsTracker {
|
||||
constructor(public readonly posthog: EventTrackerService) {}
|
||||
|
||||
@@ -69,7 +69,7 @@ export class ExpensesApplication {
|
||||
* Retrieve expenses paginated list.
|
||||
* @param {IExpensesFilter} expensesFilter
|
||||
*/
|
||||
public getExpenses(filterDTO: IExpensesFilter) {
|
||||
public getExpenses(filterDTO: Partial<IExpensesFilter>) {
|
||||
return this.getExpensesService.getExpensesList(filterDTO);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,13 +23,20 @@ export class GetExpensesService {
|
||||
* @param {IExpensesFilter} expensesFilter
|
||||
* @return {IExpense[]}
|
||||
*/
|
||||
public async getExpensesList(filterDTO: IExpensesFilter): Promise<{
|
||||
public async getExpensesList(filterDto: Partial<IExpensesFilter>): Promise<{
|
||||
expenses: Expense[];
|
||||
pagination: IPaginationMeta;
|
||||
filterMeta: IFilterMeta;
|
||||
}> {
|
||||
const _filterDto = {
|
||||
sortOrder: 'desc',
|
||||
columnSortBy: 'created_at',
|
||||
page: 1,
|
||||
pageSize: 12,
|
||||
...filterDto,
|
||||
};
|
||||
// Parses list filter DTO.
|
||||
const filter = this.parseListFilterDTO(filterDTO);
|
||||
const filter = this.parseListFilterDTO(_filterDto);
|
||||
|
||||
// Dynamic list service.
|
||||
const dynamicList = await this.dynamicListService.dynamicList(
|
||||
@@ -44,7 +51,7 @@ export class GetExpensesService {
|
||||
builder.withGraphFetched('categories.expenseAccount');
|
||||
|
||||
dynamicList.buildQuery()(builder);
|
||||
filterDTO?.filterQuery && filterDTO?.filterQuery(builder);
|
||||
_filterDto?.filterQuery && _filterDto?.filterQuery(builder);
|
||||
})
|
||||
.pagination(filter.page - 1, filter.pageSize);
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ export class ItemCategoryApplication {
|
||||
* @param {IItemCategoriesFilter} filterDTO - The item categories filter DTO.
|
||||
* @returns {Promise<GetItemCategoriesResponse>}
|
||||
*/
|
||||
public getItemCategories(filterDTO: IItemCategoriesFilter) {
|
||||
public getItemCategories(filterDTO: Partial<IItemCategoriesFilter>) {
|
||||
return this.getItemCategoriesService.getItemCategories(filterDTO);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ export class ItemCategoryController {
|
||||
@Get()
|
||||
@ApiOperation({ summary: 'Retrieves the item categories.' })
|
||||
async getItemCategories(
|
||||
@Query() filterDTO: IItemCategoriesFilter,
|
||||
@Query() filterDTO: Partial<IItemCategoriesFilter>,
|
||||
): Promise<GetItemCategoriesResponse> {
|
||||
return this.itemCategoryApplication.getItemCategories(filterDTO);
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import {
|
||||
IItemCategoriesFilter,
|
||||
} from '../ItemCategory.interfaces';
|
||||
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
|
||||
import { ISortOrder } from '@/modules/DynamicListing/DynamicFilter/DynamicFilter.types';
|
||||
|
||||
export class GetItemCategoriesService {
|
||||
constructor(
|
||||
@@ -34,16 +35,21 @@ export class GetItemCategoriesService {
|
||||
* @returns {Promise<GetItemCategoriesResponse>}
|
||||
*/
|
||||
public async getItemCategories(
|
||||
filterDTO: IItemCategoriesFilter,
|
||||
filterDto: Partial<IItemCategoriesFilter>,
|
||||
): Promise<GetItemCategoriesResponse> {
|
||||
const _filterDto = {
|
||||
sortOrder: ISortOrder.ASC,
|
||||
columnSortBy: 'created_at',
|
||||
...filterDto,
|
||||
};
|
||||
// Parses list filter DTO.
|
||||
const filter = this.parsesListFilterDTO(filterDTO);
|
||||
const filter = this.parsesListFilterDTO(_filterDto);
|
||||
|
||||
// Dynamic list service.
|
||||
// const dynamicList = await this.dynamicListService.dynamicList(
|
||||
// this.itemCategoryModel(),
|
||||
// filter,
|
||||
// );
|
||||
const dynamicList = await this.dynamicListService.dynamicList(
|
||||
this.itemCategoryModel(),
|
||||
filter,
|
||||
);
|
||||
// Items categories.
|
||||
const itemCategories = await this.itemCategoryModel()
|
||||
.query()
|
||||
@@ -53,8 +59,7 @@ export class GetItemCategoriesService {
|
||||
'*',
|
||||
this.itemCategoryModel().relatedQuery('items').count().as('count'),
|
||||
);
|
||||
|
||||
// dynamicList.buildQuery()(query);
|
||||
dynamicList.buildQuery()(query);
|
||||
});
|
||||
|
||||
return { itemCategories };
|
||||
|
||||
@@ -6,12 +6,14 @@ import { Item } from './models/Item';
|
||||
import { IItemsFilter } from './types/Items.types';
|
||||
import { ItemTransformer } from './Item.transformer';
|
||||
import { TenantModelProxy } from '../System/models/TenantBaseModel';
|
||||
import { ISortOrder } from '../DynamicListing/DynamicFilter/DynamicFilter.types';
|
||||
|
||||
@Injectable()
|
||||
export class GetItemsService {
|
||||
constructor(
|
||||
private readonly dynamicListService: DynamicListService,
|
||||
private readonly transformer: TransformerInjectable,
|
||||
|
||||
@Inject(Item.name)
|
||||
private readonly itemModel: TenantModelProxy<typeof Item>,
|
||||
) {}
|
||||
@@ -30,9 +32,17 @@ export class GetItemsService {
|
||||
* Retrieves items datatable list.
|
||||
* @param {IItemsFilter} itemsFilter - Items filter.
|
||||
*/
|
||||
public async getItems(filterDTO: IItemsFilter) {
|
||||
public async getItems(filterDto: Partial<IItemsFilter>) {
|
||||
const _filterDto = {
|
||||
sortOrder: ISortOrder.DESC,
|
||||
columnSortBy: 'created_at',
|
||||
page: 1,
|
||||
pageSize: 12,
|
||||
inactiveMode: false,
|
||||
...filterDto,
|
||||
};
|
||||
// Parses items list filter DTO.
|
||||
const filter = this.parseItemsListFilterDTO(filterDTO);
|
||||
const filter = this.parseItemsListFilterDTO(_filterDto);
|
||||
|
||||
// Dynamic list service.
|
||||
const dynamicFilter = await this.dynamicListService.dynamicList(
|
||||
|
||||
@@ -92,10 +92,10 @@ export class ItemsApplicationService {
|
||||
|
||||
/**
|
||||
* Retrieves the paginated filterable items list.
|
||||
* @param {IItemsFilter} filterDTO
|
||||
* @param {Partial<IItemsFilter>} filterDTO
|
||||
*/
|
||||
async getItems(filterDTO: IItemsFilter) {
|
||||
return this.getItemsService.getItems(filterDTO)
|
||||
async getItems(filterDTO: Partial<IItemsFilter>) {
|
||||
return this.getItemsService.getItems(filterDTO);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
export const ItemMeta = {
|
||||
importable: true,
|
||||
exportable: true,
|
||||
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
Param,
|
||||
Post,
|
||||
Put,
|
||||
Query,
|
||||
} from '@nestjs/common';
|
||||
import { ManualJournalsApplication } from './ManualJournalsApplication.service';
|
||||
import { ApiOperation, ApiParam, ApiResponse, ApiTags } from '@nestjs/swagger';
|
||||
@@ -13,6 +14,7 @@ import {
|
||||
CreateManualJournalDto,
|
||||
EditManualJournalDto,
|
||||
} from './dtos/ManualJournal.dto';
|
||||
import { IManualJournalsFilter } from './types/ManualJournals.types';
|
||||
|
||||
@Controller('manual-journals')
|
||||
@ApiTags('manual-journals')
|
||||
@@ -98,4 +100,19 @@ export class ManualJournalsController {
|
||||
public getManualJournal(@Param('id') manualJournalId: number) {
|
||||
return this.manualJournalsApplication.getManualJournal(manualJournalId);
|
||||
}
|
||||
|
||||
@Get()
|
||||
@ApiOperation({ summary: 'Retrieves the manual journals paginated list.' })
|
||||
@ApiResponse({
|
||||
status: 200,
|
||||
description: 'The manual journal details have been successfully retrieved.',
|
||||
})
|
||||
@ApiResponse({ status: 404, description: 'The manual journal not found.' })
|
||||
public getManualJournals(
|
||||
@Query() filterDto: Partial<IManualJournalsFilter>
|
||||
) {
|
||||
return this.manualJournalsApplication.getManualJournals(filterDto);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ export class ManualJournalsApplication {
|
||||
* Retrieves the paginated manual journals.
|
||||
* @param {IManualJournalsFilter} filterDTO
|
||||
*/
|
||||
public getManualJournals = (filterDTO: IManualJournalsFilter) => {
|
||||
public getManualJournals = (filterDTO: Partial<IManualJournalsFilter>) => {
|
||||
return this.getManualJournalsService.getManualJournals(filterDTO);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -31,14 +31,21 @@ export class GetManualJournals {
|
||||
* @param {IManualJournalsFilter} filter -
|
||||
*/
|
||||
public getManualJournals = async (
|
||||
filterDTO: IManualJournalsFilter,
|
||||
filterDTO: Partial<IManualJournalsFilter>,
|
||||
): Promise<{
|
||||
manualJournals: ManualJournal[];
|
||||
pagination: IPaginationMeta;
|
||||
filterMeta: IFilterMeta;
|
||||
}> => {
|
||||
const _filterDto = {
|
||||
sortOrder: 'desc',
|
||||
columnSortBy: 'created_at',
|
||||
page: 1,
|
||||
pageSize: 12,
|
||||
...filterDTO,
|
||||
};
|
||||
// Parses filter DTO.
|
||||
const filter = this.parseListFilterDTO(filterDTO);
|
||||
const filter = this.parseListFilterDTO(_filterDto);
|
||||
|
||||
// Dynamic service.
|
||||
const dynamicService = await this.dynamicListService.dynamicList(
|
||||
|
||||
@@ -77,7 +77,7 @@ export class PaymentReceivesApplication {
|
||||
* @param {IPaymentsReceivedFilter} filterDTO
|
||||
* @returns
|
||||
*/
|
||||
public async getPaymentsReceived(filterDTO: IPaymentsReceivedFilter) {
|
||||
public async getPaymentsReceived(filterDTO: Partial<IPaymentsReceivedFilter>) {
|
||||
return this.getPaymentsReceivedService.getPaymentReceives(filterDTO);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
@@ -17,7 +18,6 @@ import {
|
||||
IPaymentsReceivedFilter,
|
||||
PaymentReceiveMailOptsDTO,
|
||||
} from './types/PaymentReceived.types';
|
||||
import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
|
||||
|
||||
@Controller('payments-received')
|
||||
@ApiTags('payments-received')
|
||||
@@ -88,7 +88,7 @@ export class PaymentReceivesController {
|
||||
|
||||
@Get()
|
||||
@ApiOperation({ summary: 'Retrieves the payment received list.' })
|
||||
public getPaymentsReceived(@Query() filterDTO: IPaymentsReceivedFilter) {
|
||||
public getPaymentsReceived(@Query() filterDTO: Partial<IPaymentsReceivedFilter>) {
|
||||
return this.paymentReceivesApplication.getPaymentsReceived(filterDTO);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,13 +24,22 @@ export class GetPaymentsReceivedService {
|
||||
* Retrieve payment receives paginated and filterable list.
|
||||
* @param {IPaymentsReceivedFilter} filterDTO
|
||||
*/
|
||||
public async getPaymentReceives(filterDTO: IPaymentsReceivedFilter): Promise<{
|
||||
public async getPaymentReceives(
|
||||
filterDTO: Partial<IPaymentsReceivedFilter>,
|
||||
): Promise<{
|
||||
paymentReceives: PaymentReceived[];
|
||||
pagination: IPaginationMeta;
|
||||
filterMeta: IFilterMeta;
|
||||
}> {
|
||||
const _filterDto = {
|
||||
sortOrder: 'desc',
|
||||
columnSortBy: 'created_at',
|
||||
page: 1,
|
||||
pageSize: 12,
|
||||
...filterDTO,
|
||||
};
|
||||
// Parses filter DTO.
|
||||
const filter = this.parseListFilterDTO(filterDTO);
|
||||
const filter = this.parseListFilterDTO(_filterDto);
|
||||
|
||||
// Dynamic list service.
|
||||
const dynamicList = await this.dynamicListService.dynamicList(
|
||||
@@ -44,7 +53,7 @@ export class GetPaymentsReceivedService {
|
||||
builder.withGraphFetched('depositAccount');
|
||||
|
||||
dynamicList.buildQuery()(builder);
|
||||
filterDTO?.filterQuery && filterDTO.filterQuery(builder as any);
|
||||
_filterDto?.filterQuery && _filterDto.filterQuery(builder as any);
|
||||
})
|
||||
.pagination(filter.page - 1, filter.pageSize);
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ export class SaleEstimatesApplication {
|
||||
* @param {ISalesEstimatesFilter} filterDTO - Sales estimates filter DTO.
|
||||
* @returns
|
||||
*/
|
||||
public getSaleEstimates(filterDTO: ISalesEstimatesFilter) {
|
||||
public getSaleEstimates(filterDTO: Partial<ISalesEstimatesFilter>) {
|
||||
return this.getSaleEstimatesService.getEstimates(filterDTO);
|
||||
}
|
||||
|
||||
|
||||
@@ -22,13 +22,22 @@ export class GetSaleEstimatesService {
|
||||
* Retrieves estimates filterable and paginated list.
|
||||
* @param {IEstimatesFilter} estimatesFilter -
|
||||
*/
|
||||
public async getEstimates(filterDTO: ISalesEstimatesFilter): Promise<{
|
||||
public async getEstimates(
|
||||
filterDTO: Partial<ISalesEstimatesFilter>,
|
||||
): Promise<{
|
||||
salesEstimates: SaleEstimate[];
|
||||
pagination: IPaginationMeta;
|
||||
filterMeta: IFilterMeta;
|
||||
}> {
|
||||
const _filterDto = {
|
||||
sortOrder: 'desc',
|
||||
columnSortBy: 'created_at',
|
||||
page: 1,
|
||||
pageSize: 12,
|
||||
...filterDTO,
|
||||
};
|
||||
// Parses filter DTO.
|
||||
const filter = this.parseListFilterDTO(filterDTO);
|
||||
const filter = this.parseListFilterDTO(_filterDto);
|
||||
|
||||
// Dynamic list service.
|
||||
const dynamicFilter = await this.dynamicListService.dynamicList(
|
||||
@@ -43,7 +52,7 @@ export class GetSaleEstimatesService {
|
||||
builder.withGraphFetched('entries.item');
|
||||
|
||||
dynamicFilter.buildQuery()(builder);
|
||||
filterDTO?.filterQuery && filterDTO?.filterQuery(builder);
|
||||
_filterDto?.filterQuery && _filterDto?.filterQuery(builder);
|
||||
})
|
||||
.pagination(filter.page - 1, filter.pageSize);
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ export class SaleInvoiceApplication {
|
||||
* @param {ISalesInvoicesFilter} filterDTO
|
||||
* @returns {Promise<{ salesInvoices: SaleInvoice[]; pagination: IPaginationMeta; filterMeta: IFilterMeta; }>}
|
||||
*/
|
||||
public getSaleInvoices(filterDTO: ISalesInvoicesFilter) {
|
||||
public getSaleInvoices(filterDTO: Partial<ISalesInvoicesFilter>) {
|
||||
return this.getSaleInvoicesService.getSaleInvoices(filterDTO);
|
||||
}
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ export class SaleInvoicesController {
|
||||
status: 200,
|
||||
description: 'The sale invoices have been successfully retrieved.',
|
||||
})
|
||||
getSaleInvoices(@Query() filterDTO: ISalesInvoicesFilter) {
|
||||
getSaleInvoices(@Query() filterDTO: Partial<ISalesInvoicesFilter>) {
|
||||
return this.saleInvoiceApplication.getSaleInvoices(filterDTO);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,13 +24,22 @@ export class GetSaleInvoicesService {
|
||||
* @param {ISalesInvoicesFilter} filterDTO -
|
||||
* @returns {Promise<{ salesInvoices: SaleInvoice[]; pagination: IPaginationMeta; filterMeta: IFilterMeta; }>}
|
||||
*/
|
||||
public async getSaleInvoices(filterDTO: ISalesInvoicesFilter): Promise<{
|
||||
public async getSaleInvoices(
|
||||
filterDTO: Partial<ISalesInvoicesFilter>,
|
||||
): Promise<{
|
||||
salesInvoices: SaleInvoice[];
|
||||
pagination: IPaginationMeta;
|
||||
filterMeta: IFilterMeta;
|
||||
}> {
|
||||
const _filterDto = {
|
||||
sortOrder: 'desc',
|
||||
columnSortBy: 'created_at',
|
||||
page: 1,
|
||||
pageSize: 12,
|
||||
...filterDTO,
|
||||
};
|
||||
// Parses stringified filter roles.
|
||||
const filter = this.parseListFilterDTO(filterDTO);
|
||||
const filter = this.parseListFilterDTO(_filterDto);
|
||||
|
||||
// Dynamic list service.
|
||||
const dynamicFilter = await this.dynamicListService.dynamicList(
|
||||
@@ -44,7 +53,7 @@ export class GetSaleInvoicesService {
|
||||
builder.withGraphFetched('customer');
|
||||
|
||||
dynamicFilter.buildQuery()(builder);
|
||||
filterDTO?.filterQuery?.(builder as any);
|
||||
_filterDto?.filterQuery?.(builder as any);
|
||||
})
|
||||
.pagination(filter.page - 1, filter.pageSize);
|
||||
|
||||
|
||||
@@ -23,9 +23,10 @@ export class SaleReceiptBrandingTemplate {
|
||||
public async getSaleReceiptBrandingTemplate(templateId: number) {
|
||||
const template =
|
||||
await this.getPdfTemplateService.getPdfTemplate(templateId);
|
||||
|
||||
// Retrieves the organization branding attributes.
|
||||
const commonOrgBrandingAttrs =
|
||||
await this.getOrgBrandingAttributes.getOrganizationBrandingAttributes();
|
||||
await this.getOrgBrandingAttributes.execute();
|
||||
|
||||
// Merges the default branding attributes with organization common branding attrs.
|
||||
const organizationBrandingAttrs = {
|
||||
|
||||
@@ -24,7 +24,7 @@ export class VendorsController {
|
||||
|
||||
@Get()
|
||||
@ApiOperation({ summary: 'Retrieves the vendors.' })
|
||||
getVendors(@Query() filterDTO: IVendorsFilter) {
|
||||
getVendors(@Query() filterDTO: Partial<IVendorsFilter>) {
|
||||
return this.vendorsApplication.getVendors(filterDTO);
|
||||
}
|
||||
|
||||
|
||||
@@ -79,10 +79,10 @@ export class VendorsApplication {
|
||||
|
||||
/**
|
||||
* Retrieves the vendors paginated list.
|
||||
* @param {IVendorsFilter} filterDTO
|
||||
* @param {Partial<IVendorsFilter>} filterDTO
|
||||
* @returns {Promise<{ vendors: Vendor[], pagination: IPaginationMeta, filterMeta: IFilterMeta }>>}
|
||||
*/
|
||||
public getVendors(filterDTO: IVendorsFilter) {
|
||||
public getVendors(filterDTO: Partial<IVendorsFilter>) {
|
||||
return this.getVendorsService.getVendorsList(filterDTO);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,10 +28,18 @@ export class GetVendorsService {
|
||||
* @returns {Promise<GetVendorsResponse>}
|
||||
*/
|
||||
public async getVendorsList(
|
||||
filterDTO: IVendorsFilter,
|
||||
filterDto: Partial<IVendorsFilter>,
|
||||
): Promise<GetVendorsResponse> {
|
||||
const _filterDto = {
|
||||
inactiveMode: false,
|
||||
sortOrder: 'desc',
|
||||
columnSortBy: 'created_at',
|
||||
page: 1,
|
||||
pageSize: 12,
|
||||
...filterDto,
|
||||
};
|
||||
// Parses vendors list filter DTO.
|
||||
const filter = this.parseVendorsListFilterDTO(filterDTO);
|
||||
const filter = this.parseVendorsListFilterDTO(_filterDto);
|
||||
|
||||
// Dynamic list service.
|
||||
const dynamicList = await this.dynamicListService.dynamicList(
|
||||
|
||||
Reference in New Issue
Block a user