diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts index 588c2c292..0ec3d8d27 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -45,6 +45,8 @@ export class ImportActivitiesDialog implements OnDestroy { public async onImportActivities() { try { + this.snackBar.open('⏳ ' + $localize`Importing data...`); + await this.importActivitiesService.importSelectedActivities( this.selectedActivities ); @@ -81,7 +83,7 @@ export class ImportActivitiesDialog implements OnDestroy { input.type = 'file'; input.onchange = (event) => { - this.snackBar.open('⏳ ' + $localize`Importing data...`); + this.snackBar.open('⏳ ' + $localize`Validating data...`); // Getting the file reference const file = (event.target as HTMLInputElement).files[0]; @@ -129,9 +131,9 @@ export class ImportActivitiesDialog implements OnDestroy { } else if (file.name.endsWith('.csv')) { try { this.activities = await this.importActivitiesService.importCsv({ + dryRun: true, fileContent, - userAccounts: this.data.user.accounts, - dryRun: true + userAccounts: this.data.user.accounts }); } catch (error) { console.error(error); diff --git a/apps/client/src/app/services/import-activities.service.ts b/apps/client/src/app/services/import-activities.service.ts index 18868c919..b22315c81 100644 --- a/apps/client/src/app/services/import-activities.service.ts +++ b/apps/client/src/app/services/import-activities.service.ts @@ -26,13 +26,13 @@ export class ImportActivitiesService { public constructor(private http: HttpClient) {} public async importCsv({ + dryRun = false, fileContent, - userAccounts, - dryRun = false + userAccounts }: { + dryRun?: boolean; fileContent: string; userAccounts: Account[]; - dryRun?: boolean; }): Promise { const content = csvToJson(fileContent, { dynamicTyping: true, @@ -91,20 +91,23 @@ export class ImportActivitiesService { ): Promise { const importData: CreateOrderDto[] = []; for (const activity of selectedActivities) { - importData.push({ - currency: activity.SymbolProfile.currency, - date: activity.date.toString(), - fee: activity.fee, - quantity: activity.quantity, - symbol: activity.SymbolProfile.symbol, - type: activity.type, - unitPrice: activity.unitPrice - }); + importData.push(this.convertToCreateOrderDto(activity)); } - return this.importJson({ content: importData }); } + private convertToCreateOrderDto(aActivity: Activity): CreateOrderDto { + return { + currency: aActivity.SymbolProfile.currency, + date: aActivity.date.toString(), + fee: aActivity.fee, + quantity: aActivity.quantity, + symbol: aActivity.SymbolProfile.symbol, + type: aActivity.type, + unitPrice: aActivity.unitPrice + }; + } + private lowercaseKeys(aObject: any) { return Object.keys(aObject).reduce((acc, key) => { acc[key.toLowerCase()] = aObject[key]; diff --git a/libs/ui/src/lib/activities-table/activities-table.component.html b/libs/ui/src/lib/activities-table/activities-table.component.html index ec8601df5..6c70a0ccd 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.html +++ b/libs/ui/src/lib/activities-table/activities-table.component.html @@ -18,6 +18,7 @@