fix(TeamManagement): refine eligibility checks and streamline assignment removal
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 37s

- Adjusted member eligibility comparison logic to ensure correct validation.
- Implemented functions to remove ineligible planning assignments for teams, enhancing data integrity.
- Integrated automatic cleanup of ineligible assignments upon team updates, improving user experience.
This commit is contained in:
Torsten Schulz (local)
2026-04-15 11:02:52 +02:00
parent 7d483ebf02
commit c62e91d997

View File

@@ -979,7 +979,7 @@ export default {
if (memberIndex < 0 || teamIndex < 0) {
return false;
}
return memberIndex >= teamIndex;
return memberIndex <= teamIndex;
};
const getMemberEligibilityLabel = (member, teamAgeGroup) => {
@@ -1212,6 +1212,7 @@ export default {
teamAgeGroup: team.teamAgeGroup || 'adult',
leagueId: team.leagueId || null
}));
removeAllIneligiblePlanningAssignments();
};
const onPlanningDragMember = (member) => {
@@ -1228,6 +1229,33 @@ export default {
return isEligibleForTeam(member, teamAgeGroup, teamGender);
};
const removeIneligibleAssignmentsForTeam = (teamId) => {
const before = planningAssignments.value.length;
planningAssignments.value = planningAssignments.value.filter((entry) => (
Number(entry.teamId) !== Number(teamId) || isEligibleForPlanningTeam(entry.memberId, entry.teamId)
));
if (planningAssignments.value.length !== before) {
normalizePlanningTeamAssignments();
schedulePlanningTeamAutosave(Number(teamId), 300);
}
};
const removeAllIneligiblePlanningAssignments = () => {
const allEntries = [...planningAssignments.value];
const affectedTeamIds = new Set(
allEntries
.filter((entry) => !isEligibleForPlanningTeam(entry.memberId, entry.teamId))
.map((entry) => Number(entry.teamId))
);
if (!affectedTeamIds.size) return;
planningAssignments.value = allEntries.filter((entry) => (
isEligibleForPlanningTeam(entry.memberId, entry.teamId)
));
normalizePlanningTeamAssignments();
affectedTeamIds.forEach((teamId) => schedulePlanningTeamAutosave(teamId, 300));
};
const setPlanningTeamStatus = (teamId, state) => {
const key = String(teamId);
planningTeamSaveStatus.value = {
@@ -1421,6 +1449,9 @@ export default {
planningLocalTeams.value = planningLocalTeams.value.map((team) => (
Number(team.id) === Number(teamId) ? { ...team, [field]: value } : team
));
if (field === 'teamAgeGroup' || field === 'teamGender') {
removeIneligibleAssignmentsForTeam(teamId);
}
schedulePlanningTeamAutosave(Number(teamId));
};