From ab7b98630b0fa45b5a0a19125759804685110418 Mon Sep 17 00:00:00 2001 From: yksolanki9 Date: Wed, 1 Feb 2023 23:42:46 +0530 Subject: [PATCH] minor refactoring --- apps/api/src/app/account/account.service.ts | 14 +++++++------- apps/api/src/app/account/create-account.dto.ts | 16 ++++++++-------- apps/api/src/app/import/import-data.dto.ts | 2 +- apps/api/src/app/import/import.controller.ts | 6 +++--- apps/api/src/app/import/import.service.ts | 13 +++++++------ .../import-activities-dialog.component.ts | 4 ++-- .../app/services/import-activities.service.ts | 11 +++++------ .../src/lib/interfaces/export.interface.ts | 2 +- 8 files changed, 34 insertions(+), 34 deletions(-) diff --git a/apps/api/src/app/account/account.service.ts b/apps/api/src/app/account/account.service.ts index d144faa8b..32bf9f875 100644 --- a/apps/api/src/app/account/account.service.ts +++ b/apps/api/src/app/account/account.service.ts @@ -80,6 +80,13 @@ export class AccountService { }); } + public async getAccountById(accountId: string) { + const accounts = await this.accounts({ + where: { id: accountId } + }); + return accounts.length ? accounts[0] : null; + } + public async getAccounts(aUserId: string) { const accounts = await this.accounts({ include: { Order: true, Platform: true }, @@ -104,13 +111,6 @@ export class AccountService { }); } - public async getAccountById(accountId: string) { - const accounts = await this.accounts({ - where: { id: accountId } - }); - return accounts.length ? accounts[0] : null; - } - public async getCashDetails({ currency, filters = [], diff --git a/apps/api/src/app/account/create-account.dto.ts b/apps/api/src/app/account/create-account.dto.ts index 3c32163e0..69377bdd2 100644 --- a/apps/api/src/app/account/create-account.dto.ts +++ b/apps/api/src/app/account/create-account.dto.ts @@ -8,14 +8,6 @@ import { } from 'class-validator'; export class CreateAccountDto { - @IsOptional() - @IsString() - id: string; - - @IsOptional() - @IsBoolean() - isDefault: boolean; - @IsString() accountType: AccountType; @@ -25,6 +17,14 @@ export class CreateAccountDto { @IsString() currency: string; + @IsOptional() + @IsString() + id: string; + + @IsOptional() + @IsBoolean() + isDefault: boolean; + @IsBoolean() @IsOptional() isExcluded?: boolean; diff --git a/apps/api/src/app/import/import-data.dto.ts b/apps/api/src/app/import/import-data.dto.ts index aa141aab5..cfd866120 100644 --- a/apps/api/src/app/import/import-data.dto.ts +++ b/apps/api/src/app/import/import-data.dto.ts @@ -1,6 +1,6 @@ import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto'; import { Type } from 'class-transformer'; -import { IsArray, ValidateNested, IsOptional } from 'class-validator'; +import { IsArray, IsOptional, ValidateNested } from 'class-validator'; import { CreateAccountDto } from '../account/create-account.dto'; export class ImportDataDto { diff --git a/apps/api/src/app/import/import.controller.ts b/apps/api/src/app/import/import.controller.ts index a1a1d4b1d..0de1c0b54 100644 --- a/apps/api/src/app/import/import.controller.ts +++ b/apps/api/src/app/import/import.controller.ts @@ -68,11 +68,11 @@ export class ImportController { try { const activities = await this.importService.import({ - maxActivitiesToImport, + accountsDto: importData.accounts || [], + activitiesDto: importData.activities, isDryRun, + maxActivitiesToImport, userCurrency, - activitiesDto: importData.activities, - accountsDto: importData.accounts || [], userId: this.request.user.id }); diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index c672f5bbc..c72d00eca 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -1,4 +1,5 @@ import { AccountService } from '@ghostfolio/api/app/account/account.service'; +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 { OrderService } from '@ghostfolio/api/app/order/order.service'; @@ -17,7 +18,6 @@ import { SymbolProfile } from '@prisma/client'; import Big from 'big.js'; import { endOfToday, isAfter, isSameDay, parseISO } from 'date-fns'; import { v4 as uuidv4 } from 'uuid'; -import { CreateAccountDto } from '../account/create-account.dto'; @Injectable() export class ImportService { @@ -101,15 +101,15 @@ export class ImportService { } public async import({ - activitiesDto, accountsDto, + activitiesDto, isDryRun = false, maxActivitiesToImport, userCurrency, userId }: { - activitiesDto: Partial[]; accountsDto: Partial[]; + activitiesDto: Partial[]; isDryRun?: boolean; maxActivitiesToImport: number; userCurrency: string; @@ -117,10 +117,10 @@ export class ImportService { }): Promise { const accountIdMapping = {}; - //Create new accounts during dryRun so that new account Ids don't get invalidated + //Create new accounts during dryRun so that new account IDs don't get invalidated if (isDryRun && accountsDto?.length) { for (let account of accountsDto) { - //Check if there is any existing account with the same id + //Check if there is any existing account with the same ID const accountWithSameId = await this.accountService.getAccountById( account.id ); @@ -154,6 +154,7 @@ export class ImportService { userId ); + //Store the new to old account ID mappings for updating activities if (accountWithSameId && oldAccountId) { accountIdMapping[oldAccountId] = newAccount.id; } @@ -170,8 +171,8 @@ export class ImportService { } } + //If a new account is created, then update the accountId in all activities if (isDryRun) { - //If a new account is created, then update the accountId in all activities if (Object.keys(accountIdMapping).includes(activity.accountId)) { activity.accountId = accountIdMapping[activity.accountId]; } 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 80b20df2d..045cee17f 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 @@ -183,12 +183,12 @@ export class ImportActivitiesDialog implements OnDestroy { } try { - this.accounts = content.accounts; const data = await this.importActivitiesService.importJson({ activities: content.activities, isDryRun: true, - accounts: this.accounts + accounts: content.accounts }); + this.accounts = content.accounts; this.activities = data.activities; } 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 c2b0bbe05..357ad196a 100644 --- a/apps/client/src/app/services/import-activities.service.ts +++ b/apps/client/src/app/services/import-activities.service.ts @@ -35,7 +35,6 @@ export class ImportActivitiesService { isDryRun?: boolean; userAccounts: Account[]; }): Promise<{ - accounts?: CreateAccountDto[]; activities: Activity[]; }> { const content = csvToJson(fileContent, { @@ -71,14 +70,14 @@ export class ImportActivitiesService { accounts?: CreateAccountDto[]; isDryRun?: boolean; }): Promise<{ - accounts?: CreateAccountDto[]; activities: Activity[]; + accounts?: CreateAccountDto[]; }> { return new Promise((resolve, reject) => { this.postImport( { - activities, - accounts + accounts, + activities }, isDryRun ) @@ -100,11 +99,11 @@ export class ImportActivitiesService { accounts, activities }: { - accounts?: CreateAccountDto[]; activities: Activity[]; - }): Promise<{ accounts?: CreateAccountDto[]; + }): Promise<{ activities: Activity[]; + accounts?: CreateAccountDto[]; }> { const importData: CreateOrderDto[] = []; diff --git a/libs/common/src/lib/interfaces/export.interface.ts b/libs/common/src/lib/interfaces/export.interface.ts index 7b7470717..dcd7aa60d 100644 --- a/libs/common/src/lib/interfaces/export.interface.ts +++ b/libs/common/src/lib/interfaces/export.interface.ts @@ -1,4 +1,4 @@ -import { Order, Account } from '@prisma/client'; +import { Account, Order } from '@prisma/client'; export interface Export { meta: {