diff --git a/Management.Test/Features/SemesterPlannerTests.cs b/Management.Test/Features/SemesterPlannerTests.cs index ebd2e6f..d36e349 100644 --- a/Management.Test/Features/SemesterPlannerTests.cs +++ b/Management.Test/Features/SemesterPlannerTests.cs @@ -80,4 +80,18 @@ public class SemesterPlannerTests semester.Months.Last().Month.Should().Be(1); semester.Months.Last().Year.Should().Be(2023); } + + [Test] + public void TestSemesterTracksDaysOfWeek() + { + DayOfWeek[] days = new DayOfWeek[] { DayOfWeek.Monday }; + var config = new SemesterConfiguration( + StartDate: new DateTime(2022, 12, 1), + EndDate: new DateTime(2023, 1, 1), + days + ); + + var semester = new SemesterPlanner(config); + semester.Days.Should().BeEquivalentTo(days); + } } \ No newline at end of file diff --git a/Management.Test/Management.Test.csproj b/Management.Test/Management.Test.csproj index b4e1701..0205a81 100644 --- a/Management.Test/Management.Test.csproj +++ b/Management.Test/Management.Test.csproj @@ -21,6 +21,7 @@ + diff --git a/Management.Test/ViewModels/MonthDetailTests.cs b/Management.Test/ViewModels/MonthDetailTests.cs new file mode 100644 index 0000000..e79e878 --- /dev/null +++ b/Management.Test/ViewModels/MonthDetailTests.cs @@ -0,0 +1,14 @@ +using Management.Web.Shared.Semester; + +public class MonthDetailTests +{ + [Test] + public void TestCanGetMonthName() + { + var detail = new MonthDetail(); + var calendarMonth = new CalendarMonth(2022, 2); + detail.Month = calendarMonth; + + detail.MonthName.Should().Be("February"); + } +} \ No newline at end of file diff --git a/Management.Web/Pages/Index.razor b/Management.Web/Pages/Index.razor index 9a80573..66c6754 100644 --- a/Management.Web/Pages/Index.razor +++ b/Management.Web/Pages/Index.razor @@ -7,10 +7,14 @@ { private IEnumerable? terms { get; set; } = null; private ulong? selectedTermId { get; set; } = null; - private EnrollmentTermModel? selectedTerm - { - get => terms?.FirstOrDefault(t => t.Id == selectedTermId); + private EnrollmentTermModel? selectedTerm + { + get => terms?.FirstOrDefault(t => t.Id == selectedTermId); } + private List days { get; set; } = new(); + private bool saved { get; set; } = false; + private SemesterConfiguration? configuration { get; set; } + protected override async Task OnInitializedAsync() { terms = await canvasService.GetCurrentTermsFor(); @@ -38,5 +42,40 @@ } @if (selectedTerm is not null) { - +
Select Days Of Week
+
+ @foreach (DayOfWeek day in (DayOfWeek[])Enum.GetValues(typeof(DayOfWeek))) + { +
+ +
+ + } +
+
+
+ +
+
+} + +@if (configuration is not null) +{ + } \ No newline at end of file diff --git a/Management.Web/Shared/Semester/MonthDetail.razor b/Management.Web/Shared/Semester/MonthDetail.razor index c415bc2..89a4e52 100644 --- a/Management.Web/Shared/Semester/MonthDetail.razor +++ b/Management.Web/Shared/Semester/MonthDetail.razor @@ -1,26 +1,45 @@ - +@using System.Linq; @code { [Parameter, EditorRequired] public CalendarMonth Month { get; set; } = default!; + + [Parameter, EditorRequired] + public SemesterPlanner Semester { get; set; } = default!; + public DayOfWeek[] WeekDaysList { get => (DayOfWeek[])Enum.GetValues(typeof(DayOfWeek)); } + + public string MonthName { get => Month?.DaysByWeek.First().FirstOrDefault(d => d != null)?.ToString("MMMM") ?? ""; } } +

+ @MonthName +

-
-
Saturday
-
Monday
-
Tuesday
-
Wednesday
-
Thursday
-
Friday
-
Saturday
-
-@foreach(var week in Month.DaysByWeek) +
+ @foreach (DayOfWeek day in WeekDaysList) + { +
@day
+ } +
+ +@foreach (var week in Month.DaysByWeek) {
- @foreach (var day in week) + @foreach (var day in week) { -
@day?.Day
+ + var baseClasses = "col border rounded rounded-3 pb-5 m-1"; + DayOfWeek? weekDay = day?.DayOfWeek; + if (weekDay != null) + { + DayOfWeek notNullDay = weekDay ?? default; + var totalClasses = Semester.Days.Contains(notNullDay) ? $"bg-light {baseClasses}" : baseClasses; +
@day?.Day
+ } + else + { +
+ } }
} \ No newline at end of file diff --git a/Management.Web/Shared/Semester/SemesterDetail.razor b/Management.Web/Shared/Semester/SemesterDetail.razor index 2b9dd0c..199f459 100644 --- a/Management.Web/Shared/Semester/SemesterDetail.razor +++ b/Management.Web/Shared/Semester/SemesterDetail.razor @@ -4,20 +4,21 @@ @code { [Parameter, EditorRequired] - public EnrollmentTermModel Term { get; set; } = default!; + public SemesterConfiguration Configuration { get; set; } = default!; - @* private SemesterPlanner semester { get; set; } = default!; + private SemesterPlanner? semester { get; set; } protected override void OnParametersSet() { - semester = new SemesterPlanner(Term); - } *@ + semester = new SemesterPlanner(Configuration); + } } - -@Term.Name - -@* @foreach (var month in semester.Months) +
+@if (semester != null) { - -
-} *@ \ No newline at end of file + @foreach (var month in semester.Months) + { + +
+ } +} \ No newline at end of file diff --git a/Management/Features/Calendar/SemesterPlanner.cs b/Management/Features/Calendar/SemesterPlanner.cs index 75d014f..6141bcd 100644 --- a/Management/Features/Calendar/SemesterPlanner.cs +++ b/Management/Features/Calendar/SemesterPlanner.cs @@ -3,6 +3,7 @@ using CanvasModel.EnrollmentTerms; public class SemesterPlanner { public IEnumerable Months { get; } + public IEnumerable Days { get; } public SemesterPlanner(SemesterConfiguration configuration) { var start = configuration.StartDate; @@ -20,5 +21,6 @@ public class SemesterPlanner var year = start.Year + ((start.Month + monthDiff - 1) / 12); return new CalendarMonth(year, month); }); + Days = configuration.Days; } } \ No newline at end of file