Browse Source

Clean up Date.now()

pull/3393/head
Thomas Kaul 1 year ago
parent
commit
175261720a
  1. 4
      apps/api/src/app/portfolio/calculator/portfolio-calculator-test-utils.ts
  2. 34
      apps/api/src/app/portfolio/calculator/portfolio-calculator.ts
  3. 2
      apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-no-orders.spec.ts
  4. 3
      apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts
  5. 26
      libs/common/src/lib/calculation-helper.ts

4
apps/api/src/app/portfolio/calculator/portfolio-calculator-test-utils.ts

@ -2,13 +2,13 @@ export const activityDummyData = {
accountId: undefined,
accountUserId: undefined,
comment: undefined,
createdAt: new Date(Date.now()),
createdAt: new Date(),
currency: undefined,
feeInBaseCurrency: undefined,
id: undefined,
isDraft: false,
symbolProfileId: undefined,
updatedAt: new Date(Date.now()),
updatedAt: new Date(),
userId: undefined,
value: undefined,
valueInBaseCurrency: undefined

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

@ -97,7 +97,7 @@ export abstract class PortfolioCalculator {
this.dateRange = dateRange;
this.exchangeRateDataService = exchangeRateDataService;
let dateOfFirstActivity = new Date(Date.now());
let dateOfFirstActivity = new Date();
this.activities = activities
.map(
@ -114,10 +114,10 @@ export abstract class PortfolioCalculator {
dateOfFirstActivity = date;
}
if (isAfter(date, new Date(Date.now()))) {
if (isAfter(date, new Date())) {
// Adapt date to today if activity is in future (e.g. liability)
// to include it in the interval
date = endOfDay(new Date(Date.now()));
date = endOfDay(new Date());
}
return {
@ -172,7 +172,7 @@ export abstract class PortfolioCalculator {
let endDate = end;
if (!endDate) {
endDate = new Date(Date.now());
endDate = new Date();
if (lastTransactionPoint) {
endDate = max([endDate, parseDate(lastTransactionPoint.date)]);
@ -245,14 +245,14 @@ export abstract class PortfolioCalculator {
dates.push(resetHours(endDate));
// Add dates of last week for fallback
dates.push(subDays(resetHours(new Date(Date.now())), 7));
dates.push(subDays(resetHours(new Date(Date.now())), 6));
dates.push(subDays(resetHours(new Date(Date.now())), 5));
dates.push(subDays(resetHours(new Date(Date.now())), 4));
dates.push(subDays(resetHours(new Date(Date.now())), 3));
dates.push(subDays(resetHours(new Date(Date.now())), 2));
dates.push(subDays(resetHours(new Date(Date.now())), 1));
dates.push(resetHours(new Date(Date.now())));
dates.push(subDays(resetHours(new Date()), 7));
dates.push(subDays(resetHours(new Date()), 6));
dates.push(subDays(resetHours(new Date()), 5));
dates.push(subDays(resetHours(new Date()), 4));
dates.push(subDays(resetHours(new Date()), 3));
dates.push(subDays(resetHours(new Date()), 2));
dates.push(subDays(resetHours(new Date()), 1));
dates.push(resetHours(new Date()));
dates = uniq(
dates.map((date) => {
@ -690,7 +690,7 @@ export abstract class PortfolioCalculator {
}
public async getChartData({
end = new Date(Date.now()),
end = new Date(),
start,
step = 1
}: {
@ -1185,18 +1185,18 @@ export abstract class PortfolioCalculator {
)?.date;
firstAccountBalanceDate = firstAccountBalanceDateString
? parseDate(firstAccountBalanceDateString)
: new Date(Date.now());
: new Date();
} catch (error) {
firstAccountBalanceDate = new Date(Date.now());
firstAccountBalanceDate = new Date();
}
try {
const firstActivityDateString = this.transactionPoints[0].date;
firstActivityDate = firstActivityDateString
? parseDate(firstActivityDateString)
: new Date(Date.now());
: new Date();
} catch (error) {
firstActivityDate = new Date(Date.now());
firstActivityDate = new Date();
}
return min([firstAccountBalanceDate, firstActivityDate]);

2
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-no-orders.spec.ts

@ -73,7 +73,7 @@ describe('PortfolioCalculator', () => {
userId: userDummyData.id
});
const start = subDays(new Date(Date.now()), 10);
const start = subDays(new Date(), 10);
const chartData = await portfolioCalculator.getChartData({ start });

3
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts

@ -161,8 +161,7 @@ export class TWRPortfolioCalculator extends PortfolioCalculator {
start: Date;
step?: number;
} & AssetProfileIdentifier): SymbolMetrics {
const currentExchangeRate =
exchangeRates[format(new Date(Date.now()), DATE_FORMAT)];
const currentExchangeRate = exchangeRates[format(new Date(), DATE_FORMAT)];
const currentValues: { [date: string]: Big } = {};
const currentValuesWithCurrencyEffect: { [date: string]: Big } = {};
let fees = new Big(0);

26
libs/common/src/lib/calculation-helper.ts

@ -36,48 +36,36 @@ export function getIntervalFromDateRange(
aDateRange: DateRange,
portfolioStart = new Date(0)
) {
let endDate = endOfDay(new Date(Date.now()));
let endDate = endOfDay(new Date());
let startDate = portfolioStart;
switch (aDateRange) {
case '1d':
startDate = max([
startDate,
subDays(resetHours(new Date(Date.now())), 1)
]);
startDate = max([startDate, subDays(resetHours(new Date()), 1)]);
break;
case 'mtd':
startDate = max([
startDate,
subDays(startOfMonth(resetHours(new Date(Date.now()))), 1)
subDays(startOfMonth(resetHours(new Date())), 1)
]);
break;
case 'wtd':
startDate = max([
startDate,
subDays(
startOfWeek(resetHours(new Date(Date.now())), { weekStartsOn: 1 }),
1
)
subDays(startOfWeek(resetHours(new Date()), { weekStartsOn: 1 }), 1)
]);
break;
case 'ytd':
startDate = max([
startDate,
subDays(startOfYear(resetHours(new Date(Date.now()))), 1)
subDays(startOfYear(resetHours(new Date())), 1)
]);
break;
case '1y':
startDate = max([
startDate,
subYears(resetHours(new Date(Date.now())), 1)
]);
startDate = max([startDate, subYears(resetHours(new Date()), 1)]);
break;
case '5y':
startDate = max([
startDate,
subYears(resetHours(new Date(Date.now())), 5)
]);
startDate = max([startDate, subYears(resetHours(new Date()), 5)]);
break;
case 'max':
break;

Loading…
Cancel
Save