public SyncViewModel(Dispatcher dispatcher, MainNotifViewModel mainNotifViewModel, IRecurrence recurrence,string Assembly) { this.LoadPropiedades(); this._Dispatcher = dispatcher; this._MainNotifViewModel = mainNotifViewModel; this._Recurrence = recurrence; this.Message = "Sincronizando..."; this.VersionAssembly = Assembly; this._jobDone = false; this.IdUsuario = mainNotifViewModel.Usuario.IdUsuario.ToString(); }
/// <summary> /// Initializes a new instance of the <see cref="RecurrenceExpander"/> class. /// </summary> /// <param name="pattern">The pattern.</param> /// <param name="scope">The scope.</param> /// <param name="maxInstances">The maximum instances.</param> public RecurrenceExpander(IRecurrencePattern pattern, TimeInterval scope, int maxInstances) { AsyncServiceException.ThrowIfNull(pattern, "pattern"); AsyncServiceException.ThrowIfNegative(maxInstances, "maxInstances"); this._pattern = pattern; // 取消多时区支持 //this._scope = new TimeInterval(pattern.TimeZone.ToLocalTime(scope.Start), scope.IsStartInclusive, pattern.TimeZone.ToLocalTime(scope.End), scope.IsEndInclusive); this._scope = new TimeInterval(scope.Start, scope.IsStartInclusive, scope.End, scope.IsEndInclusive); this._maxInstances = maxInstances; DateTime windowStart = this._pattern.PatternStart; if (this._pattern.Count == 0 && this._scope.Start - this._pattern.Duration > this._pattern.PatternStart) { windowStart = this._scope.Start - this._pattern.Duration; } this._generator = RecurrenceFactory.Create(this._pattern, windowStart); this._expandedInstances = 0; }
public RavenApplicationNodeRunner() { var cf = Catalog.Factory.Resolve <IConfig>(SpecialFactoryContexts.Routed); var companyKey = cf[ApplicationTopologyLocalConfig.CompanyKey]; var appKey = cf[ApplicationTopologyLocalConfig.ApplicationKey]; _reg = new ApplicationNodeRegistry(companyKey, appKey); var logPath = cf[ApplicationTopologyLocalConfig.LogFilePath]; var compType = cf[ApplicationTopologyLocalConfig.ComponentType]; var logName = compType + ".log"; _recurrence = Catalog.Factory.Resolve <IRecurrence <object> >(); _logFilePath = Path.Combine(logPath, logName); _logConfig = new LogConfigConsumer(_logFilePath); _gatherer = Catalog.Factory.Resolve <IApplicationNodeGatherer>(); _alert = Catalog.Factory.Resolve <IApplicationAlert>(); var rnd = new Random(); _updateCycle = TimeSpan.FromSeconds(60.0 + (rnd.NextDouble() * 30.0)); }
/// <summary> /// Gets the month NTH date. /// </summary> /// <param name="recurrence">The recurrence pattern.</param> /// <param name="startDate">The start date.</param> /// <returns>DateTime.</returns> private DateTime GetMonthNthDate(IRecurrence recurrence, DateTime startDate) { var date = new DateTime(startDate.Year, startDate.Month, 1); var instance = 1; if (recurrence.Instance > 4) { //last for (int day = DateTime.DaysInMonth(date.Year, date.Month); day >= 1; day--) { date = new DateTime(date.Year, date.Month, day); if (IsDateMatchingRecurrenceDayOfWeek(recurrence, date)) { break; } } } else { //specific for (int day = 1; day <= DateTime.DaysInMonth(date.Year, date.Month); day++) { date = new DateTime(date.Year, date.Month, day); if (IsDateMatchingRecurrenceDayOfWeek(recurrence, date)) { if (instance == recurrence.Instance) { break; } instance++; } } } return(date); }
/// <summary> /// Gets the yearly recurrence occurrences. /// </summary> /// <param name="recurrence">The recurrence pattern.</param> /// <returns>The dates for occurrences.</returns> private IEnumerable <DateTime> GetYearlyRecurrenceOccurrences(IRecurrence recurrence) { var lastDayOfMonth = DateTime.DaysInMonth(recurrence.StartDate.Year, recurrence.MonthOfYear); var date = new DateTime(recurrence.StartDate.Year, recurrence.MonthOfYear, lastDayOfMonth > recurrence.DayOfMonth ? recurrence.DayOfMonth : lastDayOfMonth); if (date < recurrence.StartDate) { lastDayOfMonth = DateTime.DaysInMonth(recurrence.StartDate.Year + recurrence.Interval, recurrence.MonthOfYear); date = new DateTime(recurrence.StartDate.Year + recurrence.Interval, recurrence.MonthOfYear, lastDayOfMonth > recurrence.DayOfMonth ? recurrence.DayOfMonth : lastDayOfMonth); } int occurenceCounter = 0; while (!GeneratedEnoughOccurrences(occurenceCounter++, date, recurrence)) { yield return(date.Add(recurrence.StartDate.TimeOfDay)); lastDayOfMonth = DateTime.DaysInMonth(date.Year + recurrence.Interval, recurrence.MonthOfYear); date = new DateTime(date.Year + recurrence.Interval, recurrence.MonthOfYear, lastDayOfMonth > recurrence.DayOfMonth ? recurrence.DayOfMonth : lastDayOfMonth); } }
public void AddSelectable(IRecurrence selectable) { }
/// <summary> /// Generateds the enough occurrences. /// </summary> /// <param name="currentCount">The current count.</param> /// <param name="currentDate">The current date.</param> /// <param name="recurrence">The recurrence pattern.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> private bool GeneratedEnoughOccurrences(int currentCount, DateTime currentDate, IRecurrence recurrence) { return ((!recurrence.EndDate.HasValue && currentCount >= recurrence.Occurrences) || (recurrence.EndDate.HasValue && currentDate.Date > recurrence.EndDate.Value.Date)); }