diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 51b93517f..943923fcc 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -326,7 +326,9 @@ export class AdminService { name, scraperConfiguration, symbol, - symbolMapping + symbolMapping, + countries, + sectors }: Prisma.SymbolProfileUpdateInput & UniqueAsset) { await this.symbolProfileService.updateSymbolProfile({ assetClass, @@ -337,7 +339,9 @@ export class AdminService { name, scraperConfiguration, symbol, - symbolMapping + symbolMapping, + countries, + sectors }); const [symbolProfile] = await this.symbolProfileService.getSymbolProfiles([ diff --git a/apps/api/src/app/admin/update-asset-profile.dto.ts b/apps/api/src/app/admin/update-asset-profile.dto.ts index 56794606c..53d9402c0 100644 --- a/apps/api/src/app/admin/update-asset-profile.dto.ts +++ b/apps/api/src/app/admin/update-asset-profile.dto.ts @@ -1,5 +1,11 @@ import { AssetClass, AssetSubClass, Prisma } from '@prisma/client'; -import { IsEnum, IsObject, IsOptional, IsString } from 'class-validator'; +import { + IsArray, + IsEnum, + IsObject, + IsOptional, + IsString +} from 'class-validator'; export class UpdateAssetProfileDto { @IsEnum(AssetClass, { each: true }) @@ -31,4 +37,12 @@ export class UpdateAssetProfileDto { symbolMapping?: { [dataProvider: string]: string; }; + + @IsArray() + @IsOptional() + sectors?: Prisma.InputJsonArray; + + @IsArray() + @IsOptional() + countries?: Prisma.InputJsonArray; } diff --git a/apps/api/src/services/symbol-profile/symbol-profile.service.ts b/apps/api/src/services/symbol-profile/symbol-profile.service.ts index 5f808b3db..47c1fee40 100644 --- a/apps/api/src/services/symbol-profile/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile/symbol-profile.service.ts @@ -94,7 +94,9 @@ export class SymbolProfileService { name, scraperConfiguration, symbol, - symbolMapping + symbolMapping, + countries, + sectors }: Prisma.SymbolProfileUpdateInput & UniqueAsset) { return this.prismaService.symbolProfile.update({ data: { @@ -104,7 +106,9 @@ export class SymbolProfileService { currency, name, scraperConfiguration, - symbolMapping + symbolMapping, + countries, + sectors }, where: { dataSource_symbol: { dataSource, symbol } } }); diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts index 001b7734c..d4b598003 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts @@ -138,7 +138,6 @@ export class AssetProfileDialog implements OnDestroy, OnInit { }; } } - this.assetProfileForm.setValue({ assetClass: this.assetProfile.assetClass ?? null, assetSubClass: this.assetProfile.assetSubClass ?? null, @@ -152,8 +151,12 @@ export class AssetProfileDialog implements OnDestroy, OnInit { this.assetProfile?.scraperConfiguration ?? {} ), symbolMapping: JSON.stringify(this.assetProfile?.symbolMapping ?? {}), - countries: JSON.stringify(this.countries ?? {}), - sectors: JSON.stringify(this.sectors ?? {}) + countries: JSON.stringify( + assetProfile.countries.map((e) => { + return { code: e.code, weight: e.weight }; + }) ?? [] + ), + sectors: JSON.stringify(assetProfile.sectors ?? []) }); console.log(this.assetProfileForm.value); @@ -191,8 +194,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit { header: true, skipEmptyLines: true } - - ).data; + ).data; this.adminService .postMarketData({ @@ -247,6 +249,9 @@ export class AssetProfileDialog implements OnDestroy, OnInit { public onSubmit() { let scraperConfiguration = {}; let symbolMapping = {}; + let countries = []; + + let sectors = []; try { scraperConfiguration = JSON.parse( @@ -260,6 +265,14 @@ export class AssetProfileDialog implements OnDestroy, OnInit { ); } catch {} + try { + countries = JSON.parse(this.assetProfileForm.controls['countries'].value); + } catch {} + + try { + sectors = JSON.parse(this.assetProfileForm.controls['sectors'].value); + } catch {} + const assetProfileData: UpdateAssetProfileDto = { scraperConfiguration, symbolMapping, @@ -269,8 +282,11 @@ export class AssetProfileDialog implements OnDestroy, OnInit { currency: (( (this.assetProfileForm.controls['currency'].value) ))?.value, - name: this.assetProfileForm.controls['name'].value + name: this.assetProfileForm.controls['name'].value, + countries, + sectors }; + console.log(assetProfileData); this.adminService .patchAssetProfile({ diff --git a/apps/client/src/app/services/admin.service.ts b/apps/client/src/app/services/admin.service.ts index a1c7d626a..22c1878e6 100644 --- a/apps/client/src/app/services/admin.service.ts +++ b/apps/client/src/app/services/admin.service.ts @@ -211,7 +211,9 @@ export class AdminService { name, scraperConfiguration, symbol, - symbolMapping + symbolMapping, + sectors, + countries }: UniqueAsset & UpdateAssetProfileDto) { return this.http.patch( `/api/v1/admin/profile-data/${dataSource}/${symbol}`, @@ -222,7 +224,9 @@ export class AdminService { currency, name, scraperConfiguration, - symbolMapping + symbolMapping, + sectors, + countries } ); }