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; } }