|
|
@ -62,7 +62,7 @@ import { EventEmitter2 } from '@nestjs/event-emitter'; |
|
|
import { InjectThrottlerStorage, ThrottlerStorage } from '@nestjs/throttler'; |
|
|
import { InjectThrottlerStorage, ThrottlerStorage } from '@nestjs/throttler'; |
|
|
import { Prisma, Role, User } from '@prisma/client'; |
|
|
import { Prisma, Role, User } from '@prisma/client'; |
|
|
import { differenceInDays, subDays } from 'date-fns'; |
|
|
import { differenceInDays, subDays } from 'date-fns'; |
|
|
import { isNil, without } from 'lodash'; |
|
|
import { isNil, min, without } from 'lodash'; |
|
|
import { createHmac } from 'node:crypto'; |
|
|
import { createHmac } from 'node:crypto'; |
|
|
|
|
|
|
|
|
@Injectable() |
|
|
@Injectable() |
|
|
@ -130,7 +130,6 @@ export class UserService { |
|
|
access, |
|
|
access, |
|
|
accounts, |
|
|
accounts, |
|
|
activitiesGroupedByType, |
|
|
activitiesGroupedByType, |
|
|
firstActivity, |
|
|
|
|
|
impersonationUser, |
|
|
impersonationUser, |
|
|
tagsForUser |
|
|
tagsForUser |
|
|
] = await Promise.all([ |
|
|
] = await Promise.all([ |
|
|
@ -151,15 +150,8 @@ export class UserService { |
|
|
} |
|
|
} |
|
|
}), |
|
|
}), |
|
|
this.prismaService.order.groupBy({ |
|
|
this.prismaService.order.groupBy({ |
|
|
_count: { _all: true }, |
|
|
_min: { date: true }, |
|
|
by: ['type'], |
|
|
by: ['type'], |
|
|
orderBy: { type: 'asc' }, |
|
|
|
|
|
where: { userId: impersonationUserId || user.id } |
|
|
|
|
|
}), |
|
|
|
|
|
this.prismaService.order.findFirst({ |
|
|
|
|
|
orderBy: { |
|
|
|
|
|
date: 'asc' |
|
|
|
|
|
}, |
|
|
|
|
|
where: { userId: impersonationUserId || user.id } |
|
|
where: { userId: impersonationUserId || user.id } |
|
|
}), |
|
|
}), |
|
|
impersonationUserId |
|
|
impersonationUserId |
|
|
@ -168,17 +160,21 @@ export class UserService { |
|
|
this.tagService.getTagsForUser(impersonationUserId || user.id) |
|
|
this.tagService.getTagsForUser(impersonationUserId || user.id) |
|
|
]); |
|
|
]); |
|
|
|
|
|
|
|
|
const activitiesCount = activitiesGroupedByType.reduce( |
|
|
const activitiesCount = impersonationUser |
|
|
(count, { _count }) => { |
|
|
? impersonationUser.activitiesCount |
|
|
return count + _count._all; |
|
|
: user.activitiesCount; |
|
|
}, |
|
|
|
|
|
0 |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
const activityTypes = activitiesGroupedByType.map(({ type }) => { |
|
|
const activityTypes = activitiesGroupedByType.map(({ type }) => { |
|
|
return type; |
|
|
return type; |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
const dateOfFirstActivity = |
|
|
|
|
|
min( |
|
|
|
|
|
activitiesGroupedByType.map(({ _min }) => { |
|
|
|
|
|
return _min.date; |
|
|
|
|
|
}) |
|
|
|
|
|
) ?? new Date(); |
|
|
|
|
|
|
|
|
const resolvedUserSettings = resolveUserSettings({ |
|
|
const resolvedUserSettings = resolveUserSettings({ |
|
|
impersonationUserSettings: impersonationUser?.settings |
|
|
impersonationUserSettings: impersonationUser?.settings |
|
|
?.settings as UserSettings, |
|
|
?.settings as UserSettings, |
|
|
@ -224,6 +220,7 @@ export class UserService { |
|
|
return { |
|
|
return { |
|
|
activitiesCount, |
|
|
activitiesCount, |
|
|
activityTypes, |
|
|
activityTypes, |
|
|
|
|
|
dateOfFirstActivity, |
|
|
id, |
|
|
id, |
|
|
permissions, |
|
|
permissions, |
|
|
referralPartners, |
|
|
referralPartners, |
|
|
@ -242,7 +239,6 @@ export class UserService { |
|
|
accounts: accounts.sort((a, b) => { |
|
|
accounts: accounts.sort((a, b) => { |
|
|
return a.name.toLowerCase().localeCompare(b.name.toLowerCase()); |
|
|
return a.name.toLowerCase().localeCompare(b.name.toLowerCase()); |
|
|
}), |
|
|
}), |
|
|
dateOfFirstActivity: firstActivity?.date ?? new Date(), |
|
|
|
|
|
settings: { |
|
|
settings: { |
|
|
...resolvedUserSettings, |
|
|
...resolvedUserSettings, |
|
|
baseCurrency: resolvedUserSettings.baseCurrency ?? DEFAULT_CURRENCY, |
|
|
baseCurrency: resolvedUserSettings.baseCurrency ?? DEFAULT_CURRENCY, |
|
|
@ -340,6 +336,7 @@ export class UserService { |
|
|
const user: UserWithSettings = { |
|
|
const user: UserWithSettings = { |
|
|
accessToken, |
|
|
accessToken, |
|
|
accounts, |
|
|
accounts, |
|
|
|
|
|
activitiesCount, |
|
|
authChallenge, |
|
|
authChallenge, |
|
|
createdAt, |
|
|
createdAt, |
|
|
id, |
|
|
id, |
|
|
|