term month generation is correct

This commit is contained in:
2023-01-04 23:11:44 -07:00
parent 19ef3e2cd7
commit 159313cbca
3 changed files with 58 additions and 15 deletions

View File

@@ -5,11 +5,20 @@ public class SemesterPlanner
public IEnumerable<CalendarMonth> Months { get; }
public SemesterPlanner(EnrollmentTermModel canvasTerm)
{
var monthsInTerm =
1 + ((canvasTerm.EndAt?.Year - canvasTerm.StartAt?.Year) * 12)
+ canvasTerm.EndAt?.Month - canvasTerm.StartAt?.Month
?? throw new Exception($"Canvas Term must have a start and end date. Term: {canvasTerm.Id}, start: {canvasTerm.StartAt}, end: {canvasTerm.EndAt}");
var start = canvasTerm.StartAt ?? throw new Exception($"Canvas Term must have a start date. Term: {canvasTerm.Id}");
var end = canvasTerm.EndAt ?? throw new Exception($"Canvas Term must have a end date. Term: {canvasTerm.Id}");
Months = Enumerable.Range(0, monthsInTerm).Select(_ => new CalendarMonth(2022, 1));
var monthsInTerm =
1 + ((end.Year - start.Year) * 12)
+ end.Month - start.Month;
Months = Enumerable
.Range(0, monthsInTerm)
.Select(monthDiff =>
{
var month = ((start.Month + monthDiff - 1) % 12) + 1;
var year = start.Year + ((start.Month + monthDiff - 1) / 12);
return new CalendarMonth(year, month);
});
}
}