Files
monorepo/LCU.API.Operations.IncentiveAPI/LCU.Library.Internal.IncentiveApiModels/Common/MonthRange.cs
T
2026-03-17 09:53:09 -05:00

69 lines
2.1 KiB
C#

using System;
namespace LCU.Library.Internal.IncentiveApiModels.Common
{
public sealed class MonthRange
{
public int FromMonth { get; }
public int FromYear { get; }
public int ToMonth { get; }
public int ToYear { get; }
public MonthRange()
{
var today = DateTime.Today;
FromMonth = today.Month;
ToMonth = today.Month;
FromYear = today.Year;
ToYear = today.Year;
}
public MonthRange(DateTime period)
{
FromMonth = period.Month;
ToMonth = period.Month;
FromYear = period.Year;
ToYear = period.Year;
}
public MonthRange(DateTime fromPeriod, DateTime toPeriod)
{
FromMonth = fromPeriod.Month;
ToMonth = toPeriod.Month;
FromYear = fromPeriod.Year;
ToYear = toPeriod.Year;
}
public MonthRange(int year, int month)
{
if (year < 1900 || month > 12)
{
throw new Exception("First Argument is Year, not month");
}
FromMonth = month;
ToMonth = month;
FromYear = year;
ToYear = year;
}
public MonthRange(int fromYear, int fromMonth, int toYear, int toMonth)
{
if (fromYear < 1900 || fromMonth > 12 || toYear < 1900 || toMonth > 12)
{
throw new Exception("Year arguments are first, they are likely swapped.");
}
FromMonth = fromMonth;
ToMonth = toMonth;
FromYear = fromYear;
ToYear = toYear;
}
public bool IsSingleMonth => FromMonth == ToMonth && FromYear == ToYear;
public DateTime StartTime => new DateTime(FromYear, FromMonth, 1);
public DateTime EndTime => new DateTime(ToYear, ToMonth, 1).AddMonths(1).AddSeconds(-1);
public bool ValidFromRange => FromMonth != 0 && FromYear != 0;
public bool ValidToRange => ToMonth != 0 && ToYear != 0;
}
}