From e8660acd9d9a82a4b82f9f4b8b22f063c454511a Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Sun, 5 Feb 2023 18:36:34 +0100 Subject: [PATCH] Refactoring --- apps/api/src/app/admin/admin.service.ts | 2 ++ apps/api/src/app/user/user.service.ts | 4 ++- .../admin-users/admin-users.component.ts | 12 ++++++++- .../components/admin-users/admin-users.html | 26 ++++++++++++++++--- .../lib/interfaces/admin-data.interface.ts | 1 + .../migration.sql | 2 ++ 6 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 prisma/migrations/20230205173009_added_country_to_analytics/migration.sql diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 87b9b9cc6..ad1620a23 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -244,6 +244,7 @@ export class AdminService { Analytics: { select: { activityCount: true, + country: true, updatedAt: true } }, @@ -277,6 +278,7 @@ export class AdminService { id, subscription, accountCount: _count.Account || 0, + country: Analytics.country, lastActivity: Analytics.updatedAt, transactionCount: _count.Order || 0 }; diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 7f02c86af..b45d1849d 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -18,6 +18,8 @@ import { Injectable } from '@nestjs/common'; import { Prisma, Role, User } from '@prisma/client'; import { sortBy } from 'lodash'; +import { CreateUserDto } from './create-user.dto'; + const crypto = require('crypto'); @Injectable() @@ -234,7 +236,7 @@ export class UserService { public async createUser({ country, data - }: { country?: string } & { data: Prisma.UserCreateInput }): Promise { + }: CreateUserDto & { data: Prisma.UserCreateInput }): Promise { if (!data?.provider) { data.provider = 'ANONYMOUS'; } diff --git a/apps/client/src/app/components/admin-users/admin-users.component.ts b/apps/client/src/app/components/admin-users/admin-users.component.ts index 7f2a34d2b..11ef91b8d 100644 --- a/apps/client/src/app/components/admin-users/admin-users.component.ts +++ b/apps/client/src/app/components/admin-users/admin-users.component.ts @@ -1,7 +1,8 @@ import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; -import { AdminData, User } from '@ghostfolio/common/interfaces'; +import { AdminData, InfoItem, User } from '@ghostfolio/common/interfaces'; +import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { differenceInSeconds, formatDistanceToNowStrict, @@ -16,6 +17,8 @@ import { takeUntil } from 'rxjs/operators'; templateUrl: './admin-users.html' }) export class AdminUsersComponent implements OnDestroy, OnInit { + public hasPermissionForSubscription: boolean; + public info: InfoItem; public user: User; public users: AdminData['users']; @@ -26,6 +29,13 @@ export class AdminUsersComponent implements OnDestroy, OnInit { private dataService: DataService, private userService: UserService ) { + this.info = this.dataService.fetchInfo(); + + this.hasPermissionForSubscription = hasPermission( + this.info?.globalPermissions, + permissions.enableSubscription + ); + this.userService.stateChanged .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((state) => { diff --git a/apps/client/src/app/components/admin-users/admin-users.html b/apps/client/src/app/components/admin-users/admin-users.html index 53bb75a6f..15983f2f7 100644 --- a/apps/client/src/app/components/admin-users/admin-users.html +++ b/apps/client/src/app/components/admin-users/admin-users.html @@ -7,7 +7,13 @@ # User - + + Country + + Registration @@ -16,7 +22,10 @@ Activities - + Engagement per Day Last Request @@ -41,7 +50,13 @@ > - + + {{ userItem.country }} + + {{ formatDistanceToNow(userItem.createdAt) }} @@ -58,7 +73,10 @@ [value]="userItem.transactionCount" > - +