feat: listing vendors and customers.

feat: items service events.
This commit is contained in:
Ahmed Bouhuolia
2020-10-15 21:27:51 +02:00
parent 899ea7a52d
commit 7397afe2a9
11 changed files with 119 additions and 26 deletions

View File

@@ -11,7 +11,9 @@ import {
IVendorNewDTO,
IVendorEditDTO,
IVendor,
IVendorsFilter
IVendorsFilter,
IPaginationMeta,
IFilterMeta
} from 'interfaces';
import { ServiceError } from 'exceptions';
import DynamicListingService from 'services/DynamicListing/DynamicListService';
@@ -226,14 +228,25 @@ export default class VendorsService {
* @param {number} tenantId - Tenant id.
* @param {IVendorsFilter} vendorsFilter - Vendors filter.
*/
public async getVendorsList(tenantId: number, vendorsFilter: IVendorsFilter) {
const { Vendor } = this.tenancy.models(tenantId);
public async getVendorsList(
tenantId: number,
vendorsFilter: IVendorsFilter
): Promise<{ vendors: IVendor[], pagination: IPaginationMeta, filterMeta: IFilterMeta }> {
const { Contact } = this.tenancy.models(tenantId);
const dynamicFilter = await this.dynamicListService.dynamicList(tenantId, Contact, vendorsFilter);
const dynamicFilter = await this.dynamicListService.dynamicList(tenantId, Vendor, vendorsFilter);
const vendors = await Vendor.query().onBuild((builder) => {
const { results, pagination } = await Contact.query().onBuild((builder) => {
builder.modify('vendor');
dynamicFilter.buildQuery()(builder);
});
return vendors;
}).pagination(
vendorsFilter.page - 1,
vendorsFilter.pageSize,
);
return {
vendors: results,
pagination,
filterMeta: dynamicFilter.getResponseMeta(),
};
}
}