Skip to content

Commit ff2a3f8

Browse files
committed
Fix auto schedule frequency never becoming null
1 parent 180bb1e commit ff2a3f8

File tree

7 files changed

+1188
-10
lines changed

7 files changed

+1188
-10
lines changed

backend/api/Controllers/Models/MissionDefinitionResponse.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,8 @@ MissionDefinition missionDefinition
8787
public TimeSpan? InspectionFrequency { get; } = missionDefinition.InspectionFrequency;
8888

8989
[JsonPropertyName("autoScheduleFrequency")]
90-
public AutoScheduleFrequency? AutoScheduleFrequency { get; set; }
90+
public AutoScheduleFrequency? AutoScheduleFrequency { get; } =
91+
missionDefinition.AutoScheduleFrequency;
9192

9293
[JsonPropertyName("lastSuccessfulRun")]
9394
public virtual MissionRun? LastSuccessfulRun { get; } = missionDefinition.LastSuccessfulRun;

backend/api/Database/Context/FlotillaDbContext.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
6767
.Entity<MissionDefinition>()
6868
.Property(m => m.InspectionFrequency)
6969
.HasConversion(new TimeSpanToTicksConverter());
70+
modelBuilder.Entity<MissionDefinition>().OwnsOne(m => m.AutoScheduleFrequency);
7071

7172
modelBuilder
7273
.Entity<MissionDefinition>()

backend/api/Database/Models/AutoScheduleFrequency.cs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,27 @@ namespace Api.Database.Models
88
[Owned]
99
public class AutoScheduleFrequency
1010
{
11-
[Required]
1211
// In local time
13-
public IList<TimeOnly> TimesOfDay { get; set; }
12+
public IList<TimeOnly>? TimesOfDay { get; set; }
1413

15-
[Required]
16-
public IList<DayOfWeek> DaysOfWeek { get; set; }
14+
public IList<DayOfWeek>? DaysOfWeek { get; set; }
1715

1816
public void ValidateAutoScheduleFrequency()
1917
{
20-
if (TimesOfDay.Count == 0)
18+
// Either both should be null or both should be a list with at least one element
19+
if (TimesOfDay is null && DaysOfWeek is null)
20+
{
21+
return;
22+
}
23+
24+
if (TimesOfDay is null || TimesOfDay.Count == 0)
2125
{
2226
throw new ArgumentException(
2327
"AutoScheduleFrequency must have at least one time of day"
2428
);
2529
}
2630

27-
if (DaysOfWeek.Count == 0)
31+
if (DaysOfWeek is null || DaysOfWeek.Count == 0)
2832
{
2933
throw new ArgumentException(
3034
"AutoScheduleFrequency must have at least one day of week"
@@ -34,6 +38,11 @@ public void ValidateAutoScheduleFrequency()
3438

3539
public IList<TimeSpan>? GetSchedulingTimesForNext24Hours()
3640
{
41+
if (TimesOfDay is null || DaysOfWeek is null)
42+
{
43+
return null;
44+
}
45+
3746
// NCS is always in CET
3847
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(
3948
"Central European Standard Time"

0 commit comments

Comments
 (0)