|
|
|
@ -29,21 +29,14 @@ import { REQUEST } from '@nestjs/core';
|
|
|
|
|
import { Currency, DataSource, Type as TypeOfOrder } from '@prisma/client';
|
|
|
|
|
import Big from 'big.js';
|
|
|
|
|
import {
|
|
|
|
|
add,
|
|
|
|
|
endOfToday,
|
|
|
|
|
format,
|
|
|
|
|
getDate,
|
|
|
|
|
getMonth,
|
|
|
|
|
getYear,
|
|
|
|
|
isAfter,
|
|
|
|
|
isBefore,
|
|
|
|
|
max,
|
|
|
|
|
parse,
|
|
|
|
|
parseISO,
|
|
|
|
|
setDate,
|
|
|
|
|
setDayOfYear,
|
|
|
|
|
setMonth,
|
|
|
|
|
sub,
|
|
|
|
|
subDays,
|
|
|
|
|
subYears
|
|
|
|
|
} from 'date-fns';
|
|
|
|
@ -669,53 +662,6 @@ export class PortfolioService {
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private convertDateRangeToDate(aDateRange: DateRange, aMinDate: Date) {
|
|
|
|
|
let currentDate = new Date();
|
|
|
|
|
|
|
|
|
|
const normalizedMinDate =
|
|
|
|
|
getDate(aMinDate) === 1
|
|
|
|
|
? aMinDate
|
|
|
|
|
: add(setDate(aMinDate, 1), { months: 1 });
|
|
|
|
|
|
|
|
|
|
const year = getYear(currentDate);
|
|
|
|
|
const month = getMonth(currentDate);
|
|
|
|
|
const day = getDate(currentDate);
|
|
|
|
|
|
|
|
|
|
currentDate = new Date(Date.UTC(year, month, day, 0));
|
|
|
|
|
|
|
|
|
|
switch (aDateRange) {
|
|
|
|
|
case '1d':
|
|
|
|
|
return sub(currentDate, {
|
|
|
|
|
days: 1
|
|
|
|
|
});
|
|
|
|
|
case 'ytd':
|
|
|
|
|
currentDate = setDate(currentDate, 1);
|
|
|
|
|
currentDate = setMonth(currentDate, 0);
|
|
|
|
|
return isAfter(currentDate, normalizedMinDate)
|
|
|
|
|
? currentDate
|
|
|
|
|
: undefined;
|
|
|
|
|
case '1y':
|
|
|
|
|
currentDate = setDate(currentDate, 1);
|
|
|
|
|
currentDate = sub(currentDate, {
|
|
|
|
|
years: 1
|
|
|
|
|
});
|
|
|
|
|
return isAfter(currentDate, normalizedMinDate)
|
|
|
|
|
? currentDate
|
|
|
|
|
: undefined;
|
|
|
|
|
case '5y':
|
|
|
|
|
currentDate = setDate(currentDate, 1);
|
|
|
|
|
currentDate = sub(currentDate, {
|
|
|
|
|
years: 5
|
|
|
|
|
});
|
|
|
|
|
return isAfter(currentDate, normalizedMinDate)
|
|
|
|
|
? currentDate
|
|
|
|
|
: undefined;
|
|
|
|
|
default:
|
|
|
|
|
// Gets handled as all data
|
|
|
|
|
return undefined;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private getAccounts(
|
|
|
|
|
orders: OrderWithAccount[],
|
|
|
|
|
portfolioItemsNow: { [p: string]: TimelinePosition },
|
|
|
|
|