From c3615bc7cea7ed8cba847544497e1625d614c5a0 Mon Sep 17 00:00:00 2001 From: Spirtix Date: Sun, 9 Jul 2023 17:10:05 +0200 Subject: [PATCH] fix mission acceptance --- src/Controllers/Common/ContentController.cs | 9 +++++++-- src/Model/MissionState.cs | 2 ++ src/Services/MissionService.cs | 4 +++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index b5d6a51..c4ab3a1 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -480,8 +480,12 @@ public class ContentController : Controller { return Ok("error"); UserMissionStateResult result = new UserMissionStateResult { Missions = new List() }; - foreach (var mission in viking.MissionStates.Where(x => x.MissionStatus == MissionStatus.Active)) - result.Missions.Add(missionService.GetMissionWithProgress(mission.MissionId, viking.Id)); + foreach (var mission in viking.MissionStates.Where(x => x.MissionStatus == MissionStatus.Active)) { + Mission updatedMission = missionService.GetMissionWithProgress(mission.MissionId, viking.Id); + if (mission.UserAccepted != null) + updatedMission.Accepted = (bool)mission.UserAccepted; + result.Missions.Add(updatedMission); + } result.UserID = Guid.Parse(viking.Id); return Ok(result); @@ -516,6 +520,7 @@ public class ContentController : Controller { return Ok(false); missionState.MissionStatus = MissionStatus.Active; + missionState.UserAccepted = true; ctx.SaveChanges(); return Ok(true); } diff --git a/src/Model/MissionState.cs b/src/Model/MissionState.cs index 517494f..18e6ca7 100644 --- a/src/Model/MissionState.cs +++ b/src/Model/MissionState.cs @@ -13,6 +13,8 @@ public class MissionState { public virtual Viking? Viking { get; set; } public MissionStatus MissionStatus { get; set; } + + public bool? UserAccepted { get; set; } } public enum MissionStatus { diff --git a/src/Services/MissionService.cs b/src/Services/MissionService.cs index ab51c43..1898e67 100644 --- a/src/Services/MissionService.cs +++ b/src/Services/MissionService.cs @@ -43,8 +43,10 @@ public class MissionService { }); // Update mission from active to completed MissionState? missionState = ctx.Vikings.FirstOrDefault(x => x.Id == userId)!.MissionStates.FirstOrDefault(x => x.MissionId == missionId); - if (missionState != null && missionState.MissionStatus == MissionStatus.Active) + if (missionState != null && missionState.MissionStatus == MissionStatus.Active) { missionState.MissionStatus = MissionStatus.Completed; + missionState.UserAccepted = null; + } ctx.SaveChanges(); } }