fix mission acceptance

This commit is contained in:
Spirtix 2023-07-09 17:10:05 +02:00
parent e48858fd01
commit c3615bc7ce
3 changed files with 12 additions and 3 deletions

View File

@ -480,8 +480,12 @@ public class ContentController : Controller {
return Ok("error"); return Ok("error");
UserMissionStateResult result = new UserMissionStateResult { Missions = new List<Mission>() }; UserMissionStateResult result = new UserMissionStateResult { Missions = new List<Mission>() };
foreach (var mission in viking.MissionStates.Where(x => x.MissionStatus == MissionStatus.Active)) foreach (var mission in viking.MissionStates.Where(x => x.MissionStatus == MissionStatus.Active)) {
result.Missions.Add(missionService.GetMissionWithProgress(mission.MissionId, viking.Id)); 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); result.UserID = Guid.Parse(viking.Id);
return Ok(result); return Ok(result);
@ -516,6 +520,7 @@ public class ContentController : Controller {
return Ok(false); return Ok(false);
missionState.MissionStatus = MissionStatus.Active; missionState.MissionStatus = MissionStatus.Active;
missionState.UserAccepted = true;
ctx.SaveChanges(); ctx.SaveChanges();
return Ok(true); return Ok(true);
} }

View File

@ -13,6 +13,8 @@ public class MissionState {
public virtual Viking? Viking { get; set; } public virtual Viking? Viking { get; set; }
public MissionStatus MissionStatus { get; set; } public MissionStatus MissionStatus { get; set; }
public bool? UserAccepted { get; set; }
} }
public enum MissionStatus { public enum MissionStatus {

View File

@ -43,8 +43,10 @@ public class MissionService {
}); });
// Update mission from active to completed // Update mission from active to completed
MissionState? missionState = ctx.Vikings.FirstOrDefault(x => x.Id == userId)!.MissionStates.FirstOrDefault(x => x.MissionId == missionId); 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.MissionStatus = MissionStatus.Completed;
missionState.UserAccepted = null;
}
ctx.SaveChanges(); ctx.SaveChanges();
} }
} }