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)); }
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(); }
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 });
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); }
/// <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)); }