| 
						
						
						
					 | 
				
				 | 
				
					@ -1,3 +1,5 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { SubscriptionService } from '@ghostfolio/api/app/subscription/subscription.service'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { ConfigurationService } from '@ghostfolio/api/services/configuration.service'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { DataGatheringService } from '@ghostfolio/api/services/data-gathering.service'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data.service'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { PrismaService } from '@ghostfolio/api/services/prisma.service'; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -9,9 +11,11 @@ import { differenceInDays } from 'date-fns'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					@Injectable() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					export class AdminService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public constructor( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    private readonly configurationService: ConfigurationService, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    private readonly dataGatheringService: DataGatheringService, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    private readonly exchangeRateDataService: ExchangeRateDataService, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    private readonly prismaService: PrismaService | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    private readonly prismaService: PrismaService, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    private readonly subscriptionService: SubscriptionService | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  ) {} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public async get(): Promise<AdminData> { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -107,7 +111,8 @@ export class AdminService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        createdAt: true, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id: true | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        id: true, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        Subscription: true | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      take: 30, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      where: { | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -118,16 +123,23 @@ export class AdminService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return usersWithAnalytics.map( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ({ _count, alias, Analytics, createdAt, id }) => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ({ _count, alias, Analytics, createdAt, id, Subscription }) => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        const daysSinceRegistration = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          differenceInDays(new Date(), createdAt) + 1; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        const engagement = Analytics.activityCount / daysSinceRegistration; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        const subscription = this.configurationService.get( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          'ENABLE_FEATURE_SUBSCRIPTION' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ? this.subscriptionService.getSubscription(Subscription) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          : undefined; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          alias, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          createdAt, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          engagement, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          id, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          subscription, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          accountCount: _count.Account || 0, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          lastActivity: Analytics.updatedAt, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          transactionCount: _count.Order || 0 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |