Skip to content

Commit 28b6d5d

Browse files
committed
Make it easier to edit missions
1 parent dd1dc08 commit 28b6d5d

4 files changed

Lines changed: 35 additions & 11 deletions

File tree

backend/api/Controllers/MissionDefinitionController.cs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ [FromBody] MissionQuery customMissionQuery
216216
/// <response code="200"> The mission definition was successfully updated </response>
217217
/// <response code="400"> The mission definition data is invalid </response>
218218
/// <response code="404"> There was no mission definition with the given ID in the database </response>
219-
[HttpPut]
219+
[HttpPatch]
220220
[Authorize(Roles = Role.User)]
221221
[Route("{id}")]
222222
[ProducesResponseType(typeof(MissionDefinitionResponse), StatusCodes.Status200OK)]
@@ -235,24 +235,31 @@ [FromBody] UpdateMissionDefinitionQuery missionDefinitionQuery
235235
logger.LogInformation("Updating mission definition with id '{Id}'", id);
236236

237237
if (!ModelState.IsValid)
238-
{
239238
return BadRequest("Invalid data.");
240-
}
241239

242240
var missionDefinition = await missionDefinitionService.ReadById(id, readOnly: false);
243241
if (missionDefinition == null)
244-
{
245242
return NotFound($"Could not find mission definition with id '{id}'");
246-
}
247243

248-
if (missionDefinitionQuery.Name == null)
244+
if (missionDefinitionQuery.Name != null)
245+
missionDefinition.Name = missionDefinitionQuery.Name;
246+
247+
if (missionDefinitionQuery.Comment != null)
248+
missionDefinition.Comment = missionDefinitionQuery.Comment;
249+
250+
if (missionDefinitionQuery.InspectionFrequency != null)
251+
missionDefinition.InspectionFrequency = missionDefinitionQuery.InspectionFrequency;
252+
253+
if (missionDefinitionQuery.Tasks != null)
249254
{
250-
return BadRequest("Name cannot be null.");
255+
missionDefinition.Tasks =
256+
[
257+
.. missionDefinitionQuery.Tasks.Select(
258+
(taskQuery, index) => new TaskDefinition(taskQuery, index + 1)
259+
),
260+
];
251261
}
252262

253-
missionDefinition.Name = missionDefinitionQuery.Name;
254-
missionDefinition.Comment = missionDefinitionQuery.Comment;
255-
missionDefinition.InspectionFrequency = missionDefinitionQuery.InspectionFrequency;
256263
if (missionDefinitionQuery.SchedulingTimesCETperWeek != null)
257264
{
258265
var schedulingTimesCETperWeek = missionDefinitionQuery

backend/api/Controllers/Models/CustomMissionQuery.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,22 @@ namespace Api.Controllers.Models
55
{
66
public struct TaskQuery
77
{
8+
#nullable disable
9+
public TaskQuery() { }
10+
11+
#nullable enable
12+
public TaskQuery(TaskDefinition def)
13+
{
14+
TagId = def.TagId;
15+
Description = def.Description;
16+
RobotPose = def.RobotPose;
17+
TargetPosition = def.TargetPosition;
18+
ZoomDescription = def.ZoomDescription;
19+
SensorType = def.SensorType;
20+
AnalysisTypes = def.AnalysisTypes;
21+
VideoDuration = def.VideoDuration;
22+
}
23+
824
public string? TagId { get; set; }
925

1026
public string? Description { get; set; }

backend/api/Controllers/Models/UpdateMissionDefinitionQuery.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ public struct UpdateMissionDefinitionQuery
2424
/// Will be unchanged if null. Use an empty list to remove all scheduled times.
2525
/// </summary>
2626
public IList<TimeAndDayQuery>? SchedulingTimesCETperWeek { get; set; }
27+
28+
public IList<TaskQuery>? Tasks { get; set; }
2729
}
2830

2931
public struct TimeAndDayQuery

backend/api/Database/Context/InitDb.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,6 @@ public static void PopulateDb(FlotillaDbContext context)
527527
taskDefinitions[1],
528528
taskDefinitions[2],
529529
];
530-
context.AddRange(taskDefinitions);
531530
context.AddRange(missionDefinitions);
532531
context.AddRange(missionRuns);
533532
context.AddRange(accessRoles);

0 commit comments

Comments
 (0)