Browse Source

Feature/extend asset profile for currency

pull/3495/head
José Marinho 1 year ago
parent
commit
4fe73378e9
  1. 30
      apps/api/src/app/admin/admin.service.ts
  2. 2
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html

30
apps/api/src/app/admin/admin.service.ts

@ -13,11 +13,13 @@ import {
PROPERTY_IS_READ_ONLY_MODE, PROPERTY_IS_READ_ONLY_MODE,
PROPERTY_IS_USER_SIGNUP_ENABLED PROPERTY_IS_USER_SIGNUP_ENABLED
} from '@ghostfolio/common/config'; } from '@ghostfolio/common/config';
import { isCurrency } from '@ghostfolio/common/helper';
import { import {
AdminData, AdminData,
AdminMarketData, AdminMarketData,
AdminMarketDataDetails, AdminMarketDataDetails,
AdminMarketDataItem, AdminMarketDataItem,
EnhancedSymbolProfile,
Filter, Filter,
UniqueAsset UniqueAsset
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
@ -32,6 +34,7 @@ import {
Property, Property,
SymbolProfile SymbolProfile
} from '@prisma/client'; } from '@prisma/client';
import { isNumber } from 'class-validator';
import { differenceInDays } from 'date-fns'; import { differenceInDays } from 'date-fns';
import { groupBy } from 'lodash'; import { groupBy } from 'lodash';
@ -295,6 +298,27 @@ export class AdminService {
dataSource, dataSource,
symbol symbol
}: UniqueAsset): Promise<AdminMarketDataDetails> { }: UniqueAsset): Promise<AdminMarketDataDetails> {
let activitiesCount: EnhancedSymbolProfile['activitiesCount'] = 0;
let dateOfFirstActivity: EnhancedSymbolProfile['dateOfFirstActivity'];
let currency: EnhancedSymbolProfile['currency'] = '-';
if (isCurrency(symbol.replace(DEFAULT_CURRENCY, ''))) {
currency = symbol.replace(DEFAULT_CURRENCY, '');
const { _count, _min } = await this.prismaService.order.aggregate({
_count: true,
_min: {
date: true
},
where: {
SymbolProfile: {
currency
}
}
});
activitiesCount = _count as number;
dateOfFirstActivity = _min.date;
}
const [[assetProfile], marketData] = await Promise.all([ const [[assetProfile], marketData] = await Promise.all([
this.symbolProfileService.getSymbolProfiles([ this.symbolProfileService.getSymbolProfiles([
{ {
@ -322,12 +346,14 @@ export class AdminService {
return { return {
marketData, marketData,
assetProfile: assetProfile ?? { assetProfile: assetProfile ?? {
currency,
dataSource,
symbol, symbol,
currency: '-' activitiesCount,
dateOfFirstActivity
} }
}; };
} }
public async patchAssetProfileData({ public async patchAssetProfileData({
assetClass, assetClass,
assetSubClass, assetSubClass,

2
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html

@ -146,7 +146,7 @@
i18n i18n
size="medium" size="medium"
[locale]="data.locale" [locale]="data.locale"
[value]="assetProfile?.activitiesCount ?? 0" [value]="assetProfile?.activitiesCount"
>Activities</gf-value >Activities</gf-value
> >
</div> </div>

Loading…
Cancel
Save