From 5314919545bb41c6dae308eaf663842febda715c Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Tue, 27 Sep 2022 20:27:19 +0200 Subject: [PATCH] Refactor filters Co-Authored-By: Zakaria YAHI <9142557+zakyahi@users.noreply.github.com> --- apps/client/src/app/services/data.service.ts | 185 +++++++------------ 1 file changed, 63 insertions(+), 122 deletions(-) diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index b725a1d05..bbe6b2e47 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -74,60 +74,19 @@ export class DataService { }: { filters?: Filter[]; }): Observable { - let params = new HttpParams(); - - if (filters?.length > 0) { - const { - ACCOUNT: filtersByAccount, - ASSET_CLASS: filtersByAssetClass, - TAG: filtersByTag - } = groupBy(filters, (filter) => { - return filter.type; - }); - - if (filtersByAccount) { - params = params.append( - 'accounts', - filtersByAccount - .map(({ id }) => { - return id; - }) - .join(',') - ); - } - - if (filtersByAssetClass) { - params = params.append( - 'assetClasses', - filtersByAssetClass - .map(({ id }) => { - return id; - }) - .join(',') - ); - } - - if (filtersByTag) { - params = params.append( - 'tags', - filtersByTag - .map(({ id }) => { - return id; - }) - .join(',') - ); - } - } - - return this.http.get('/api/v1/order', { params }).pipe( - map(({ activities }) => { - for (const activity of activities) { - activity.createdAt = parseISO(activity.createdAt); - activity.date = parseISO(activity.date); - } - return { activities }; + return this.http + .get('/api/v1/order', { + params: this.buildFiltersAsQueryParams({ filters }) }) - ); + .pipe( + map(({ activities }) => { + for (const activity of activities) { + activity.createdAt = parseISO(activity.createdAt); + activity.date = parseISO(activity.date); + } + return { activities }; + }) + ); } public fetchAdminData() { @@ -135,30 +94,8 @@ export class DataService { } public fetchAdminMarketData({ filters }: { filters?: Filter[] }) { - let params = new HttpParams(); - - if (filters?.length > 0) { - const { ASSET_SUB_CLASS: filtersByAssetSubClass } = groupBy( - filters, - (filter) => { - return filter.type; - } - ); - - if (filtersByAssetSubClass) { - params = params.append( - 'assetSubClasses', - filtersByAssetSubClass - .map(({ id }) => { - return id; - }) - .join(',') - ); - } - } - return this.http.get('/api/v1/admin/market-data', { - params + params: this.buildFiltersAsQueryParams({ filters }) }); } @@ -306,54 +243,9 @@ export class DataService { }: { filters?: Filter[]; }): Observable { - let params = new HttpParams(); - - if (filters?.length > 0) { - const { - ACCOUNT: filtersByAccount, - ASSET_CLASS: filtersByAssetClass, - TAG: filtersByTag - } = groupBy(filters, (filter) => { - return filter.type; - }); - - if (filtersByAccount) { - params = params.append( - 'accounts', - filtersByAccount - .map(({ id }) => { - return id; - }) - .join(',') - ); - } - - if (filtersByAssetClass) { - params = params.append( - 'assetClasses', - filtersByAssetClass - .map(({ id }) => { - return id; - }) - .join(',') - ); - } - - if (filtersByTag) { - params = params.append( - 'tags', - filtersByTag - .map(({ id }) => { - return id; - }) - .join(',') - ); - } - } - return this.http .get('/api/v1/portfolio/details', { - params + params: this.buildFiltersAsQueryParams({ filters }) }) .pipe( map((response) => { @@ -458,4 +350,53 @@ export class DataService { couponCode }); } + + private buildFiltersAsQueryParams({ filters }: { filters?: Filter[] }) { + let params = new HttpParams(); + + if (filters?.length > 0) { + const { + ACCOUNT: filtersByAccount, + ASSET_CLASS: filtersByAssetClass, + TAG: filtersByTag + } = groupBy(filters, (filter) => { + return filter.type; + }); + + if (filtersByAccount) { + params = params.append( + 'accounts', + filtersByAccount + .map(({ id }) => { + return id; + }) + .join(',') + ); + } + + if (filtersByAssetClass) { + params = params.append( + 'assetClasses', + filtersByAssetClass + .map(({ id }) => { + return id; + }) + .join(',') + ); + } + + if (filtersByTag) { + params = params.append( + 'tags', + filtersByTag + .map(({ id }) => { + return id; + }) + .join(',') + ); + } + } + + return params; + } }