From 6898112b7423bf07e6e4e0d3b96e11d716a83a17 Mon Sep 17 00:00:00 2001 From: "Fabio Azevedo (CTW)" Date: Tue, 2 May 2023 19:35:29 +0100 Subject: [PATCH] Fixe requests --- apps/api/src/app/app.module.ts | 2 +- .../src/app/platform/create-platform.dto.ts | 6 +-- .../src/app/platform/platform.controller.ts | 4 +- apps/api/src/app/platform/platform.service.ts | 8 ++-- .../src/app/platform/update-platform.dto.ts | 5 +-- ...te-or-update-account-platform.component.ts | 14 +------ .../create-or-update-platform-dialog.html | 4 +- ...create-or-update-platform-dialog.module.ts | 21 +--------- .../platform/platform.component.html | 12 +----- .../components/platform/platform.component.ts | 42 +++++++------------ .../components/platform/platform.module.ts | 10 ++--- .../src/app/pages/admin/admin-page.module.ts | 2 +- apps/client/src/app/services/admin.service.ts | 23 +++++++++- apps/client/src/app/services/data.service.ts | 23 +--------- libs/common/src/lib/permissions.ts | 16 +++---- 15 files changed, 71 insertions(+), 121 deletions(-) diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index 3cc2ee507..90f1bd605 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -64,10 +64,10 @@ import { PlatformModule } from './platform/platform.module'; InfoModule, LogoModule, OrderModule, + PlatformModule, PortfolioModule, PrismaModule, RedisCacheModule, - PlatformModule, ScheduleModule.forRoot(), ServeStaticModule.forRoot({ serveStaticOptions: { diff --git a/apps/api/src/app/platform/create-platform.dto.ts b/apps/api/src/app/platform/create-platform.dto.ts index 0c3cfb781..a61f21743 100644 --- a/apps/api/src/app/platform/create-platform.dto.ts +++ b/apps/api/src/app/platform/create-platform.dto.ts @@ -1,10 +1,6 @@ -import { IsOptional, IsString } from 'class-validator'; +import { IsString } from 'class-validator'; export class CreatePlatformDto { - @IsOptional() - @IsString() - id?: string; - @IsString() name: string; diff --git a/apps/api/src/app/platform/platform.controller.ts b/apps/api/src/app/platform/platform.controller.ts index 91c9501b1..988905c4b 100644 --- a/apps/api/src/app/platform/platform.controller.ts +++ b/apps/api/src/app/platform/platform.controller.ts @@ -23,7 +23,7 @@ import { UpdatePlatformDto } from './update-platform.dto'; @Controller('platform') export class PlatformController { public constructor( - private platformService: PlatformService, + private readonly platformService: PlatformService, @Inject(REQUEST) private readonly request: RequestWithUser ) {} @@ -96,7 +96,7 @@ export class PlatformController { StatusCodes.FORBIDDEN ); } - console.log('id', id); + const originalPlatform = await this.platformService.getPlatform({ id }); diff --git a/apps/api/src/app/platform/platform.service.ts b/apps/api/src/app/platform/platform.service.ts index b5912415e..9832252a4 100644 --- a/apps/api/src/app/platform/platform.service.ts +++ b/apps/api/src/app/platform/platform.service.ts @@ -24,11 +24,13 @@ export class PlatformService { }); } - public async updatePlatform(params: { - where: Prisma.PlatformWhereUniqueInput; + public async updatePlatform({ + data, + where + }: { data: Prisma.PlatformUpdateInput; + where: Prisma.PlatformWhereUniqueInput; }): Promise { - const { data, where } = params; return this.prismaService.platform.update({ data, where diff --git a/apps/api/src/app/platform/update-platform.dto.ts b/apps/api/src/app/platform/update-platform.dto.ts index 3af9f5c94..ec6f2687c 100644 --- a/apps/api/src/app/platform/update-platform.dto.ts +++ b/apps/api/src/app/platform/update-platform.dto.ts @@ -1,9 +1,8 @@ -import { IsOptional, IsString } from 'class-validator'; +import { IsString } from 'class-validator'; export class UpdatePlatformDto { - @IsOptional() @IsString() - id?: string; + id: string; @IsString() name: string; diff --git a/apps/client/src/app/components/platform/create-or-update-platform-dialog/create-or-update-account-platform.component.ts b/apps/client/src/app/components/platform/create-or-update-platform-dialog/create-or-update-account-platform.component.ts index dc82a7e83..65dd6f755 100644 --- a/apps/client/src/app/components/platform/create-or-update-platform-dialog/create-or-update-account-platform.component.ts +++ b/apps/client/src/app/components/platform/create-or-update-platform-dialog/create-or-update-account-platform.component.ts @@ -1,9 +1,4 @@ -import { - ChangeDetectionStrategy, - Component, - Inject, - OnDestroy -} from '@angular/core'; +import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { Subject } from 'rxjs'; @@ -16,10 +11,7 @@ import { CreateOrUpdatePlatformDialogParams } from './interfaces/interfaces'; styleUrls: ['./create-or-update-platform-dialog.scss'], templateUrl: 'create-or-update-platform-dialog.html' }) -export class CreateOrUpdatePlatformDialog implements OnDestroy { - public currencies: string[] = []; - public platforms: { id: string; name: string }[]; - +export class CreateOrUpdatePlatformDialog { private unsubscribeSubject = new Subject(); public constructor( @@ -27,8 +19,6 @@ export class CreateOrUpdatePlatformDialog implements OnDestroy { @Inject(MAT_DIALOG_DATA) public data: CreateOrUpdatePlatformDialogParams ) {} - ngOnInit() {} - public onCancel() { this.dialogRef.close(); } diff --git a/apps/client/src/app/components/platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html b/apps/client/src/app/components/platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html index 23a279dd9..06f6ab72e 100644 --- a/apps/client/src/app/components/platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html +++ b/apps/client/src/app/components/platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1,4 +1,4 @@ -
+

Update platform

Add platform

@@ -20,7 +20,7 @@ - @@ -96,14 +95,7 @@
-
+
= new MatTableDataSource(); private unsubscribeSubject = new Subject(); public constructor( - private dataService: DataService, private changeDetectorRef: ChangeDetectorRef, - private userService: UserService, + private adminService: AdminService, private deviceService: DeviceDetectorService, - private impersonationStorageService: ImpersonationStorageService, private dialog: MatDialog, private route: ActivatedRoute, - private router: Router + private router: Router, + private userService: UserService ) { this.route.queryParams .pipe(takeUntil(this.unsubscribeSubject)) @@ -75,25 +70,18 @@ export class AdminPlatformComponent implements OnInit, OnDestroy { public ngOnInit() { this.deviceType = this.deviceService.getDeviceInfo().deviceType; - this.impersonationStorageService - .onChangeHasImpersonation() - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe((impersonationId) => { - this.hasImpersonationId = !!impersonationId; - }); - this.userService.stateChanged .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((state) => { if (state?.user) { - this.user = state.user; + const user = state.user; this.hasPermissionToCreatePlatform = hasPermission( - this.user.permissions, + user.permissions, permissions.createPlatform ); - this.hasPermissionToCreatePlatform = hasPermission( - this.user.permissions, + this.hasPermissionToDeletePlatform = hasPermission( + user.permissions, permissions.deletePlatform ); @@ -116,7 +104,7 @@ export class AdminPlatformComponent implements OnInit, OnDestroy { } public deletePlatform(aId: string) { - this.dataService + this.adminService .deletePlatform(aId) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe({ @@ -132,7 +120,7 @@ export class AdminPlatformComponent implements OnInit, OnDestroy { } private fetchPlatforms() { - this.dataService + this.adminService .fetchPlatforms() .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((platforms) => { @@ -164,7 +152,7 @@ export class AdminPlatformComponent implements OnInit, OnDestroy { const platform: CreatePlatformDto = data?.platform; if (platform) { - this.dataService + this.adminService .postPlatform(platform) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe({ @@ -187,9 +175,9 @@ export class AdminPlatformComponent implements OnInit, OnDestroy { const dialogRef = this.dialog.open(CreateOrUpdatePlatformDialog, { data: { platform: { - id: id, - name: name, - url: url + id, + name, + url } }, @@ -204,7 +192,7 @@ export class AdminPlatformComponent implements OnInit, OnDestroy { const platform: UpdatePlatformDto = data?.platform; if (platform) { - this.dataService + this.adminService .putPlatform(platform) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe({ diff --git a/apps/client/src/app/components/platform/platform.module.ts b/apps/client/src/app/components/platform/platform.module.ts index ec0bf5499..bf604c45c 100644 --- a/apps/client/src/app/components/platform/platform.module.ts +++ b/apps/client/src/app/components/platform/platform.module.ts @@ -7,19 +7,19 @@ import { MatSortModule } from '@angular/material/sort'; import { MatTableModule } from '@angular/material/table'; import { GfCreateOrUpdatePlatformDialogModule } from './create-or-update-platform-dialog/create-or-update-platform-dialog.module'; import { MatMenuModule } from '@angular/material/menu'; -import { GfSymbolIconModule } from '../symbol-icon/symbol-icon.module'; +import { GfSymbolIconModule } from '@ghostfolio/client/components/symbol-icon/symbol-icon.module'; @NgModule({ declarations: [AdminPlatformComponent], imports: [ CommonModule, - RouterModule, - MatButtonModule, GfSymbolIconModule, + GfCreateOrUpdatePlatformDialogModule, + MatButtonModule, + MatMenuModule, MatSortModule, MatTableModule, - MatMenuModule, - GfCreateOrUpdatePlatformDialogModule + RouterModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) diff --git a/apps/client/src/app/pages/admin/admin-page.module.ts b/apps/client/src/app/pages/admin/admin-page.module.ts index ab0c80970..ba37d81a5 100644 --- a/apps/client/src/app/pages/admin/admin-page.module.ts +++ b/apps/client/src/app/pages/admin/admin-page.module.ts @@ -20,8 +20,8 @@ import { AdminPageComponent } from './admin-page.component'; GfAdminJobsModule, GfAdminMarketDataModule, GfAdminOverviewModule, - GfAdminUsersModule, GfAdminPlatformModule, + GfAdminUsersModule, MatTabsModule ], providers: [CacheService], diff --git a/apps/client/src/app/services/admin.service.ts b/apps/client/src/app/services/admin.service.ts index 50e66fd39..7d26668e8 100644 --- a/apps/client/src/app/services/admin.service.ts +++ b/apps/client/src/app/services/admin.service.ts @@ -2,6 +2,8 @@ import { HttpClient, HttpParams } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { UpdateAssetProfileDto } from '@ghostfolio/api/app/admin/update-asset-profile.dto'; import { UpdateMarketDataDto } from '@ghostfolio/api/app/admin/update-market-data.dto'; +import { CreatePlatformDto } from '@ghostfolio/api/app/platform/create-platform.dto'; +import { UpdatePlatformDto } from '@ghostfolio/api/app/platform/update-platform.dto'; import { IDataProviderHistoricalResponse } from '@ghostfolio/api/services/interfaces/interfaces'; import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { @@ -10,7 +12,7 @@ import { EnhancedSymbolProfile, UniqueAsset } from '@ghostfolio/common/interfaces'; -import { DataSource, MarketData } from '@prisma/client'; +import { DataSource, MarketData, Platform } from '@prisma/client'; import { JobStatus } from 'bull'; import { format, parseISO } from 'date-fns'; import { Observable, map } from 'rxjs'; @@ -37,6 +39,10 @@ export class AdminService { }); } + public deletePlatform(aId: string) { + return this.http.delete(`/api/v1/platform/${aId}`); + } + public deleteProfileData({ dataSource, symbol }: UniqueAsset) { return this.http.delete( `/api/v1/admin/profile-data/${dataSource}/${symbol}` @@ -74,6 +80,10 @@ export class AdminService { }); } + public fetchPlatforms() { + return this.http.get('/api/v1/platform'); + } + public gather7Days() { return this.http.post('/api/v1/admin/gather', {}); } @@ -138,6 +148,10 @@ export class AdminService { ); } + public postPlatform(aPlatform: CreatePlatformDto) { + return this.http.post(`/api/v1/platform`, aPlatform); + } + public putMarketData({ dataSource, date, @@ -156,4 +170,11 @@ export class AdminService { return this.http.put(url, marketData); } + + public putPlatform(aPlatform: UpdatePlatformDto) { + return this.http.put( + `/api/v1/platform/${aPlatform.id}`, + aPlatform + ); + } } diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index 9f8d07172..bff672717 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -6,8 +6,6 @@ import { UpdateAccountDto } from '@ghostfolio/api/app/account/update-account.dto import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto'; import { Activities } from '@ghostfolio/api/app/order/interfaces/activities.interface'; import { UpdateOrderDto } from '@ghostfolio/api/app/order/update-order.dto'; -import { CreatePlatformDto } from '@ghostfolio/api/app/platform/create-platform.dto'; -import { UpdatePlatformDto } from '@ghostfolio/api/app/platform/update-platform.dto'; import { PortfolioPositionDetail } from '@ghostfolio/api/app/portfolio/interfaces/portfolio-position-detail.interface'; import { PortfolioPositions } from '@ghostfolio/api/app/portfolio/interfaces/portfolio-positions.interface'; import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface'; @@ -41,7 +39,7 @@ import { import { filterGlobalPermissions } from '@ghostfolio/common/permissions'; import { AccountWithValue, DateRange, GroupBy } from '@ghostfolio/common/types'; import { translate } from '@ghostfolio/ui/i18n'; -import { DataSource, Order as OrderModel, Platform } from '@prisma/client'; +import { DataSource, Order as OrderModel } from '@prisma/client'; import { format, parseISO } from 'date-fns'; import { cloneDeep, groupBy, isNumber } from 'lodash'; import { Observable } from 'rxjs'; @@ -74,10 +72,6 @@ export class DataService { return this.http.get('/api/v1/account'); } - public fetchPlatforms() { - return this.http.get('/api/v1/platform'); - } - public fetchActivities({ filters }: { @@ -152,10 +146,6 @@ export class DataService { return this.http.delete(`/api/v1/account/${aId}`); } - public deletePlatform(aId: string) { - return this.http.delete(`/api/v1/platform/${aId}`); - } - public deleteAllOrders() { return this.http.delete(`/api/v1/order/`); } @@ -415,10 +405,6 @@ export class DataService { return this.http.post(`/api/v1/account`, aAccount); } - public postPlatform(aPlatform: CreatePlatformDto) { - return this.http.post(`/api/v1/platform`, aPlatform); - } - public postOrder(aOrder: CreateOrderDto) { return this.http.post(`/api/v1/order`, aOrder); } @@ -431,13 +417,6 @@ export class DataService { return this.http.put(`/api/v1/account/${aAccount.id}`, aAccount); } - public putPlatform(aPlatform: UpdatePlatformDto) { - return this.http.put( - `/api/v1/platform/${aPlatform.id}`, - aPlatform - ); - } - public putAdminSetting(key: string, aData: PropertyDto) { return this.http.put(`/api/v1/admin/settings/${key}`, aData); } diff --git a/libs/common/src/lib/permissions.ts b/libs/common/src/lib/permissions.ts index 3cee2072b..30bd627bc 100644 --- a/libs/common/src/lib/permissions.ts +++ b/libs/common/src/lib/permissions.ts @@ -6,11 +6,13 @@ export const permissions = { createAccess: 'createAccess', createAccount: 'createAccount', createOrder: 'createOrder', + createPlatform: 'createPlatform', createUserAccount: 'createUserAccount', deleteAccess: 'deleteAccess', deleteAccount: 'deleteAcccount', deleteAuthDevice: 'deleteAuthDevice', deleteOrder: 'deleteOrder', + deletePlatform: 'deletePlatform', deleteUser: 'deleteUser', enableFearAndGreedIndex: 'enableFearAndGreedIndex', enableImport: 'enableImport', @@ -26,11 +28,9 @@ export const permissions = { updateAccount: 'updateAccount', updateAuthDevice: 'updateAuthDevice', updateOrder: 'updateOrder', + updatePlatform: 'updatePlatform', updateUserSettings: 'updateUserSettings', - updateViewMode: 'updateViewMode', - createPlatform: 'createPlatform', - deletePlatform: 'deletePlatform', - updatePlatform: 'updatePlatform' + updateViewMode: 'updateViewMode' }; export function getPermissions(aRole: Role): string[] { @@ -41,19 +41,19 @@ export function getPermissions(aRole: Role): string[] { permissions.createAccess, permissions.createAccount, permissions.createOrder, + permissions.createPlatform, permissions.deleteAccess, permissions.deleteAccount, permissions.deleteAuthDevice, permissions.deleteOrder, + permissions.deletePlatform, permissions.deleteUser, permissions.updateAccount, permissions.updateAuthDevice, permissions.updateOrder, + permissions.updatePlatform, permissions.updateUserSettings, - permissions.updateViewMode, - permissions.createPlatform, - permissions.deletePlatform, - permissions.updatePlatform + permissions.updateViewMode ]; case 'DEMO':