can calculate months

This commit is contained in:
2023-01-04 22:08:53 -07:00
parent ac2e9f63d6
commit 8d8bb8bf6d
2 changed files with 18 additions and 2 deletions

View File

@@ -31,6 +31,20 @@ public class SemesterPlannerTests
var semester = new SemesterPlanner(canvasTerm); var semester = new SemesterPlanner(canvasTerm);
semester.Months.Count().Should().Be(2);
}
[Test]
public void TestNewPlannerHandlesTermsThatWrapYears()
{
var canvasTerm = new EnrollmentTermModel(
Id: 1,
Name: "one",
StartAt: new DateTime(2022, 12, 1),
EndAt: new DateTime(2023, 1, 1)
);
var semester = new SemesterPlanner(canvasTerm);
semester.Months.Count().Should().Be(2); semester.Months.Count().Should().Be(2);
} }
} }

View File

@@ -5,9 +5,11 @@ public class SemesterPlanner
public IEnumerable<CalendarMonth> Months { get; } public IEnumerable<CalendarMonth> Months { get; }
public SemesterPlanner(EnrollmentTermModel canvasTerm) public SemesterPlanner(EnrollmentTermModel canvasTerm)
{ {
var monthsInTerm = canvasTerm.EndAt?.Month - canvasTerm.StartAt?.Month 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}"); ?? throw new Exception($"Canvas Term must have a start and end date. Term: {canvasTerm.Id}, start: {canvasTerm.StartAt}, end: {canvasTerm.EndAt}");
Months = Enumerable.Range(1, monthsInTerm).Select(_ => new CalendarMonth()); Months = Enumerable.Range(0, monthsInTerm).Select(_ => new CalendarMonth());
} }
} }