Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
eb42bfd
Initial renaming of c# class
eliaspr Jun 4, 2026
47e10f1
Migration 1
eliaspr Jun 4, 2026
2dde937
Migration 2 (update table names)
eliaspr Jun 4, 2026
1d4533d
Rename namespace to TournamentPlanner
eliaspr Jun 4, 2026
b97a0d3
Finish Core renaming
eliaspr Jun 4, 2026
4957e49
Update context model snapshot
eliaspr Jun 4, 2026
c5a276a
Finish renaming in DAL
eliaspr Jun 4, 2026
16d7c26
Rename most of App
eliaspr Jun 4, 2026
cd0edc8
Update affected client app parts
eliaspr Jun 4, 2026
dab774f
Update routes
eliaspr Jun 4, 2026
59c1b60
More client app renaming
eliaspr Jun 4, 2026
f066edb
More client app renaming
eliaspr Jun 4, 2026
06d3c9d
Move unit test
eliaspr Jun 4, 2026
25bca34
Fix some backend leftovers
eliaspr Jun 4, 2026
a51be7b
Find/replce in frontend
eliaspr Jun 4, 2026
cbcf856
Move view-tournament-planner component
eliaspr Jun 4, 2026
d998e4f
Move create-tournament-planner component
eliaspr Jun 4, 2026
457d605
Some last fixes
eliaspr Jun 4, 2026
8b2315a
Combine migrations
eliaspr Jun 20, 2026
a93da10
Update comment and add migration markers
eliaspr Jun 20, 2026
36f0302
Simplify migration code
eliaspr Jun 20, 2026
4c07374
Fix formatting
eliaspr Jun 20, 2026
eb8209b
Merge branch 'main' into eliaspr/tournament-planner-renaming
eliaspr Jun 20, 2026
d238113
Fix redirect
eliaspr Jun 20, 2026
eb88954
Fix migration order and extend comment
eliaspr Jun 20, 2026
3fba330
[maybe revert] Add migration for sequence
eliaspr Jun 20, 2026
3eb7e0e
[test] delete migration
eliaspr Jun 21, 2026
a06a186
Alternative migration approach
eliaspr Jun 21, 2026
a96b220
Update model snapshot
eliaspr Jun 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/Turnierplan.App.Test.Unit/Helpers/RbacScopeHelperTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
using Turnierplan.Core.Folder;
using Turnierplan.Core.Image;
using Turnierplan.Core.Organization;
using Turnierplan.Core.PlanningRealm;
using Turnierplan.Core.PublicId;
using Turnierplan.Core.Tournament;
using Turnierplan.Core.TournamentPlanner;
using Turnierplan.Core.Venue;
using Xunit;

Expand All @@ -32,8 +32,8 @@ public void RbacScopeHelper___GetScopeId___Returns_Expected_Value()
[InlineData("Folder:NobBmcA2jNc", nameof(Folder))]
[InlineData("Image:NobBmcA2jNc", nameof(Image))]
[InlineData("Organization:NobBmcA2jNc", nameof(Organization))]
[InlineData("PlanningRealm:NobBmcA2jNc", nameof(PlanningRealm))]
[InlineData("Tournament:NobBmcA2jNc", nameof(Tournament))]
[InlineData("TournamentPlanner:NobBmcA2jNc", nameof(TournamentPlanner))]
[InlineData("Venue:NobBmcA2jNc", nameof(Venue))]
public void RbacScopeHelper___TryParseScopeId___Works_As_Expected(string scopeId, string expectedTypeName)
{
Expand Down
30 changes: 15 additions & 15 deletions src/Turnierplan.App/Client/src/app/i18n/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -171,30 +171,30 @@ export const de = {
Pages: {
Tournaments: 'Turniere',
Venues: 'Spielstätten',
PlanningRealms: 'Turnierplaner',
TournamentPlanners: 'Turnierplaner',
Images: 'Bilder',
ApiKeys: 'API-Schlüssel',
Settings: 'Einstellungen'
},
Badges: {
TournamentCount: 'Turniere',
VenueCount: 'Spielstätten',
PlanningRealmCount: 'Turnierplaner',
TournamentPlannerCount: 'Turnierplaner',
ImagesCount: 'Bilder',
ImagesTotalSize: 'Gesamtgröße',
ApiKeyCount: 'API-Schlüssel'
},
NewTournament: 'Neues Turnier',
NewVenue: 'Neue Spielstätte',
NewPlanningRealm: 'Neuer Turnierplaner',
NewTournamentPlanner: 'Neuer Turnierplaner',
UploadImage: 'Bild hochladen',
NewApiKey: 'Neuer API-Schlüssel',
NoTournaments: 'In dieser Organisation gibt es aktuell keine Turniere.\nErstellen Sie ein Turner mit der Schaltfläche oben rechts.',
NoVenues:
'In dieser Organisation gibt es aktuell keine Spielstätten.\nErstellen Sie eine Spielstätte mit der Schaltfläche oben rechts.',
NoPlanningRealms:
NoTournamentPlanners:
'In dieser Organisation gibt es aktuell keine Turnierplaner.\nErstellen Sie einen Turnierplaner mit der Schaltfläche oben rechts.',
OpenPlanningRealm: 'öffnen',
OpenTournamentPlanner: 'öffnen',
TournamentExplorer: {
EmptyFolder: 'In diesem Ordner befinden sich keine Turniere. Wählen Sie einen anderen Ordner oder erstellen Sie ein Turnier.',
RenameFolder: {
Expand Down Expand Up @@ -763,7 +763,7 @@ export const de = {
EnterNewName: 'Geben Sie den neuen Namen für die Gruppe ein:',
EmptyAllowed: 'Sie können das Feld leerlassen, um zum Standardnamen ("Gruppe A-Z") zurückzukehren.'
},
TeamFromPlanningRealm: 'Diese Mannschaft stammt aus einen Turnierplaner: "{{planningRealm}}" ("{{tournamentClass}}")',
TeamFromTournamentPlanner: 'Diese Mannschaft stammt aus einen Turnierplaner: "{{tournamentPlanner}}" ("{{tournamentClass}}")',
TeamRename: {
Button: 'Teamnamen ändern',
Title: 'Teamnamen ändern',
Expand Down Expand Up @@ -978,7 +978,7 @@ export const de = {
},
ExcludedTournamentsNotice: 'Folgende Turniere sind bei dieser Statistik ausgenommen: {{tournamentNames}}'
},
CreatePlanningRealm: {
CreateTournamentPlanner: {
Title: 'Neuen Turnierplaner erstellen',
Form: {
Name: 'Name',
Expand All @@ -988,7 +988,7 @@ export const de = {
OrganizationNotice: 'Es wird ein neuer Turnierplaner in der Organisation <span class="fw-bold">{{organizationName}}</span> angelegt.',
Submit: 'Erstellen'
},
ViewPlanningRealm: {
ViewTournamentPlanner: {
Pages: {
TournamentClasses: 'Turnierklassen',
InvitationLinks: 'Anmeldelinks',
Expand Down Expand Up @@ -1046,7 +1046,7 @@ export const de = {
InfoTest: 'Nachfolgend können Sie eine CSV-Tabelle mit allen Anmeldungen in diesem Turnierplaner herunterladen.',
IncludeApplicationTeams: 'Mannschaften auflisten',
Download: 'Herunterladen',
FileName: 'Anmeldungen {{planningRealmName}}'
FileName: 'Anmeldungen {{tournamentPlannerName}}'
},
TournamentClasses: {
Name: 'Name',
Expand Down Expand Up @@ -1368,11 +1368,11 @@ export const de = {
},
SelectApplicationTeam: {
Explanation: 'Wählen Sie eine angemeldete Mannschaft aus einem Turnierplaner:',
LoadingPlanningRealms: 'Turnierplaner werden geladen',
LoadingPlanningRealmsFailed: 'Fehler beim Laden der Turnierplaner',
NoPlanningRealms: 'In dieser Organisation gibt es keine Turnierplaner',
LoadingPlanningRealmDetail: 'Turnierplaner wird geladen',
LoadingPlanningRealmDetailFailed: 'Fehler beim Laden des Turnierplaners',
LoadingTournamentPlanners: 'Turnierplaner werden geladen',
LoadingTournamentPlannersFailed: 'Fehler beim Laden der Turnierplaner',
NoTournamentPlanners: 'In dieser Organisation gibt es keine Turnierplaner',
LoadingTournamentPlannerDetail: 'Turnierplaner wird geladen',
LoadingTournamentPlannerDetailFailed: 'Fehler beim Laden des Turnierplaners',
FilterExplanation: 'Suchen und wählen Sie die Mannschaften zum Hinzufügen:',
FilterTooltip: 'Dieser Suchfilter wird synchronisiert mit dem Filter auf der Turnierplaner-Seite',
LoadingApplications: 'Mannschaftsanmeldungen werden geladen',
Expand Down Expand Up @@ -1433,7 +1433,7 @@ export const de = {
Tooltip: 'Organisation',
NotInherited: 'Zuweisung liegt auf dieser Organisation'
},
PlanningRealm: {
TournamentPlanner: {
Tooltip: 'Turnierplaner',
NotInherited: 'Zuweisung liegt auf diesem Turnierplaner'
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,19 @@
<span class="mx-1">&middot;</span>
<span>{{ changeLogTimestamp | translateDate }}</span>
<span class="mx-1">&middot;</span>
<span [translate]="'Portal.ViewPlanningRealm.Applications.ChangeLog.Types.' + changeLogType"></span>
<span [translate]="'Portal.ViewTournamentPlanner.Applications.ChangeLog.Types.' + changeLogType"></span>
</span>

@if (changeLogType === ApplicationChangeLogType.LabelAdded) {
<div class="d-flex flex-row align-items-center gap-1">
<tp-label [label]="mockLabel!" />
<span class="ms-1" [translate]="'Portal.ViewPlanningRealm.Applications.ChangeLog.LabelAdded'"></span>
<span class="ms-1" [translate]="'Portal.ViewTournamentPlanner.Applications.ChangeLog.LabelAdded'"></span>
<span class="text-decoration-underline">{{ teamName }}</span>
</div>
} @else if (changeLogType === ApplicationChangeLogType.LabelRemoved) {
<div class="d-flex flex-row align-items-center gap-1">
<tp-label [label]="mockLabel!" />
<span class="ms-1" [translate]="'Portal.ViewPlanningRealm.Applications.ChangeLog.LabelRemoved'"></span>
<span class="ms-1" [translate]="'Portal.ViewTournamentPlanner.Applications.ChangeLog.LabelRemoved'"></span>
<span class="text-decoration-underline">{{ teamName }}</span>
</div>
} @else if (changeLogType === ApplicationChangeLogType.TeamAdded) {
Expand All @@ -29,7 +29,7 @@
<span class="value-display p-1 border flex-grow-0">
<i
class="bi-x-diamond me-2"
[ngbTooltip]="'Portal.ViewPlanningRealm.Applications.ChangeLog.TournamentClassTooltip' | translate"></i>
[ngbTooltip]="'Portal.ViewTournamentPlanner.Applications.ChangeLog.TournamentClassTooltip' | translate"></i>
<span>{{ tournamentClassName }}</span>
</span>
</div>
Expand All @@ -44,7 +44,7 @@
<span class="value-display p-1 border flex-grow-0">
<i
class="bi-x-diamond me-2"
[ngbTooltip]="'Portal.ViewPlanningRealm.Applications.ChangeLog.TournamentClassTooltip' | translate"></i>
[ngbTooltip]="'Portal.ViewTournamentPlanner.Applications.ChangeLog.TournamentClassTooltip' | translate"></i>
<span>{{ tournamentClassName }}</span>
</span>
</div>
Expand All @@ -54,13 +54,13 @@
} @else if (changeLogType === ApplicationChangeLogType.TeamLinkCreated) {
<div class="d-flex flex-row align-items-center gap-1">
<span class="text-decoration-underline">{{ teamName }}</span>
<span class="ms-1" [translate]="'Portal.ViewPlanningRealm.Applications.ChangeLog.TeamLinkCreated'"></span>
<span class="ms-1" [translate]="'Portal.ViewTournamentPlanner.Applications.ChangeLog.TeamLinkCreated'"></span>
<span class="ms-1 text-decoration-underline">{{ tournamentName }}</span>
</div>
} @else if (changeLogType === ApplicationChangeLogType.TeamLinkDestroyed) {
<div class="d-flex flex-row align-items-center gap-1">
<span class="text-decoration-underline">{{ teamName }}</span>
<span class="ms-1" [translate]="'Portal.ViewPlanningRealm.Applications.ChangeLog.TeamLinkDestroyed'"></span>
<span class="ms-1" [translate]="'Portal.ViewTournamentPlanner.Applications.ChangeLog.TeamLinkDestroyed'"></span>
<span class="ms-1 text-decoration-underline">{{ tournamentName }}</span>
</div>
} @else {
Expand All @@ -70,7 +70,7 @@
} @else {
<span
class="value-display p-1 border text-secondary fst-italic flex-grow-0"
[translate]="'Portal.ViewPlanningRealm.Applications.ChangeLog.EmptyText'"></span>
[translate]="'Portal.ViewTournamentPlanner.Applications.ChangeLog.EmptyText'"></span>
}

<span class="mt-1 bi bi-arrow-right"></span>
Expand All @@ -80,7 +80,7 @@
} @else {
<span
class="value-display p-1 border text-secondary fst-italic flex-grow-0"
[translate]="'Portal.ViewPlanningRealm.Applications.ChangeLog.EmptyText'"></span>
[translate]="'Portal.ViewTournamentPlanner.Applications.ChangeLog.EmptyText'"></span>
}
</div>
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<ng-container *tpLoadingState="{ isLoading: isLoadingChangeLog }">
<div class="modal-header">
<div class="modal-title" translate="Portal.ViewPlanningRealm.Applications.ChangeLog.Title"></div>
<div class="modal-title" translate="Portal.ViewTournamentPlanner.Applications.ChangeLog.Title"></div>
<button type="button" class="btn-close" (click)="modal.close()"></button>
</div>
<div class="overflow-y-scroll p-3 gap-3 d-flex flex-column align-items-stretch">
Expand All @@ -16,7 +16,7 @@
<span class="mx-1">&middot;</span>
<span>{{ applicationCreatedAt | translateDate }}</span>
<span class="mx-1">&middot;</span>
<span [translate]="'Portal.ViewPlanningRealm.Applications.ChangeLog.ApplicationCreated'"></span>
<span [translate]="'Portal.ViewTournamentPlanner.Applications.ChangeLog.ApplicationCreated'"></span>
</span>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,18 +36,20 @@ export class ApplicationChangeLogComponent implements OnDestroy {
this.errorSubject$.complete();
}

public init(planningRealmId: string, application: ApplicationDto): void {
public init(tournamentPlannerId: string, application: ApplicationDto): void {
this.applicationCreatedAt = application.createdAt;

this.turnierplanApi.invoke(getApplicationChangeLog, { planningRealmId: planningRealmId, applicationId: application.id }).subscribe({
next: (result) => {
this.changeLog = result;
this.changeLog.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
this.isLoadingChangeLog = false;
},
error: (error) => {
this.errorSubject$.next(error);
}
});
this.turnierplanApi
.invoke(getApplicationChangeLog, { tournamentPlannerId: tournamentPlannerId, applicationId: application.id })
.subscribe({
next: (result) => {
this.changeLog = result;
this.changeLog.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
this.isLoadingChangeLog = false;
},
error: (error) => {
this.errorSubject$.next(error);
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,8 @@ export class ConfigureTournamentAddTeamComponent implements AfterViewInit {
id: undefined,
name: team.name,
teamLink: {
planningRealmId: team.planningRealmId,
planningRealmName: team.planningRealmName,
tournamentPlannerId: team.tournamentPlannerId,
tournamentPlannerName: team.tournamentPlannerName,
tournamentClassName: team.tournamentClassName,
applicationTeamId: team.applicationTeamId
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<div class="modal-header">
<div class="modal-title" translate="Portal.ViewPlanningRealm.ExportApplications.DialogTitle"></div>
<div class="modal-title" translate="Portal.ViewTournamentPlanner.ExportApplications.DialogTitle"></div>
<button type="button" class="btn-close" (click)="modal.dismiss()"></button>
</div>
<div class="modal-body">
<div class="mb-2" [translate]="'Portal.ViewPlanningRealm.ExportApplications.InfoTest'"></div>
<div class="mb-2" [translate]="'Portal.ViewTournamentPlanner.ExportApplications.InfoTest'"></div>
<div [formGroup]="form">
<div class="form-check form-switch">
<input
Expand All @@ -15,7 +15,7 @@
<label
class="form-check-label"
for="includeApplicationTeams"
translate="Portal.ViewPlanningRealm.ExportApplications.IncludeApplicationTeams"></label>
translate="Portal.ViewTournamentPlanner.ExportApplications.IncludeApplicationTeams"></label>
</div>
</div>
</div>
Expand All @@ -26,7 +26,7 @@
<tp-action-button [type]="'outline-dark'" [title]="'Portal.General.Cancel'" [disabled]="isDownloading" (buttonClick)="modal.dismiss()" />
<tp-action-button
[type]="'outline-primary'"
[title]="'Portal.ViewPlanningRealm.ExportApplications.Download'"
[title]="'Portal.ViewTournamentPlanner.ExportApplications.Download'"
[icon]="'download'"
[disabled]="isDownloading"
(buttonClick)="exportApplications()" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { ActionButtonComponent } from '../action-button/action-button.component'
import { SmallSpinnerComponent } from '../../../core/components/small-spinner/small-spinner.component';
import { TurnierplanApi } from '../../../api/turnierplan-api';
import { exportApplications } from '../../../api/fn/applications/export-applications';
import { PlanningRealmDto } from '../../../api/models/planning-realm-dto';
import { TournamentPlannerDto } from '../../../api/models/tournament-planner-dto';
import { makeSafeFileName } from '../../helpers/file-name';
import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';

Expand All @@ -20,26 +20,26 @@ export class ExportApplicationsDialogComponent {
});

protected isDownloading = false;
private planningRealm?: PlanningRealmDto;
private tournamentPlanner?: TournamentPlannerDto;

constructor(
protected readonly modal: NgbActiveModal,
private readonly turnierplanApi: TurnierplanApi,
private readonly translateService: TranslateService
) {}

public initialize(planningRealm: PlanningRealmDto) {
this.planningRealm = planningRealm;
public initialize(tournamentPlanner: TournamentPlannerDto) {
this.tournamentPlanner = tournamentPlanner;
}

protected exportApplications(): void {
if (!this.planningRealm) {
if (!this.tournamentPlanner) {
return;
}

const fileName = `${makeSafeFileName(
this.translateService.instant('Portal.ViewPlanningRealm.ExportApplications.FileName', {
planningRealmName: this.planningRealm?.name
this.translateService.instant('Portal.ViewTournamentPlanner.ExportApplications.FileName', {
tournamentPlannerName: this.tournamentPlanner?.name
}) as string
)}.csv`;

Expand All @@ -48,7 +48,7 @@ export class ExportApplicationsDialogComponent {

this.turnierplanApi
.invoke(exportApplications, {
planningRealmId: this.planningRealm.id,
tournamentPlannerId: this.tournamentPlanner.id,
languageCode: this.translateService.getCurrentLang(),
includeApplicationTeams: this.form.getRawValue().includeApplicationTeams
})
Expand Down
Loading