Browse Source

Improve error handling

pull/1215/head
Thomas 3 years ago
parent
commit
c221a1d358
  1. 46
      apps/api/src/app/portfolio/portfolio-calculator.ts
  2. 10
      apps/api/src/app/portfolio/portfolio.service.ts

46
apps/api/src/app/portfolio/portfolio-calculator.ts

@ -432,30 +432,36 @@ export class PortfolioCalculator {
} }
} }
let minNetPerformance = new Big(0);
let maxNetPerformance = new Big(0);
const timelineInfoInterfaces: TimelineInfoInterface[] = await Promise.all( const timelineInfoInterfaces: TimelineInfoInterface[] = await Promise.all(
timelinePeriodPromises timelinePeriodPromises
); );
const minNetPerformance = timelineInfoInterfaces
.map((timelineInfo) => timelineInfo.minNetPerformance)
.filter((performance) => performance !== null)
.reduce((minPerformance, current) => {
if (minPerformance.lt(current)) {
return minPerformance;
} else {
return current;
}
});
const maxNetPerformance = timelineInfoInterfaces try {
.map((timelineInfo) => timelineInfo.maxNetPerformance) minNetPerformance = timelineInfoInterfaces
.filter((performance) => performance !== null) .map((timelineInfo) => timelineInfo.minNetPerformance)
.reduce((maxPerformance, current) => { .filter((performance) => performance !== null)
if (maxPerformance.gt(current)) { .reduce((minPerformance, current) => {
return maxPerformance; if (minPerformance.lt(current)) {
} else { return minPerformance;
return current; } else {
} return current;
}); }
});
maxNetPerformance = timelineInfoInterfaces
.map((timelineInfo) => timelineInfo.maxNetPerformance)
.filter((performance) => performance !== null)
.reduce((maxPerformance, current) => {
if (maxPerformance.gt(current)) {
return maxPerformance;
} else {
return current;
}
});
} catch {}
const timelinePeriods = timelineInfoInterfaces.map( const timelinePeriods = timelineInfoInterfaces.map(
(timelineInfo) => timelineInfo.timelinePeriods (timelineInfo) => timelineInfo.timelinePeriods

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

@ -327,10 +327,10 @@ export class PortfolioService {
} }
let isAllTimeHigh = timelineInfo.maxNetPerformance?.eq( let isAllTimeHigh = timelineInfo.maxNetPerformance?.eq(
lastItem?.netPerformance lastItem?.netPerformance ?? 0
); );
let isAllTimeLow = timelineInfo.minNetPerformance?.eq( let isAllTimeLow = timelineInfo.minNetPerformance?.eq(
lastItem?.netPerformance lastItem?.netPerformance ?? 0
); );
if (isAllTimeHigh && isAllTimeLow) { if (isAllTimeHigh && isAllTimeLow) {
isAllTimeHigh = false; isAllTimeHigh = false;
@ -466,7 +466,9 @@ export class PortfolioService {
holdings[item.symbol] = { holdings[item.symbol] = {
markets, markets,
allocationCurrent: value.div(totalValue).toNumber(), allocationCurrent: totalValue.eq(0)
? 0
: value.div(totalValue).toNumber(),
allocationInvestment: item.investment.div(totalInvestment).toNumber(), allocationInvestment: item.investment.div(totalInvestment).toNumber(),
assetClass: symbolProfile.assetClass, assetClass: symbolProfile.assetClass,
assetSubClass: symbolProfile.assetSubClass, assetSubClass: symbolProfile.assetSubClass,
@ -478,7 +480,7 @@ export class PortfolioService {
item.grossPerformancePercentage?.toNumber() ?? 0, item.grossPerformancePercentage?.toNumber() ?? 0,
investment: item.investment.toNumber(), investment: item.investment.toNumber(),
marketPrice: item.marketPrice, marketPrice: item.marketPrice,
marketState: dataProviderResponse.marketState, marketState: dataProviderResponse?.marketState ?? 'delayed',
name: symbolProfile.name, name: symbolProfile.name,
netPerformance: item.netPerformance?.toNumber() ?? 0, netPerformance: item.netPerformance?.toNumber() ?? 0,
netPerformancePercent: item.netPerformancePercentage?.toNumber() ?? 0, netPerformancePercent: item.netPerformancePercentage?.toNumber() ?? 0,

Loading…
Cancel
Save