Skip to content

Commit bfef9b9

Browse files
SevenWaysDPbischofmax
authored andcommitted
BC-11264 - Enhance Helpdesk functionality by adding instanceName to UserContext and updating user agent parsing with consent handling (#6111)
* BC-11264 - Enhance Helpdesk functionality by adding instanceName to UserContext and updating user agent parsing with consent handling * Add Helpdesk configuration and enhance user context with instance name * Update text formatting to include dynamic subject lines in problem and wish texts * Enhance Helpdesk functionality by integrating AccountService and updating text formatting to include account details in problem and wish texts * Integrate AccountService into HelpdeskUc and update user context creation; refactor text formatting to use user context data --------- Co-authored-by: Max Bischof <maximilian.bischof@dataport.de>
1 parent 97bc9f1 commit bfef9b9

File tree

10 files changed

+295
-266
lines changed

10 files changed

+295
-266
lines changed

apps/server/src/modules/helpdesk/api/helpdesk.controller.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export class HelpdeskController {
2727
@UploadedFiles(new HelpdeskFileValidationPipe())
2828
files?: Express.Multer.File[]
2929
): Promise<void> {
30-
const userAgent: IResult = this.parseUserAgent(userAgentHeader);
30+
const userAgent = this.parseUserAgent(userAgentHeader, body.consent);
3131

3232
await this.helpdeskUc.createHelpdeskProblem(currentUser.userId, body, files, userAgent);
3333
}
@@ -45,12 +45,15 @@ export class HelpdeskController {
4545
@UploadedFiles(new HelpdeskFileValidationPipe())
4646
files?: Express.Multer.File[]
4747
): Promise<void> {
48-
const userAgent: IResult = this.parseUserAgent(userAgentHeader);
48+
const userAgent = this.parseUserAgent(userAgentHeader, body.consent);
4949

5050
await this.helpdeskUc.createHelpdeskWish(currentUser.userId, body, files, userAgent);
5151
}
5252

53-
private parseUserAgent(userAgentHeader: string): IResult {
53+
private parseUserAgent(userAgentHeader: string, consent?: boolean): IResult | undefined {
54+
if (!consent) {
55+
return undefined;
56+
}
5457
const ua = new UAParser(userAgentHeader);
5558

5659
return ua.getResult();

apps/server/src/modules/helpdesk/api/helpdesk.uc.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
1+
import { Account, AccountService } from '@modules/account';
12
import { AuthorizationContextBuilder, AuthorizationService } from '@modules/authorization';
23
import { School, SchoolService } from '@modules/school';
34
import { User } from '@modules/user/repo';
4-
import { Injectable } from '@nestjs/common';
5+
import { Inject, Injectable } from '@nestjs/common';
56
import { Permission } from '@shared/domain/interface';
67
import { EntityId } from '@shared/domain/types';
78
import { IResult } from 'ua-parser-js';
89
import { HelpdeskService, UserContext, UserDevice } from '../domain';
10+
import { HELPDESK_CONFIG_TOKEN, HelpdeskConfig } from '../helpdesk-config';
911
import { HelpdeskProblemCreateParams, HelpdeskWishCreateParams } from './dto';
1012

1113
@Injectable()
1214
export class HelpdeskUc {
1315
constructor(
1416
private readonly helpdeskProblemService: HelpdeskService,
1517
private readonly authorizationService: AuthorizationService,
16-
private readonly schoolService: SchoolService
18+
private readonly schoolService: SchoolService,
19+
private readonly accountService: AccountService,
20+
@Inject(HELPDESK_CONFIG_TOKEN) private readonly config: HelpdeskConfig
1721
) {}
1822

1923
public async createHelpdeskProblem(
@@ -24,7 +28,8 @@ export class HelpdeskUc {
2428
): Promise<void> {
2529
const { user, school } = await this.authorizeUserForSchool(userId);
2630

27-
const userContext = this.createUserContext(user, school);
31+
const account = await this.accountService.findByUserIdOrFail(userId);
32+
const userContext = this.createUserContext(user, school, account);
2833
const userDevice = this.createUserDevice(userAgent);
2934

3035
await this.helpdeskProblemService.createProblem(params, userContext, userDevice, files);
@@ -38,7 +43,8 @@ export class HelpdeskUc {
3843
): Promise<void> {
3944
const { user, school } = await this.authorizeUserForSchool(userId);
4045

41-
const userContext = this.createUserContext(user, school);
46+
const account = await this.accountService.findByUserIdOrFail(userId);
47+
const userContext = this.createUserContext(user, school, account);
4248
const userDevice = this.createUserDevice(userAgent);
4349

4450
await this.helpdeskProblemService.createWish(params, userContext, userDevice, files);
@@ -60,14 +66,15 @@ export class HelpdeskUc {
6066
};
6167
}
6268

63-
private createUserContext(user: User, school: School): UserContext {
69+
private createUserContext(user: User, school: School, account: Account): UserContext {
6470
const userContext = new UserContext({
6571
userId: user.id,
66-
userName: `${user.firstName} ${user.lastName}`,
72+
userName: account.username,
6773
userEmail: user.email,
6874
userRoles: user.roles?.getItems()?.map((role) => role.name),
6975
schoolId: school.id,
7076
schoolName: school.getProps().name,
77+
instanceName: this.config.instanceName,
7178
});
7279

7380
return userContext;

apps/server/src/modules/helpdesk/domain/interface/helpdesk.interface.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,5 @@ export interface UserContextProps {
3434
userRoles: string[];
3535
schoolId: EntityId;
3636
schoolName: string;
37+
instanceName: string;
3738
}

0 commit comments

Comments
 (0)