diff --git a/backend/controllers/clubTeamController.js b/backend/controllers/clubTeamController.js index eb406415..156e09eb 100644 --- a/backend/controllers/clubTeamController.js +++ b/backend/controllers/clubTeamController.js @@ -42,7 +42,7 @@ export const createClubTeam = async (req, res) => { try { const { authcode: token } = req.headers; const { clubid: clubId } = req.params; - const { name, leagueId, seasonId, teamGender, teamAgeGroup } = req.body; + const { name, leagueId, seasonId, teamGender, teamAgeGroup, plannedLeagueName } = req.body; const user = await getUserByToken(token); @@ -50,13 +50,17 @@ export const createClubTeam = async (req, res) => { return res.status(400).json({ error: "missingname" }); } + const planned = plannedLeagueName !== undefined && plannedLeagueName !== null + ? String(plannedLeagueName).trim() || null + : undefined; const clubTeamData = { name, clubId: parseInt(clubId), leagueId: leagueId ? parseInt(leagueId) : null, seasonId: seasonId ? parseInt(seasonId) : null, teamGender: teamGender || 'open', - teamAgeGroup: teamAgeGroup || 'adult' + teamAgeGroup: teamAgeGroup || 'adult', + ...(planned !== undefined ? { plannedLeagueName: planned } : {}) }; const newClubTeam = await ClubTeamService.createClubTeam(clubTeamData); @@ -72,7 +76,7 @@ export const updateClubTeam = async (req, res) => { try { const { authcode: token } = req.headers; const { clubteamid: clubTeamId } = req.params; - const { name, leagueId, seasonId, teamGender, teamAgeGroup } = req.body; + const { name, leagueId, seasonId, teamGender, teamAgeGroup, plannedLeagueName } = req.body; const user = await getUserByToken(token); @@ -82,6 +86,11 @@ export const updateClubTeam = async (req, res) => { if (seasonId !== undefined) updateData.seasonId = seasonId ? parseInt(seasonId) : null; if (teamGender !== undefined) updateData.teamGender = teamGender || 'open'; if (teamAgeGroup !== undefined) updateData.teamAgeGroup = teamAgeGroup || 'adult'; + if (plannedLeagueName !== undefined) { + updateData.plannedLeagueName = plannedLeagueName === null || plannedLeagueName === '' + ? null + : String(plannedLeagueName).trim() || null; + } const success = await ClubTeamService.updateClubTeam(clubTeamId, updateData); if (!success) { diff --git a/backend/migrations/20260403_add_planned_league_name_to_club_team.sql b/backend/migrations/20260403_add_planned_league_name_to_club_team.sql new file mode 100644 index 00000000..fefa1bdf --- /dev/null +++ b/backend/migrations/20260403_add_planned_league_name_to_club_team.sql @@ -0,0 +1,6 @@ +-- Optional: manuell gepflegte geplante Spielklasse (unabhängig von league / MyTischtennis) + +ALTER TABLE `club_team` + ADD COLUMN `planned_league_name` VARCHAR(512) NULL + COMMENT 'Geplante Spielklasse (freier Text, optional)' + AFTER `team_age_group`; diff --git a/backend/models/ClubTeam.js b/backend/models/ClubTeam.js index 089daf63..12e897b4 100644 --- a/backend/models/ClubTeam.js +++ b/backend/models/ClubTeam.js @@ -63,6 +63,12 @@ const ClubTeam = sequelize.define('ClubTeam', { defaultValue: 'adult', field: 'team_age_group' }, + plannedLeagueName: { + type: DataTypes.STRING(512), + allowNull: true, + field: 'planned_league_name', + comment: 'Geplante Spielklasse (manuell, optional)' + }, }, { underscored: true, tableName: 'club_team', diff --git a/backend/services/clubTeamService.js b/backend/services/clubTeamService.js index 12f4ff3c..4bcdeb08 100644 --- a/backend/services/clubTeamService.js +++ b/backend/services/clubTeamService.js @@ -44,6 +44,7 @@ class ClubTeamService { myTischtennisTeamId: clubTeam.myTischtennisTeamId, teamGender: clubTeam.teamGender, teamAgeGroup: clubTeam.teamAgeGroup, + plannedLeagueName: clubTeam.plannedLeagueName, createdAt: clubTeam.createdAt, updatedAt: clubTeam.updatedAt, league: { name: 'Unbekannt' }, diff --git a/frontend/src/components/PDFGenerator.js b/frontend/src/components/PDFGenerator.js index 78e20737..77e7fcab 100644 --- a/frontend/src/components/PDFGenerator.js +++ b/frontend/src/components/PDFGenerator.js @@ -78,7 +78,8 @@ class PDFGenerator { 'pdfGenerator.teamGenderLabel': 'Team Geschlecht:', 'pdfGenerator.teamAgeGroupLabel': 'Team Altersklasse:', 'pdfGenerator.generatedAt': 'Erstellt:', - 'pdfGenerator.lineupQttr': '(Q)TTR' + 'pdfGenerator.lineupQttr': '(Q)TTR', + 'pdfGenerator.plannedLeagueLabel': 'Geplante Spielklasse:' }; return fallbacks[key] || key; }); diff --git a/frontend/src/i18n/locales/de-CH.json b/frontend/src/i18n/locales/de-CH.json index 5eb66da2..c72afa17 100644 --- a/frontend/src/i18n/locales/de-CH.json +++ b/frontend/src/i18n/locales/de-CH.json @@ -907,6 +907,9 @@ "exportLineupPdf": "Aufstellung als PDF", "lineupPdfEmpty": "Es sind keine Spieler in der Aufstellung – PDF kann nicht erstellt werden.", "lineupPdfFilePrefix": "Aufstellung", + "plannedLeague": "Geplante Spielklasse", + "plannedLeaguePlaceholder": "z. B. Bezirksliga, nach nächster Meldung …", + "plannedLeagueHint": "Optional. Unabhängig von der gemeldeten Liga (MyTischtennis).", "lineupSaveError": "Mannschaftsmeldung konnte nicht gespeichert werden.", "lineupValidationTooLargeGap": "{higher} hat mehr als 30 QTTR Punkte Vorsprung vor {lower}. Diese Reihenfolge bitte korrigieren.", "firstHalf": "Vorrunde", @@ -924,6 +927,7 @@ "teamGenderLabel": "Team Geschlecht:", "teamAgeGroupLabel": "Team Altersklasse:", "generatedAt": "Erstellt:", - "lineupQttr": "(Q)TTR" + "lineupQttr": "(Q)TTR", + "plannedLeagueLabel": "Geplante Spielklasse:" } } diff --git a/frontend/src/i18n/locales/de-extended.json b/frontend/src/i18n/locales/de-extended.json index d00827f9..fb7463e7 100644 --- a/frontend/src/i18n/locales/de-extended.json +++ b/frontend/src/i18n/locales/de-extended.json @@ -591,6 +591,9 @@ "exportLineupPdf": "Aufstellung als PDF", "lineupPdfEmpty": "Es sind keine Spieler in der Aufstellung – PDF kann nicht erstellt werden.", "lineupPdfFilePrefix": "Aufstellung", + "plannedLeague": "Geplante Spielklasse", + "plannedLeaguePlaceholder": "z. B. Bezirksliga, nach nächster Meldung …", + "plannedLeagueHint": "Optional. Unabhängig von der gemeldeten Liga (MyTischtennis).", "lineupSaveError": "Mannschaftsmeldung konnte nicht gespeichert werden.", "lineupValidationTooLargeGap": "{higher} hat mehr als 30 QTTR Punkte Vorsprung vor {lower}. Diese Reihenfolge bitte korrigieren.", "firstHalf": "Vorrunde", @@ -608,6 +611,7 @@ "teamGenderLabel": "Team Geschlecht:", "teamAgeGroupLabel": "Team Altersklasse:", "generatedAt": "Erstellt:", - "lineupQttr": "(Q)TTR" + "lineupQttr": "(Q)TTR", + "plannedLeagueLabel": "Geplante Spielklasse:" } } diff --git a/frontend/src/i18n/locales/de.json b/frontend/src/i18n/locales/de.json index bacd9154..bec1fffd 100644 --- a/frontend/src/i18n/locales/de.json +++ b/frontend/src/i18n/locales/de.json @@ -1336,6 +1336,9 @@ "teamName": "Team-Name", "teamNamePlaceholder": "z.B. Herren 1, Damen 2", "league": "Spielklasse", + "plannedLeague": "Geplante Spielklasse", + "plannedLeaguePlaceholder": "z. B. Bezirksliga, nach nächster Meldung …", + "plannedLeagueHint": "Optional. Unabhängig von der gemeldeten Liga (MyTischtennis).", "team": "Team", "teamId": "Team-ID", "groupId": "Gruppen-ID", @@ -2361,6 +2364,7 @@ "teamGenderLabel": "Team Geschlecht:", "teamAgeGroupLabel": "Team Altersklasse:", "generatedAt": "Erstellt:", - "lineupQttr": "(Q)TTR" + "lineupQttr": "(Q)TTR", + "plannedLeagueLabel": "Geplante Spielklasse:" } } diff --git a/frontend/src/i18n/locales/en-AU.json b/frontend/src/i18n/locales/en-AU.json index 822ec725..07249a18 100644 --- a/frontend/src/i18n/locales/en-AU.json +++ b/frontend/src/i18n/locales/en-AU.json @@ -907,6 +907,9 @@ "exportLineupPdf": "Export line-up as PDF", "lineupPdfEmpty": "No players in the line-up – cannot create PDF.", "lineupPdfFilePrefix": "Line-up", + "plannedLeague": "Planned league", + "plannedLeaguePlaceholder": "e.g. district league, after next registration …", + "plannedLeagueHint": "Optional. Independent of the registered league (MyTischtennis).", "lineupSaveError": "Team line-up could not be saved.", "lineupValidationTooLargeGap": "{higher} is more than 30 QTTR points ahead of {lower}. Please correct this order.", "firstHalf": "First half", @@ -924,6 +927,7 @@ "teamGenderLabel": "Team gender:", "teamAgeGroupLabel": "Team age group:", "generatedAt": "Generated:", - "lineupQttr": "(Q)TTR" + "lineupQttr": "(Q)TTR", + "plannedLeagueLabel": "Planned league:" } } diff --git a/frontend/src/i18n/locales/en-GB.json b/frontend/src/i18n/locales/en-GB.json index 06c620cb..c64647a8 100644 --- a/frontend/src/i18n/locales/en-GB.json +++ b/frontend/src/i18n/locales/en-GB.json @@ -1027,6 +1027,9 @@ "teamName": "Team name", "teamNamePlaceholder": "e.g. Men 1, Women 2", "league": "League", + "plannedLeague": "Planned league", + "plannedLeaguePlaceholder": "e.g. district league, after next registration …", + "plannedLeagueHint": "Optional. Independent of the registered league (MyTischtennis).", "team": "Team", "teamId": "Team ID", "groupId": "Group ID", @@ -1177,6 +1180,7 @@ "teamGenderLabel": "Team gender:", "teamAgeGroupLabel": "Team age group:", "generatedAt": "Generated:", - "lineupQttr": "(Q)TTR" + "lineupQttr": "(Q)TTR", + "plannedLeagueLabel": "Planned league:" } } diff --git a/frontend/src/i18n/locales/en-US.json b/frontend/src/i18n/locales/en-US.json index 90710e86..df59556a 100644 --- a/frontend/src/i18n/locales/en-US.json +++ b/frontend/src/i18n/locales/en-US.json @@ -907,6 +907,9 @@ "exportLineupPdf": "Export line-up as PDF", "lineupPdfEmpty": "No players in the line-up – cannot create PDF.", "lineupPdfFilePrefix": "Lineup", + "plannedLeague": "Planned league", + "plannedLeaguePlaceholder": "e.g. district league, after next registration …", + "plannedLeagueHint": "Optional. Independent of the registered league (MyTischtennis).", "lineupSaveError": "Team line-up could not be saved.", "lineupValidationTooLargeGap": "{higher} is more than 30 QTTR points ahead of {lower}. Please correct this order.", "firstHalf": "First half", @@ -924,6 +927,7 @@ "teamGenderLabel": "Team gender:", "teamAgeGroupLabel": "Team age group:", "generatedAt": "Generated:", - "lineupQttr": "(Q)TTR" + "lineupQttr": "(Q)TTR", + "plannedLeagueLabel": "Planned league:" } } diff --git a/frontend/src/i18n/locales/es.json b/frontend/src/i18n/locales/es.json index 827dcca4..42448bcc 100644 --- a/frontend/src/i18n/locales/es.json +++ b/frontend/src/i18n/locales/es.json @@ -874,6 +874,9 @@ "exportLineupPdf": "Exportar alineación como PDF", "lineupPdfEmpty": "No hay jugadores en la alineación – no se puede crear el PDF.", "lineupPdfFilePrefix": "Alineacion", + "plannedLeague": "Liga prevista", + "plannedLeaguePlaceholder": "p. ej. liga regional, tras la próxima inscripción …", + "plannedLeagueHint": "Opcional. Independiente de la liga registrada (MyTischtennis).", "lineupSaveError": "No se pudo guardar la alineación del equipo.", "lineupValidationTooLargeGap": "{higher} tiene más de 30 puntos QTTR de ventaja sobre {lower}. Corrige este orden.", "firstHalf": "Primera vuelta", @@ -891,6 +894,7 @@ "teamGenderLabel": "Género del equipo:", "teamAgeGroupLabel": "Categoría de edad del equipo:", "generatedAt": "Generado:", - "lineupQttr": "(Q)TTR" + "lineupQttr": "(Q)TTR", + "plannedLeagueLabel": "Liga prevista:" } } diff --git a/frontend/src/i18n/locales/fil.json b/frontend/src/i18n/locales/fil.json index a7b706e7..39a8401a 100644 --- a/frontend/src/i18n/locales/fil.json +++ b/frontend/src/i18n/locales/fil.json @@ -874,6 +874,9 @@ "exportLineupPdf": "I-export ang line-up bilang PDF", "lineupPdfEmpty": "Walang manlalaro sa line-up – hindi makagawa ng PDF.", "lineupPdfFilePrefix": "Line-up", + "plannedLeague": "Plano na liga", + "plannedLeaguePlaceholder": "hal. district league, pagkatapos ng susunod na rehistro …", + "plannedLeagueHint": "Opsyonal. Hiwalay sa nakarehistrong liga (MyTischtennis).", "lineupSaveError": "Hindi mai-save ang line-up ng koponan.", "lineupValidationTooLargeGap": "Mahigit 30 QTTR points ang lamang ni {higher} kay {lower}. Pakitama ang ayos na ito.", "firstHalf": "Unang yugto", @@ -891,6 +894,7 @@ "teamGenderLabel": "Kasarian ng koponan:", "teamAgeGroupLabel": "Age group ng koponan:", "generatedAt": "Nilikha:", - "lineupQttr": "(Q)TTR" + "lineupQttr": "(Q)TTR", + "plannedLeagueLabel": "Plano na liga:" } } diff --git a/frontend/src/i18n/locales/fr.json b/frontend/src/i18n/locales/fr.json index 8c1ccf72..3dd9d1d4 100644 --- a/frontend/src/i18n/locales/fr.json +++ b/frontend/src/i18n/locales/fr.json @@ -874,6 +874,9 @@ "exportLineupPdf": "Exporter la composition en PDF", "lineupPdfEmpty": "Aucun joueur dans la composition – impossible de créer le PDF.", "lineupPdfFilePrefix": "Composition", + "plannedLeague": "Ligue prévue", + "plannedLeaguePlaceholder": "ex. ligue de district, après la prochaine inscription …", + "plannedLeagueHint": "Facultatif. Indépendant de la ligue enregistrée (MyTischtennis).", "lineupSaveError": "La composition de l’équipe n’a pas pu être enregistrée.", "lineupValidationTooLargeGap": "{higher} a plus de 30 points QTTR d’avance sur {lower}. Veuillez corriger cet ordre.", "firstHalf": "Phase aller", @@ -891,6 +894,7 @@ "teamGenderLabel": "Genre d’équipe :", "teamAgeGroupLabel": "Catégorie d’âge d’équipe :", "generatedAt": "Créé le :", - "lineupQttr": "(Q)TTR" + "lineupQttr": "(Q)TTR", + "plannedLeagueLabel": "Ligue prévue :" } } diff --git a/frontend/src/i18n/locales/it.json b/frontend/src/i18n/locales/it.json index 0e22e6a4..33a4b36e 100644 --- a/frontend/src/i18n/locales/it.json +++ b/frontend/src/i18n/locales/it.json @@ -874,6 +874,9 @@ "exportLineupPdf": "Esporta formazione come PDF", "lineupPdfEmpty": "Nessun giocatore in formazione – impossibile creare il PDF.", "lineupPdfFilePrefix": "Formazione", + "plannedLeague": "Campionato previsto", + "plannedLeaguePlaceholder": "es. campionato di zona, dopo la prossima iscrizione …", + "plannedLeagueHint": "Facoltativo. Indipendente dal campionato registrato (MyTischtennis).", "lineupSaveError": "Impossibile salvare la formazione della squadra.", "lineupValidationTooLargeGap": "{higher} ha più di 30 punti QTTR di vantaggio su {lower}. Correggi questo ordine.", "firstHalf": "Girone d’andata", @@ -891,6 +894,7 @@ "teamGenderLabel": "Genere squadra:", "teamAgeGroupLabel": "Categoria età squadra:", "generatedAt": "Creato:", - "lineupQttr": "(Q)TTR" + "lineupQttr": "(Q)TTR", + "plannedLeagueLabel": "Campionato previsto:" } } diff --git a/frontend/src/i18n/locales/ja.json b/frontend/src/i18n/locales/ja.json index 0121ddff..b7d5c70c 100644 --- a/frontend/src/i18n/locales/ja.json +++ b/frontend/src/i18n/locales/ja.json @@ -874,6 +874,9 @@ "exportLineupPdf": "メンバー表をPDFで出力", "lineupPdfEmpty": "登録プレイヤーがいないためPDFを作成できません。", "lineupPdfFilePrefix": "メンバー表", + "plannedLeague": "予定リーグ", + "plannedLeaguePlaceholder": "例:地区リーグ、次回登録後 …", + "plannedLeagueHint": "任意。登録済みリーグ(MyTischtennis)とは別です。", "lineupSaveError": "チーム登録を保存できませんでした。", "lineupValidationTooLargeGap": "{higher} は {lower} より 30 QTTR ポイント以上高いです。この順序を修正してください。", "firstHalf": "前期", @@ -891,6 +894,7 @@ "teamGenderLabel": "チーム性別:", "teamAgeGroupLabel": "チーム年齢区分:", "generatedAt": "作成日時:", - "lineupQttr": "(Q)TTR" + "lineupQttr": "(Q)TTR", + "plannedLeagueLabel": "予定リーグ:" } } diff --git a/frontend/src/i18n/locales/pl.json b/frontend/src/i18n/locales/pl.json index a5ff0e63..abedaa98 100644 --- a/frontend/src/i18n/locales/pl.json +++ b/frontend/src/i18n/locales/pl.json @@ -874,6 +874,9 @@ "exportLineupPdf": "Eksport składu do PDF", "lineupPdfEmpty": "Brak zawodników w składzie – nie można utworzyć PDF.", "lineupPdfFilePrefix": "Sklad", + "plannedLeague": "Planowana klasa rozgrywkowa", + "plannedLeaguePlaceholder": "np. klasa okręgowa, po następnej deklaracji …", + "plannedLeagueHint": "Opcjonalnie. Niezależnie od zgłoszonej ligi (MyTischtennis).", "lineupSaveError": "Nie udało się zapisać zgłoszenia drużyny.", "lineupValidationTooLargeGap": "{higher} ma ponad 30 punktów QTTR przewagi nad {lower}. Popraw tę kolejność.", "firstHalf": "Pierwsza runda", @@ -891,6 +894,7 @@ "teamGenderLabel": "Płeć drużyny:", "teamAgeGroupLabel": "Kategoria wiekowa drużyny:", "generatedAt": "Utworzono:", - "lineupQttr": "(Q)TTR" + "lineupQttr": "(Q)TTR", + "plannedLeagueLabel": "Planowana liga:" } } diff --git a/frontend/src/i18n/locales/th.json b/frontend/src/i18n/locales/th.json index 0bd44835..8020add3 100644 --- a/frontend/src/i18n/locales/th.json +++ b/frontend/src/i18n/locales/th.json @@ -874,6 +874,9 @@ "exportLineupPdf": "ส่งออกรายชื่อเป็น PDF", "lineupPdfEmpty": "ไม่มีผู้เล่นในรายชื่อ – ไม่สามารถสร้าง PDF ได้", "lineupPdfFilePrefix": "รายชื่อทีม", + "plannedLeague": "ลีกที่วางแผน", + "plannedLeaguePlaceholder": "เช่น ลีกในเขต หลังการลงทะเบียนครั้งถัดไป …", + "plannedLeagueHint": "ไม่บังคับ แยกจากลีกที่ลงทะเบียนแล้ว (MyTischtennis)", "lineupSaveError": "ไม่สามารถบันทึกรายชื่อทีมได้", "lineupValidationTooLargeGap": "{higher} มีคะแนน QTTR มากกว่า {lower} เกิน 30 คะแนน กรุณาแก้ไขลำดับนี้", "firstHalf": "ครึ่งแรก", @@ -891,6 +894,7 @@ "teamGenderLabel": "เพศทีม:", "teamAgeGroupLabel": "กลุ่มอายุของทีม:", "generatedAt": "สร้างเมื่อ:", - "lineupQttr": "(Q)TTR" + "lineupQttr": "(Q)TTR", + "plannedLeagueLabel": "ลีกที่วางแผน:" } } diff --git a/frontend/src/i18n/locales/tl.json b/frontend/src/i18n/locales/tl.json index d3a07216..ea20ba32 100644 --- a/frontend/src/i18n/locales/tl.json +++ b/frontend/src/i18n/locales/tl.json @@ -874,6 +874,9 @@ "exportLineupPdf": "I-export ang line-up bilang PDF", "lineupPdfEmpty": "Walang manlalaro sa line-up – hindi makagawa ng PDF.", "lineupPdfFilePrefix": "Line-up", + "plannedLeague": "Plano na liga", + "plannedLeaguePlaceholder": "hal. district league, pagkatapos ng susunod na rehistro …", + "plannedLeagueHint": "Opsyonal. Hiwalay sa nakarehistrong liga (MyTischtennis).", "lineupSaveError": "Hindi mai-save ang line-up ng koponan.", "lineupValidationTooLargeGap": "Mahigit 30 QTTR points ang lamang ni {higher} kay {lower}. Pakitama ang ayos na ito.", "firstHalf": "Unang yugto", @@ -891,6 +894,7 @@ "teamGenderLabel": "Kasarian ng koponan:", "teamAgeGroupLabel": "Age group ng koponan:", "generatedAt": "Nilikha:", - "lineupQttr": "(Q)TTR" + "lineupQttr": "(Q)TTR", + "plannedLeagueLabel": "Plano na liga:" } } diff --git a/frontend/src/i18n/locales/zh.json b/frontend/src/i18n/locales/zh.json index 7d47ca4d..5010c398 100644 --- a/frontend/src/i18n/locales/zh.json +++ b/frontend/src/i18n/locales/zh.json @@ -874,6 +874,9 @@ "exportLineupPdf": "导出阵容为 PDF", "lineupPdfEmpty": "阵容中没有球员,无法生成 PDF。", "lineupPdfFilePrefix": "阵容", + "plannedLeague": "计划联赛", + "plannedLeaguePlaceholder": "例如:地区联赛,下次报名后 …", + "plannedLeagueHint": "选填。与已报名联赛(MyTischtennis)无关。", "lineupSaveError": "无法保存队伍报名。", "lineupValidationTooLargeGap": "{higher} 比 {lower} 高出超过 30 个 QTTR 积分。请更正这个顺序。", "firstHalf": "上半程", @@ -891,6 +894,7 @@ "teamGenderLabel": "球队性别:", "teamAgeGroupLabel": "球队年龄组:", "generatedAt": "生成时间:", - "lineupQttr": "(Q)TTR" + "lineupQttr": "(Q)TTR", + "plannedLeagueLabel": "计划联赛:" } } diff --git a/frontend/src/views/TeamManagementView.vue b/frontend/src/views/TeamManagementView.vue index e4a76616..055e56bb 100644 --- a/frontend/src/views/TeamManagementView.vue +++ b/frontend/src/views/TeamManagementView.vue @@ -96,6 +96,10 @@ {{ t('teamManagement.league') }} {{ teamToEdit.league ? teamToEdit.league.name : t('teamManagement.noLeague') }} +
+ {{ t('teamManagement.plannedLeague') }} + {{ teamToEdit.plannedLeagueName?.trim() ? teamToEdit.plannedLeagueName : '–' }} +
{{ t('teamManagement.season') }} {{ teamToEdit.season?.season || t('teamManagement.seasonUnknown') }} @@ -125,6 +129,12 @@ + +