fix upcoming missions in GetUserMissionState

* this is bugfix for upcoming missions issue in SoD 2.9 after 60cc00d
* also removed TODO because ProductGroupID is not related to mission.GroupID and ProductGroupID filtering is covered by gameVersion
This commit is contained in:
Robert Paciorek 2025-07-27 10:34:28 +00:00
parent 278f04d381
commit fb6c935e7e

View File

@ -1109,14 +1109,17 @@ public class ContentController : Controller {
foreach (var m in filterV2.MissionPair) foreach (var m in filterV2.MissionPair)
if (m.MissionID != null) if (m.MissionID != null)
result.Missions.Add(missionService.GetMissionWithProgress((int)m.MissionID, viking.Id, gameVersion)); result.Missions.Add(missionService.GetMissionWithProgress((int)m.MissionID, viking.Id, gameVersion));
// TODO: probably should also check for mission based on filterV2.ProductGroupID vs mission.GroupID
} else { } else {
if (filterV2.GetCompletedMission ?? false) { if (filterV2.GetCompletedMission ?? false) {
foreach (var mission in viking.MissionStates.Where(x => x.MissionStatus == MissionStatus.Completed)) foreach (var mission in viking.MissionStates.Where(x => x.MissionStatus == MissionStatus.Completed))
result.Missions.Add(missionService.GetMissionWithProgress(mission.MissionId, viking.Id, gameVersion)); result.Missions.Add(missionService.GetMissionWithProgress(mission.MissionId, viking.Id, gameVersion));
} else { } else {
foreach (var mission in viking.MissionStates.Where(x => x.MissionStatus != MissionStatus.Completed)) var missionStatesById = viking.MissionStates.Where(x => x.MissionStatus != MissionStatus.Completed).ToDictionary(ms => ms.MissionId);
result.Missions.Add(missionService.GetMissionWithProgress(mission.MissionId, viking.Id, gameVersion)); HashSet<int> upcomingMissionIds = new(missionStore.GetUpcomingMissions(gameVersion));
var combinedMissionIds = new HashSet<int>(missionStatesById.Keys);
combinedMissionIds.UnionWith(upcomingMissionIds);
foreach (var missionId in combinedMissionIds)
result.Missions.Add(missionService.GetMissionWithProgress(missionId, viking.Id, gameVersion));
} }
} }