public void Always_Return_True_Previous_Date_Is_Default(SummaryMailIntervalOptions setting)
        {
            // ReSharper disable once CollectionNeverUpdated.Local
            var l = new List <DateTime>();

            Assert.True(SummaryMailIntervalService.ShouldReceiveSummaryMail(setting, l.FirstOrDefault()));
        }
        public static bool ShouldReceiveSummaryMail(SummaryMailIntervalOptions setting, DateTime?lastMailDate)
        {
            if (setting == SummaryMailIntervalOptions.Disable)
            {
                return(false);
            }

            if (!lastMailDate.HasValue || lastMailDate == default(DateTime))
            {
                return(true);
            }

            if (setting == SummaryMailIntervalOptions.Daily)
            {
                return(lastMailDate.Value.Date != DateTime.UtcNow.Date);
            }

            if (setting == SummaryMailIntervalOptions.Weekly)
            {
                return(lastMailDate.Value.Date != DateTime.UtcNow.Date && DateTime.UtcNow.DayOfWeek == DayOfWeek.Sunday);
            }

            if (setting == SummaryMailIntervalOptions.Monthly)
            {
                return(lastMailDate.Value.Month != DateTime.UtcNow.Month || lastMailDate.Value.Year != DateTime.UtcNow.Year);
            }

            return(false);
        }
 public void Always_Return_True_When_Previous_Date_Is_Null(SummaryMailIntervalOptions setting)
 {
     Assert.True(SummaryMailIntervalService.ShouldReceiveSummaryMail(setting, null));
 }