Browse Source

Feature/restructure portfolio report response (part 2) (#5282)

* Restructure response of portfolio report endpoint
pull/5288/head
Thomas Kaul 2 weeks ago
committed by GitHub
parent
commit
cb30ea2979
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 6
      apps/api/src/app/portfolio/portfolio.controller.ts
  2. 8
      apps/api/src/app/portfolio/portfolio.service.ts
  3. 6
      apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts
  4. 2
      libs/common/src/lib/interfaces/responses/portfolio-report.interface.ts

6
apps/api/src/app/portfolio/portfolio.controller.ts

@ -655,11 +655,11 @@ export class PortfolioController {
this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION') && this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION') &&
this.request.user.subscription.type === 'Basic' this.request.user.subscription.type === 'Basic'
) { ) {
for (const rule in report['x-ray'].rules) { for (const rule in report.xRay.rules) {
report['x-ray'].rules[rule] = null; report.xRay.rules[rule] = null;
} }
report['x-ray'].statistics = { report.xRay.statistics = {
rulesActiveCount: 0, rulesActiveCount: 0,
rulesFulfilledCount: 0 rulesFulfilledCount: 0
}; };

8
apps/api/src/app/portfolio/portfolio.service.ts

@ -1157,7 +1157,7 @@ export class PortfolioService {
}) })
).toNumber(); ).toNumber();
const rules: PortfolioReportResponse['x-ray']['rules'] = { const rules: PortfolioReportResponse['xRay']['rules'] = {
accountClusterRisk: accountClusterRisk:
summary.activityCount > 0 summary.activityCount > 0
? await this.rulesService.evaluate( ? await this.rulesService.evaluate(
@ -1313,7 +1313,7 @@ export class PortfolioService {
}; };
return { return {
'x-ray': { xRay: {
rules, rules,
statistics: this.getReportStatistics(rules) statistics: this.getReportStatistics(rules)
} }
@ -1737,8 +1737,8 @@ export class PortfolioService {
} }
private getReportStatistics( private getReportStatistics(
evaluatedRules: PortfolioReportResponse['x-ray']['rules'] evaluatedRules: PortfolioReportResponse['xRay']['rules']
): PortfolioReportResponse['x-ray']['statistics'] { ): PortfolioReportResponse['xRay']['statistics'] {
const rulesActiveCount = Object.values(evaluatedRules) const rulesActiveCount = Object.values(evaluatedRules)
.flat() .flat()
.filter((rule) => { .filter((rule) => {

6
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts

@ -47,7 +47,7 @@ export class GfXRayPageComponent {
public inactiveRules: PortfolioReportRule[]; public inactiveRules: PortfolioReportRule[];
public isLoading = false; public isLoading = false;
public regionalMarketClusterRiskRules: PortfolioReportRule[]; public regionalMarketClusterRiskRules: PortfolioReportRule[];
public statistics: PortfolioReportResponse['x-ray']['statistics']; public statistics: PortfolioReportResponse['xRay']['statistics'];
public user: User; public user: User;
private unsubscribeSubject = new Subject<void>(); private unsubscribeSubject = new Subject<void>();
@ -115,7 +115,7 @@ export class GfXRayPageComponent {
this.dataService this.dataService
.fetchPortfolioReport() .fetchPortfolioReport()
.pipe(takeUntil(this.unsubscribeSubject)) .pipe(takeUntil(this.unsubscribeSubject))
.subscribe(({ 'x-ray': { rules, statistics } }) => { .subscribe(({ xRay: { rules, statistics } }) => {
this.inactiveRules = this.mergeInactiveRules(rules); this.inactiveRules = this.mergeInactiveRules(rules);
this.statistics = statistics; this.statistics = statistics;
@ -161,7 +161,7 @@ export class GfXRayPageComponent {
} }
private mergeInactiveRules( private mergeInactiveRules(
rules: PortfolioReportResponse['x-ray']['rules'] rules: PortfolioReportResponse['xRay']['rules']
): PortfolioReportRule[] { ): PortfolioReportRule[] {
let inactiveRules: PortfolioReportRule[] = []; let inactiveRules: PortfolioReportRule[] = [];

2
libs/common/src/lib/interfaces/responses/portfolio-report.interface.ts

@ -1,7 +1,7 @@
import { PortfolioReportRule } from '../portfolio-report-rule.interface'; import { PortfolioReportRule } from '../portfolio-report-rule.interface';
export interface PortfolioReportResponse { export interface PortfolioReportResponse {
'x-ray': { xRay: {
rules: { [group: string]: PortfolioReportRule[] }; rules: { [group: string]: PortfolioReportRule[] };
statistics: { statistics: {
rulesActiveCount: number; rulesActiveCount: number;

Loading…
Cancel
Save