Files
Wino-Mail/Wino.Core.Domain/Models/Calendar/DayRangeRenderModel.cs

52 lines
1.9 KiB
C#
Raw Normal View History

using System.Collections.Generic;
using System.Linq;
using Itenso.TimePeriod;
using Wino.Core.Domain.Enums;
2025-02-16 11:54:23 +01:00
namespace Wino.Core.Domain.Models.Calendar;
/// <summary>
/// Represents a range of days in the calendar.
/// Corresponds to 1 view of the FlipView in CalendarPage.
/// </summary>
public class DayRangeRenderModel
{
2025-02-16 11:54:23 +01:00
public ITimePeriod Period { get; }
public List<CalendarDayModel> CalendarDays { get; } = [];
2025-02-16 11:54:23 +01:00
// TODO: Get rid of this at some point.
public List<DayHeaderRenderModel> DayHeaders { get; } = [];
public CalendarRenderOptions CalendarRenderOptions { get; }
public DayRangeRenderModel(CalendarRenderOptions calendarRenderOptions)
{
CalendarRenderOptions = calendarRenderOptions;
2025-02-16 11:54:23 +01:00
for (var i = 0; i < CalendarRenderOptions.TotalDayCount; i++)
{
2025-02-16 11:54:23 +01:00
var representingDate = calendarRenderOptions.DateRange.StartDate.AddDays(i);
var calendarDayModel = new CalendarDayModel(representingDate, calendarRenderOptions);
2025-02-16 11:54:23 +01:00
CalendarDays.Add(calendarDayModel);
}
2025-02-16 11:54:23 +01:00
Period = new TimeRange(CalendarDays.First().RepresentingDate, CalendarDays.Last().RepresentingDate.AddDays(1));
2025-02-16 11:54:23 +01:00
// Create day headers based on culture info.
2025-02-16 11:54:23 +01:00
for (var i = 0; i < 24; i++)
{
var representingDate = calendarRenderOptions.DateRange.StartDate.Date.AddHours(i);
2025-02-16 11:54:23 +01:00
string dayHeader = calendarRenderOptions.CalendarSettings.DayHeaderDisplayType switch
{
2025-02-16 11:54:23 +01:00
DayHeaderDisplayType.TwelveHour => representingDate.ToString("h tt", calendarRenderOptions.CalendarSettings.CultureInfo),
DayHeaderDisplayType.TwentyFourHour => representingDate.ToString("HH", calendarRenderOptions.CalendarSettings.CultureInfo),
_ => "N/A"
};
2025-02-16 11:54:23 +01:00
DayHeaders.Add(new DayHeaderRenderModel(dayHeader, calendarRenderOptions.CalendarSettings.HourHeight));
}
}
}