@@ -1,41 +1,42 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
namespace Wino.Core.Domain.Models.Calendar;
|
||||
|
||||
public class DateRange
|
||||
namespace Wino.Core.Domain.Models.Calendar
|
||||
{
|
||||
public DateRange(DateTime startDate, DateTime endDate)
|
||||
public class DateRange
|
||||
{
|
||||
StartDate = startDate;
|
||||
EndDate = endDate;
|
||||
}
|
||||
public DateRange(DateTime startDate, DateTime endDate)
|
||||
{
|
||||
StartDate = startDate;
|
||||
EndDate = endDate;
|
||||
}
|
||||
|
||||
public DateTime StartDate { get; }
|
||||
public DateTime EndDate { get; }
|
||||
public DateTime StartDate { get; }
|
||||
public DateTime EndDate { get; }
|
||||
|
||||
public int TotalDays => (EndDate - StartDate).Days;
|
||||
public int TotalDays => (EndDate - StartDate).Days;
|
||||
|
||||
public override string ToString() => $"{StartDate.ToString("dd MMMM")} - {EndDate.ToString("dd MMMM")}";
|
||||
public override string ToString() => $"{StartDate.ToString("dd MMMM")} - {EndDate.ToString("dd MMMM")}";
|
||||
|
||||
public bool IsInRange(DateTime date)
|
||||
{
|
||||
return date >= StartDate && date <= EndDate;
|
||||
}
|
||||
public bool IsInRange(DateTime date)
|
||||
{
|
||||
return date >= StartDate && date <= EndDate;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the most visible month index in the visible date range.
|
||||
/// </summary>
|
||||
public int GetMostVisibleMonthIndex()
|
||||
{
|
||||
var dateRange = Enumerable.Range(0, (EndDate - StartDate).Days + 1).Select(offset => StartDate.AddDays(offset));
|
||||
/// <summary>
|
||||
/// Gets the most visible month index in the visible date range.
|
||||
/// </summary>
|
||||
public int GetMostVisibleMonthIndex()
|
||||
{
|
||||
var dateRange = Enumerable.Range(0, (EndDate - StartDate).Days + 1).Select(offset => StartDate.AddDays(offset));
|
||||
|
||||
var groupedByMonth = dateRange.GroupBy(date => date.Month)
|
||||
.Select(g => new { Month = g.Key, DayCount = g.Count() });
|
||||
var groupedByMonth = dateRange.GroupBy(date => date.Month)
|
||||
.Select(g => new { Month = g.Key, DayCount = g.Count() });
|
||||
|
||||
// Find the month with the maximum count of days
|
||||
var mostVisibleMonth = groupedByMonth.OrderByDescending(g => g.DayCount).FirstOrDefault();
|
||||
// Find the month with the maximum count of days
|
||||
var mostVisibleMonth = groupedByMonth.OrderByDescending(g => g.DayCount).FirstOrDefault();
|
||||
|
||||
return mostVisibleMonth?.Month ?? -1;
|
||||
return mostVisibleMonth?.Month ?? -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user