Skip to content

Commit a0a7b1a

Browse files
committed
Make it easier to edit missiondefinitions
1 parent ad21057 commit a0a7b1a

4 files changed

Lines changed: 56 additions & 11 deletions

File tree

backend/api/Controllers/MissionDefinitionController.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ [FromBody] MissionQuery customMissionQuery
228228
/// <response code="200"> The mission definition was successfully updated </response>
229229
/// <response code="400"> The mission definition data is invalid </response>
230230
/// <response code="404"> There was no mission definition with the given ID in the database </response>
231-
[HttpPut]
231+
[HttpPatch]
232232
[Authorize(Roles = Role.User)]
233233
[Route("{id}")]
234234
[ProducesResponseType(typeof(MissionDefinitionResponse), StatusCodes.Status200OK)]
@@ -247,24 +247,26 @@ [FromBody] UpdateMissionDefinitionQuery missionDefinitionQuery
247247
logger.LogInformation("Updating mission definition with id '{Id}'", id);
248248

249249
if (!ModelState.IsValid)
250-
{
251250
return BadRequest("Invalid data.");
252-
}
253251

254252
var missionDefinition = await missionDefinitionService.ReadById(id, readOnly: false);
255253
if (missionDefinition == null)
256-
{
257254
return NotFound($"Could not find mission definition with id '{id}'");
258-
}
259255

260-
if (missionDefinitionQuery.Name == null)
256+
if (missionDefinitionQuery.Name != null)
257+
missionDefinition.Name = missionDefinitionQuery.Name;
258+
259+
if (missionDefinitionQuery.Comment != null)
260+
missionDefinition.Comment = missionDefinitionQuery.Comment;
261+
262+
if (missionDefinitionQuery.InspectionFrequency != null)
263+
missionDefinition.InspectionFrequency = missionDefinitionQuery.InspectionFrequency;
264+
265+
if (missionDefinitionQuery.Tasks != null)
261266
{
262-
return BadRequest("Name cannot be null.");
267+
missionDefinition.Tasks = [.. missionDefinitionQuery.Tasks];
263268
}
264269

265-
missionDefinition.Name = missionDefinitionQuery.Name;
266-
missionDefinition.Comment = missionDefinitionQuery.Comment;
267-
missionDefinition.InspectionFrequency = missionDefinitionQuery.InspectionFrequency;
268270
if (missionDefinitionQuery.SchedulingTimesCETperWeek != null)
269271
{
270272
var schedulingTimesCETperWeek = missionDefinitionQuery

backend/api/Controllers/Models/CustomMissionQuery.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,50 @@
33

44
namespace Api.Controllers.Models
55
{
6+
public struct UpdateTaskQuery
7+
{
8+
public UpdateTaskQuery() {}
9+
public UpdateTaskQuery(TaskDefinition def)
10+
{
11+
Description = def.Description;
12+
RobotPose = def.RobotPose;
13+
TargetPosition = def.TargetPosition;
14+
ZoomDescription = def.ZoomDescription;
15+
SensorType = def.SensorType;
16+
AnalysisType = def.AnalysisType;
17+
VideoDuration = def.VideoDuration;
18+
}
19+
public string? Description { get; set; }
20+
21+
public Pose? RobotPose { get; set; }
22+
23+
public Position? TargetPosition { get; set; }
24+
25+
public IsarZoomDescription? ZoomDescription { get; set; }
26+
27+
public SensorType? SensorType { get; set; }
28+
29+
public AnalysisType? AnalysisType { get; set; }
30+
31+
public float? VideoDuration { get; set; }
32+
}
33+
634
public struct TaskQuery
735
{
36+
#nullable disable
37+
public TaskQuery() {}
38+
#nullable enable
39+
public TaskQuery(TaskDefinition def)
40+
{
41+
TagId = def.TagId;
42+
Description = def.Description;
43+
RobotPose = def.RobotPose;
44+
TargetPosition = def.TargetPosition;
45+
ZoomDescription = def.ZoomDescription;
46+
SensorType = def.SensorType;
47+
AnalysisType = def.AnalysisType;
48+
VideoDuration = def.VideoDuration;
49+
}
850
public string? TagId { get; set; }
951

1052
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<TaskDefinition>? 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)