Skip to content

Commit ce179aa

Browse files
committed
Merge remote-tracking branch 'origin/feat/2063-add-compliance-server-side' into feat/2063-add-compliance-server-side
2 parents b8f8944 + 17acc03 commit ce179aa

File tree

10 files changed

+44
-47
lines changed

10 files changed

+44
-47
lines changed

.github/workflows/pullrequest-coverage-reporter.yml

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -168,20 +168,3 @@ jobs:
168168
});
169169
170170
console.log('Updated PR description with coverage results');
171-
172-
// Notify the author
173-
let commentBody;
174-
if (prCheckConclusion === 'failure') {
175-
commentBody = `@${pr.user.login} Test coverage could not be fully measured because some tests failed. Please check the [workflow logs](${runUrl}) for details.`;
176-
} else if (hasTable) {
177-
commentBody = `@${pr.user.login} Test coverage has been automatically updated in the PR description.`;
178-
} else {
179-
commentBody = `@${pr.user.login} No code changes detected - test coverage not required for this PR.`;
180-
}
181-
182-
await github.rest.issues.createComment({
183-
owner,
184-
repo,
185-
issue_number: prNumber,
186-
body: commentBody
187-
});

src/main/java/de/tum/cit/aet/core/service/UserDataExportService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import de.tum.cit.aet.core.service.export.UserDataSectionProvider;
1616
import de.tum.cit.aet.core.service.export.UserExportZipWriter;
1717
import de.tum.cit.aet.notification.constants.EmailType;
18-
import de.tum.cit.aet.notification.dto.DataExportEmailContext;
18+
import de.tum.cit.aet.notification.dto.DataExportEmailContextDTO;
1919
import de.tum.cit.aet.notification.service.AsyncEmailSender;
2020
import de.tum.cit.aet.notification.service.mail.Email;
2121
import de.tum.cit.aet.usermanagement.constants.UserRole;
@@ -258,7 +258,7 @@ private void sendExportReadyEmail(DataExportRequest request) {
258258
.to(user)
259259
.language(Language.fromCode(user.getSelectedLanguage()))
260260
.emailType(EmailType.DATA_EXPORT_READY)
261-
.content(new DataExportEmailContext(user, downloadLink, exportExpiresDays))
261+
.content(DataExportEmailContextDTO.fromUser(user, downloadLink, exportExpiresDays))
262262
.build();
263263

264264
sender.sendAsync(email);

src/main/java/de/tum/cit/aet/notification/dto/DataExportEmailContext.java

Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package de.tum.cit.aet.notification.dto;
2+
3+
import com.fasterxml.jackson.annotation.JsonInclude;
4+
import de.tum.cit.aet.usermanagement.domain.User;
5+
6+
@JsonInclude(JsonInclude.Include.NON_NULL)
7+
public record DataExportEmailContextDTO(String userFirstName, String userLastName, String downloadLink, long expiresDays) {
8+
public static DataExportEmailContextDTO fromUser(User user, String downloadLink, long expiresDays) {
9+
return new DataExportEmailContextDTO(user.getFirstName(), user.getLastName(), downloadLink, expiresDays);
10+
}
11+
}

src/main/java/de/tum/cit/aet/notification/dto/ResearchGroupEmailContext.java renamed to src/main/java/de/tum/cit/aet/notification/dto/ResearchGroupEmailContextDTO.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,8 @@
88
* Context object for research group emails that need both recipient and group data.
99
*/
1010
@JsonInclude(JsonInclude.Include.NON_NULL)
11-
public record ResearchGroupEmailContext(User user, ResearchGroup researchGroup) {}
11+
public record ResearchGroupEmailContextDTO(String userFirstName, String userLastName, String researchGroupName) {
12+
public static ResearchGroupEmailContextDTO fromEntities(User user, ResearchGroup researchGroup) {
13+
return new ResearchGroupEmailContextDTO(user.getFirstName(), user.getLastName(), researchGroup.getName());
14+
}
15+
}

src/main/java/de/tum/cit/aet/notification/service/TemplateProcessingService.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
import de.tum.cit.aet.job.domain.Job;
1010
import de.tum.cit.aet.notification.constants.TemplateVariable;
1111
import de.tum.cit.aet.notification.domain.EmailTemplateTranslation;
12-
import de.tum.cit.aet.notification.dto.DataExportEmailContext;
12+
import de.tum.cit.aet.notification.dto.DataExportEmailContextDTO;
1313
import de.tum.cit.aet.notification.dto.JobPublicationEmailContextDTO;
14-
import de.tum.cit.aet.notification.dto.ResearchGroupEmailContext;
14+
import de.tum.cit.aet.notification.dto.ResearchGroupEmailContextDTO;
1515
import de.tum.cit.aet.usermanagement.domain.ResearchGroup;
1616
import de.tum.cit.aet.usermanagement.domain.User;
1717
import freemarker.core.TemplateClassResolver;
@@ -179,9 +179,9 @@ private Map<String, Object> createDataModel(Object content) {
179179
case Job job -> addJobData(dataModel, job);
180180
case ResearchGroup researchGroup -> addResearchGroupData(dataModel, researchGroup);
181181
case InterviewSlot slot -> addInterviewSlotData(dataModel, slot);
182-
case ResearchGroupEmailContext ctx -> addResearchGroupContextData(dataModel, ctx);
182+
case ResearchGroupEmailContextDTO ctx -> addResearchGroupContextData(dataModel, ctx);
183183
case Interviewee interviewee -> addIntervieweeData(dataModel, interviewee);
184-
case DataExportEmailContext ctx -> addDataExportContextData(dataModel, ctx);
184+
case DataExportEmailContextDTO ctx -> addDataExportContextData(dataModel, ctx);
185185
case JobPublicationEmailContextDTO ctx -> addJobPublicationContextData(dataModel, ctx);
186186
case User user -> addUserData(dataModel, user);
187187
default -> {
@@ -252,9 +252,10 @@ private void addInterviewSlotData(Map<String, Object> dataModel, InterviewSlot s
252252
/**
253253
* Adds combined user and research group data for research-group-related emails.
254254
*/
255-
private void addResearchGroupContextData(Map<String, Object> dataModel, ResearchGroupEmailContext context) {
256-
addUserData(dataModel, context.user());
257-
addResearchGroupData(dataModel, context.researchGroup());
255+
private void addResearchGroupContextData(Map<String, Object> dataModel, ResearchGroupEmailContextDTO context) {
256+
dataModel.put(TemplateVariable.USER_FIRST_NAME.getValue(), context.userFirstName());
257+
dataModel.put(TemplateVariable.USER_LAST_NAME.getValue(), context.userLastName());
258+
dataModel.put(TemplateVariable.RESEARCH_GROUP_NAME.getValue(), context.researchGroupName());
258259
}
259260

260261
/**
@@ -283,8 +284,9 @@ private void addResearchGroupData(Map<String, Object> dataModel, ResearchGroup r
283284
dataModel.put(TemplateVariable.RESEARCH_GROUP_NAME.getValue(), researchGroup.getName());
284285
}
285286

286-
private void addDataExportContextData(Map<String, Object> dataModel, DataExportEmailContext ctx) {
287-
addUserData(dataModel, ctx.user());
287+
private void addDataExportContextData(Map<String, Object> dataModel, DataExportEmailContextDTO ctx) {
288+
dataModel.put(TemplateVariable.USER_FIRST_NAME.getValue(), ctx.userFirstName());
289+
dataModel.put(TemplateVariable.USER_LAST_NAME.getValue(), ctx.userLastName());
288290
dataModel.put(TemplateVariable.DOWNLOAD_LINK.getValue(), ctx.downloadLink());
289291
dataModel.put(TemplateVariable.EXPORT_EXPIRES_DAYS.getValue(), ctx.expiresDays());
290292
}

src/main/java/de/tum/cit/aet/usermanagement/service/ResearchGroupService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import de.tum.cit.aet.core.util.PageUtil;
1515
import de.tum.cit.aet.core.util.StringUtil;
1616
import de.tum.cit.aet.notification.constants.EmailType;
17-
import de.tum.cit.aet.notification.dto.ResearchGroupEmailContext;
17+
import de.tum.cit.aet.notification.dto.ResearchGroupEmailContextDTO;
1818
import de.tum.cit.aet.notification.service.AsyncEmailSender;
1919
import de.tum.cit.aet.notification.service.EmailTemplateService;
2020
import de.tum.cit.aet.notification.service.mail.Email;
@@ -748,7 +748,7 @@ private void sendWelcomeToResearchGroupEmail(User user, ResearchGroup researchGr
748748
.to(user)
749749
.language(language)
750750
.emailType(EmailType.RESEARCH_GROUP_MEMBER_ADDED)
751-
.content(new ResearchGroupEmailContext(user, researchGroup))
751+
.content(ResearchGroupEmailContextDTO.fromEntities(user, researchGroup))
752752
.researchGroup(researchGroup)
753753
.build();
754754

@@ -768,7 +768,7 @@ private void sendApprovedResearchGroupEmail(User prof, ResearchGroup researchGro
768768
.to(prof)
769769
.language(language)
770770
.emailType(EmailType.RESEARCH_GROUP_APPROVED)
771-
.content(new ResearchGroupEmailContext(prof, researchGroup))
771+
.content(ResearchGroupEmailContextDTO.fromEntities(prof, researchGroup))
772772
.researchGroup(researchGroup)
773773
.build();
774774

src/main/webapp/app/shared/settings/settings.component.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ <h1 jhiTranslate="settings.header">Settings</h1>
77
[tabs]="tabs()"
88
[activeTabId]="activeTab()"
99
[lazyLoad]="true"
10-
[tabPanelsClass]="'px-4 xl:px-32 2xl:px-64'"
10+
[tabPanelsClass]="'w-full max-w-4xl mx-auto px-4 sm:px-5 md:px-6 lg:px-8 xl:px-10'"
1111
(tabChange)="onTabChange($event)"
1212
>
1313
<ng-template jhiTabPanel="general">
@@ -24,8 +24,10 @@ <h2 class="font-medium text-text-primary text-lg" jhiTranslate="settings.appeara
2424
<jhi-select [items]="themeOptions" [selected]="selectedTheme()" (selectedChange)="onThemeChange($event)" [translateItems]="true" />
2525
</div>
2626

27-
<p-divider class="my-6" layout="horizontal" />
28-
<jhi-ai-consent-settings [currentRole]="role()" />
27+
@if (role() !== UserShortDTORolesEnum.Admin) {
28+
<p-divider class="my-6" layout="horizontal" />
29+
<jhi-ai-consent-settings [currentRole]="role()" />
30+
}
2931
</ng-template>
3032

3133
<ng-template jhiTabPanel="notifications">

src/main/webapp/app/shared/settings/settings.component.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ export class SettingsComponent {
7474
exportInProgress = signal<boolean>(false);
7575
exportButtonDisabled = computed(() => this.exportCooldownRemaining() > 0 || this.exportInProgress());
7676

77+
protected readonly UserShortDTORolesEnum = UserShortDTORolesEnum;
7778
protected readonly themeService = inject(ThemeService);
7879
protected readonly accountService = inject(AccountService);
7980
private readonly destroyRef = inject(DestroyRef);

src/test/java/de/tum/cit/aet/usermanagement/service/ResearchGroupServiceTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import de.tum.cit.aet.core.dto.SortDTO;
1111
import de.tum.cit.aet.core.exception.*;
1212
import de.tum.cit.aet.core.service.CurrentUserService;
13-
import de.tum.cit.aet.notification.dto.ResearchGroupEmailContext;
13+
import de.tum.cit.aet.notification.dto.ResearchGroupEmailContextDTO;
1414
import de.tum.cit.aet.notification.service.AsyncEmailSender;
1515
import de.tum.cit.aet.notification.service.EmailTemplateService;
1616
import de.tum.cit.aet.notification.service.mail.Email;
@@ -388,10 +388,11 @@ void sendsApprovalEmailToProfessorOnActivate() {
388388
ArgumentCaptor<Email> emailCaptor = ArgumentCaptor.forClass(Email.class);
389389
verify(emailSender).sendAsync(emailCaptor.capture());
390390
Email sent = emailCaptor.getValue();
391-
assertThat(sent.getContent()).isInstanceOf(ResearchGroupEmailContext.class);
392-
ResearchGroupEmailContext context = (ResearchGroupEmailContext) sent.getContent();
393-
assertThat(context.researchGroup()).isEqualTo(testResearchGroup);
394-
assertThat(context.user().getEmail()).isEqualTo("prof@test.com");
391+
assertThat(sent.getContent()).isInstanceOf(ResearchGroupEmailContextDTO.class);
392+
ResearchGroupEmailContextDTO context = (ResearchGroupEmailContextDTO) sent.getContent();
393+
assertThat(context.researchGroupName()).isEqualTo(testResearchGroup.getName());
394+
assertThat(context.userFirstName()).isEqualTo("Prof");
395+
assertThat(context.userLastName()).isEqualTo("X");
395396
assertThat(sent.getTo()).anyMatch(u -> u.getEmail().equals("prof@test.com"));
396397
}
397398
}

0 commit comments

Comments
 (0)