Browse Source

Decouple GUI service with Import Service #2288

pull/4056/head
Brandon Wortman 9 months ago
parent
commit
134586cd33
  1. 19
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
  2. 21
      apps/client/src/app/services/import-activities.service.ts

19
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts

@ -1,5 +1,6 @@
import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto';
import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface';
import { NotificationService } from '@ghostfolio/client/core/notification/notification.service';
import { DataService } from '@ghostfolio/client/services/data.service';
import { ImportActivitiesService } from '@ghostfolio/client/services/import-activities.service';
import { PortfolioPosition } from '@ghostfolio/common/interfaces';
@ -65,7 +66,8 @@ export class ImportActivitiesDialog implements OnDestroy {
private formBuilder: FormBuilder,
public dialogRef: MatDialogRef<ImportActivitiesDialog>,
private importActivitiesService: ImportActivitiesService,
private snackBar: MatSnackBar
private snackBar: MatSnackBar,
private notificationService: NotificationService
) {}
public ngOnInit() {
@ -294,14 +296,21 @@ export class ImportActivitiesDialog implements OnDestroy {
const content = fileContent.split('\n').slice(1);
try {
const data = await this.importActivitiesService.importCsv({
const { activities, warnings } =
await this.importActivitiesService.importCsv({
fileContent,
isDryRun: true,
userAccounts: this.data.user.accounts
});
this.activities = data.activities;
this.dataSource = new MatTableDataSource(data.activities.reverse());
this.totalItems = data.activities.length;
if (warnings.length > 0) {
this.notificationService.alert({
title: 'Import Warnings',
message: warnings.join('<br/>')
});
}
this.activities = activities;
this.dataSource = new MatTableDataSource(activities.reverse());
this.totalItems = activities.length;
} catch (error) {
console.error(error);
this.handleImportError({

21
apps/client/src/app/services/import-activities.service.ts

@ -2,7 +2,6 @@ import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto
import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto';
import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface';
import { SymbolItem } from '@ghostfolio/api/app/symbol/interfaces/symbol-item.interface';
import { NotificationService } from '@ghostfolio/client/core/notification/notification.service';
import { parseDate as parseDateHelper } from '@ghostfolio/common/helper';
import { HttpClient } from '@angular/common/http';
@ -21,6 +20,7 @@ export class ImportActivitiesService {
private static COMMENT_KEYS = ['comment', 'note'];
private static CURRENCY_KEYS = ['ccy', 'currency', 'currencyprimary'];
private static DATA_SOURCE_KEYS = ['datasource'];
// Trade Date takes precedence over Date
private static DATE_KEYS = ['trade date', 'tradedate', 'date'];
private static FEE_KEYS = ['commission', 'fee', 'ibcommission'];
private static QUANTITY_KEYS = ['qty', 'quantity', 'shares', 'units'];
@ -36,10 +36,7 @@ export class ImportActivitiesService {
private warnings: string[] = [];
public constructor(
private http: HttpClient,
private notificationService: NotificationService
) {}
public constructor(private http: HttpClient) {}
public async importCsv({
fileContent,
@ -51,6 +48,7 @@ export class ImportActivitiesService {
userAccounts: Account[];
}): Promise<{
activities: Activity[];
warnings: string[];
}> {
this.warnings = [];
@ -77,15 +75,10 @@ export class ImportActivitiesService {
});
}
// Process any possible warnings during import
if (this.warnings.length > 0) {
this.notificationService.alert({
title: 'Import Warnings',
message: this.warnings.join('<br/>')
});
}
return await this.importJson({ activities, isDryRun });
return {
activities: (await this.importJson({ activities, isDryRun })).activities,
warnings: this.warnings
};
}
public importJson({

Loading…
Cancel
Save