From 8501ddbc6e67c6e6fdf50eaf4fab160623a3487f Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Sun, 2 May 2021 19:19:59 +0200 Subject: [PATCH] Activate account selector in transaction dialog --- .../api/src/app/account/account.controller.ts | 21 +++++++++------- apps/api/src/app/account/account.service.ts | 16 ++++++++++++- .../accounts-table.component.html | 9 ++++++- .../accounts-table.component.ts | 2 +- .../pages/accounts/accounts-page.component.ts | 2 +- .../src/app/pages/analysis/analysis-page.html | 24 ++++++++++++++++++- .../create-or-update-transaction-dialog.html | 14 +---------- 7 files changed, 61 insertions(+), 27 deletions(-) diff --git a/apps/api/src/app/account/account.controller.ts b/apps/api/src/app/account/account.controller.ts index 69a4f827a..78a1a416b 100644 --- a/apps/api/src/app/account/account.controller.ts +++ b/apps/api/src/app/account/account.controller.ts @@ -17,7 +17,7 @@ import { } from '@nestjs/common'; import { REQUEST } from '@nestjs/core'; import { AuthGuard } from '@nestjs/passport'; -import { Account as AccountModel } from '@prisma/client'; +import { Account as AccountModel, Order } from '@prisma/client'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { AccountService } from './account.service'; @@ -47,14 +47,17 @@ export class AccountController { ); } - const account = await this.accountService.account({ - id_userId: { - id, - userId: this.request.user.id - } - }); + const account = await this.accountService.accountWithOrders( + { + id_userId: { + id, + userId: this.request.user.id + } + }, + { Order: true } + ); - if (account.isDefault) { + if (account?.isDefault || account?.Order.length > 0) { throw new HttpException( getReasonPhrase(StatusCodes.FORBIDDEN), StatusCodes.FORBIDDEN @@ -83,7 +86,7 @@ export class AccountController { ); let accounts = await this.accountService.accounts({ - include: { Platform: true }, + include: { Order: true, Platform: true }, orderBy: { name: 'asc' }, where: { userId: impersonationUserId || this.request.user.id } }); diff --git a/apps/api/src/app/account/account.service.ts b/apps/api/src/app/account/account.service.ts index 92d39695c..a18d388e0 100644 --- a/apps/api/src/app/account/account.service.ts +++ b/apps/api/src/app/account/account.service.ts @@ -1,6 +1,6 @@ import { PrismaService } from '@ghostfolio/api/services/prisma.service'; import { Injectable } from '@nestjs/common'; -import { Account, Prisma } from '@prisma/client'; +import { Account, Order, Prisma } from '@prisma/client'; import { RedisCacheService } from '../redis-cache/redis-cache.service'; @@ -19,6 +19,20 @@ export class AccountService { }); } + public async accountWithOrders( + accountWhereUniqueInput: Prisma.AccountWhereUniqueInput, + accountInclude: Prisma.AccountInclude + ): Promise< + Account & { + Order?: Order[]; + } + > { + return this.prisma.account.findUnique({ + include: accountInclude, + where: accountWhereUniqueInput + }); + } + public async accounts(params: { include?: Prisma.AccountInclude; skip?: number; diff --git a/apps/client/src/app/components/accounts-table/accounts-table.component.html b/apps/client/src/app/components/accounts-table/accounts-table.component.html index 2b7a1f3a3..8fd19efe1 100644 --- a/apps/client/src/app/components/accounts-table/accounts-table.component.html +++ b/apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -67,7 +67,7 @@