Skip to content

Commit

Permalink
Make Update MissionRun function private
Browse files Browse the repository at this point in the history
  • Loading branch information
andchiind committed Aug 30, 2024
1 parent 1dc36ac commit aff5e71
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 30 deletions.
16 changes: 0 additions & 16 deletions backend/api/Database/Models/MissionRun.cs
Original file line number Diff line number Diff line change
Expand Up @@ -176,22 +176,6 @@ public void CalculateEstimatedDuration()
}
}

public void SetToFailed(string? failureReason = "")
{
Status = MissionStatus.Failed;
StatusReason = failureReason;
foreach (var task in Tasks.Where(task => !task.IsCompleted))
{
task.Status = TaskStatus.Failed;
foreach (
var inspection in task.Inspections.Where(inspection => !inspection.IsCompleted)
)
{
inspection.Status = InspectionStatus.Failed;
}
}
}

public bool IsLocalizationMission() { return MissionRunType == MissionRunType.Localization; }

public bool IsReturnHomeMission() { return MissionRunType == MissionRunType.ReturnHome; }
Expand Down
3 changes: 1 addition & 2 deletions backend/api/EventHandlers/IsarConnectionEventHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -149,8 +149,7 @@ private async void OnTimeoutEvent(IsarRobotHeartbeatMessage robotHeartbeatMessag
missionRun.Id,
missionRun.Name
);
missionRun.SetToFailed("Lost connection to ISAR during mission");
await MissionRunService.Update(missionRun);
await MissionRunService.SetMissionRunToFailed(missionRun.Id, "Lost connection to ISAR during mission");
}
}

Expand Down
3 changes: 1 addition & 2 deletions backend/api/EventHandlers/MissionEventHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,7 @@ private async void OnRobotAvailable(object? sender, RobotAvailableEventArgs e)
if (stuckMission.Status == MissionStatus.Ongoing || stuckMission.Status == MissionStatus.Paused)
{
_logger.LogError("Ongoing/paused mission with ID: ${MissionId} is not being run in ISAR", robot.CurrentMissionId);
stuckMission.SetToFailed("Mission failed due to issue with ISAR");
await MissionService.Update(stuckMission);
await MissionService.SetMissionRunToFailed(stuckMission.Id, "Mission failed due to issue with ISAR");
}
}

Expand Down
34 changes: 24 additions & 10 deletions backend/api/Services/MissionRunService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,6 @@ public interface IMissionRunService

public bool IncludesUnsupportedInspectionType(MissionRun missionRun);

public Task<MissionRun> Update(MissionRun mission);

public Task<MissionRun> UpdateMissionRunType(string missionRunId, MissionRunType missionRunType);

public Task<MissionRun> UpdateMissionRunStatusByIsarMissionId(
Expand All @@ -57,6 +55,8 @@ MissionStatus missionStatus

public Task<MissionRun> UpdateMissionRunProperty(string missionRunId, string propertyName, object? value);

public Task<MissionRun> SetMissionRunToFailed(string missionRunId, string failureDescription);

public Task UpdateCurrentRobotMissionToFailed(string robotId);

public void DetachTracking(MissionRun missionRun);
Expand Down Expand Up @@ -605,17 +605,31 @@ public async Task UpdateCurrentRobotMissionToFailed(string robotId)
var robot = await robotService.ReadById(robotId, readOnly: true) ?? throw new RobotNotFoundException($"Robot with ID: {robotId} was not found in the database");
if (robot.CurrentMissionId != null)
{
var missionRun = await ReadById(robot.CurrentMissionId, readOnly: false);
if (missionRun != null)
var missionRun = await SetMissionRunToFailed(robot.CurrentMissionId, "Lost connection to ISAR during mission");
logger.LogWarning(
"Mission '{Id}' failed because ISAR could not be reached",
missionRun.Id
);
}
}

public async Task<MissionRun> SetMissionRunToFailed(string missionRunId, string failureDescription)
{
var missionRun = await ReadById(missionRunId, readOnly: false) ?? throw new MissionRunNotFoundException($"Could not find mission run with ID {missionRunId}");

missionRun.Status = MissionStatus.Failed;
missionRun.StatusReason = failureDescription;
foreach (var task in missionRun.Tasks.Where(task => !task.IsCompleted))
{
task.Status = Database.Models.TaskStatus.Failed;
foreach (
var inspection in task.Inspections.Where(inspection => !inspection.IsCompleted)
)
{
missionRun.SetToFailed("Lost connection to ISAR during mission");
await Update(missionRun);
logger.LogWarning(
"Mission '{Id}' failed because ISAR could not be reached",
missionRun.Id
);
inspection.Status = InspectionStatus.Failed;
}
}
return await Update(missionRun);
}

public void DetachTracking(MissionRun missionRun)
Expand Down

0 comments on commit aff5e71

Please sign in to comment.