69 lines
2.1 KiB
C#
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;
|
|
}
|
|
}
|