예제 #1
0
        public void Should_return_next_expected_date(BackupFrequency backupFrequency, string date, string expectedNextDate)
        {
            var dateValue             = DateTime.ParseExact(date, "o", null, DateTimeStyles.RoundtripKind);
            var expectedNextDateValue = DateTime.ParseExact(expectedNextDate, "o", null, DateTimeStyles.RoundtripKind);

            Assert.Equal(expectedNextDateValue, DateExtensions.NextDateTime(backupFrequency, dateValue));
        }
예제 #2
0
        public async Task AddAsync(string databasePath, BackupFrequency backupFrequency, bool uploadToDropbox, BackupFrequency?uploadToDropboxFrequency)
        {
            await _context.DatabaseBackups.AddAsync(new DatabaseBackup
            {
                DatabasePath             = databasePath,
                BackupFrequency          = backupFrequency,
                UploadToDropbox          = uploadToDropbox,
                UploadToDropboxFrequency = uploadToDropbox ? uploadToDropboxFrequency : null
            });

            await _context.SaveChangesAsync();
        }
예제 #3
0
        public static DateTime NextDateTime(this BackupFrequency backupFrequency, DateTime?fromDate)
        {
            if (fromDate == null)
            {
                return(DateTime.MinValue);
            }

            return(backupFrequency switch {
                BackupFrequency.Daily => fromDate.Value.AddDays(1),
                BackupFrequency.Weekly => fromDate.Value.AddDays(7),
                BackupFrequency.Monthly => fromDate.Value.AddMonths(1),
                _ => fromDate.Value
            });
예제 #4
0
        private bool CheckBackupNecessary(DateTime lastBackup, BackupFrequency backupFrequency)
        {
            if (log.IsDebugEnabled)
            {
                log.Debug(string.Format("Backup necessary - Current Date: {0} Backup Frequency: {1}", DateTime.Now,
                                        backupFrequency));
            }
            bool backupNecessary = false;
            GregorianCalendar cal;

            switch (backupFrequency)
            {
            case BackupFrequency.OnConnect:
                backupNecessary = true;
                break;

            case BackupFrequency.Daily:
                backupNecessary = lastBackup < DateTime.Today;
                break;

            case BackupFrequency.Weekly:
                cal = new GregorianCalendar(GregorianCalendarTypes.Localized);
                return(cal.GetWeekOfYear(lastBackup, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday) < cal.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday));

            case BackupFrequency.Monthly:
                cal             = new GregorianCalendar(GregorianCalendarTypes.Localized);
                backupNecessary = cal.GetMonth(lastBackup) < cal.GetMonth(DateTime.Now);
                break;

            case BackupFrequency.Never:
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(backupFrequency), backupFrequency, null);
            }

            return(backupNecessary);
        }
예제 #5
0
 /// <summary>
 /// Convert a <see cref="BackupFrequency"/> object to it's period value
 /// in milliseconds.
 /// </summary>
 /// <param name="frequency">backup frequency to convert</param>
 /// <returns>the frequency's period in milliseconds.</returns>
 public static double ToMilliseconds(BackupFrequency frequency)
 {
     return(frequency.Amount * Multiplier(frequency.Period));
 }