diff --git a/Client/Pages/Index.razor.cs b/Client/Pages/Index.razor.cs index e480900..a6e4eef 100644 --- a/Client/Pages/Index.razor.cs +++ b/Client/Pages/Index.razor.cs @@ -310,6 +310,8 @@ namespace ShiftScheduler.Client.Pages private async Task ReloadTransportDataForSchedule() { + SelectedShiftsWithTransport.Clear(); + foreach (var kvp in SelectedSchedule) { var day = kvp.Key; diff --git a/Client/Pages/MonthAndYear.cs b/Client/Pages/MonthAndYear.cs index 6fe1996..406b410 100644 --- a/Client/Pages/MonthAndYear.cs +++ b/Client/Pages/MonthAndYear.cs @@ -23,9 +23,11 @@ public record MonthAndYear(int Month, int Year) public IReadOnlyList DaysInMonth() { - return Enumerable.Range(1, DateTime.DaysInMonth(Year, Month)) + var dayList = Enumerable.Range(1, DateTime.DaysInMonth(Year, Month)) .Select(d => new DateTime(Year, Month, d)) .ToList(); + + return EnsureStartsOnMonday(dayList); } public IReadOnlyDictionary> GetWeeksInMonth() @@ -36,4 +38,23 @@ public record MonthAndYear(int Month, int Year) .ToDictionary(d => d.Key, d => d.ToList()); return weeks; } + + static List EnsureStartsOnMonday(List dates) + { + var firstDate = dates.First(); + if (firstDate.DayOfWeek == DayOfWeek.Monday) + return dates; + + var result = new List(); + var prependDate = firstDate.AddDays(-1); + while (prependDate.DayOfWeek != DayOfWeek.Monday) + { + result.Insert(0, prependDate); + prependDate = prependDate.AddDays(-1); + } + result.Insert(0, prependDate); + result.AddRange(dates); + + return result; + } } \ No newline at end of file