Browse Source

minor refactoring

pull/1635/head
yksolanki9 3 years ago
parent
commit
271927f62c
  1. 14
      apps/api/src/app/account/account.service.ts
  2. 16
      apps/api/src/app/account/create-account.dto.ts
  3. 2
      apps/api/src/app/import/import-data.dto.ts
  4. 6
      apps/api/src/app/import/import.controller.ts
  5. 13
      apps/api/src/app/import/import.service.ts
  6. 4
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
  7. 11
      apps/client/src/app/services/import-activities.service.ts
  8. 2
      libs/common/src/lib/interfaces/export.interface.ts

14
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 = [],

16
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;

2
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 {

6
apps/api/src/app/import/import.controller.ts

@ -69,11 +69,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
});

13
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<CreateOrderDto>[];
accountsDto: Partial<CreateAccountDto>[];
activitiesDto: Partial<CreateOrderDto>[];
isDryRun?: boolean;
maxActivitiesToImport: number;
userCurrency: string;
@ -117,10 +117,10 @@ export class ImportService {
}): Promise<Activity[]> {
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];
}

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

@ -180,12 +180,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);

11
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[] = [];

2
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: {

Loading…
Cancel
Save