private bool IsTimeToUpdate(UpdateDataType type)
        {
            _updateIntervals.TryGetValue(type, out var interval);
            if (interval < 1)
            {
                return(false);
            }

            _previousUpdates.TryGetValue(type, out var prevUpdate);
            return(prevUpdate != DateTime.MinValue && (DateTime.UtcNow - prevUpdate).TotalMilliseconds >= interval);
        }
Exemple #2
0
 public DataUpdatedArgs(UpdateDataType input) : this()
 {
     foreach (string key in input.Keys)
     {
         if (!Values.ContainsKey(key))
         {
             Values.Add(key, new Dictionary <string, string>());
         }
         foreach (KeyValuePair <string, string> entry in input[key])
         {
             Values[key].Add(entry.Key, entry.Value);
         }
     }
 }
Exemple #3
0
        public UpdateTablesResult UpdateTables(BillingCategory categories, UpdateDataType types = UpdateDataType.DataClean | UpdateDataType.Data)
        {
            DateTime startedAt = DateTime.Now;
            DateTime period    = startedAt.FirstOfMonth();

            //First, update tables
            UpdateResult updateResult = Provider.Billing.Process.Update(new UpdateCommand
            {
                BillingTypes = categories,
                UpdateTypes  = types,
                Period       = period,
                ClientID     = 0
            });

            var            holidays           = Utility.GetHolidays(period, period.AddMonths(1));
            var            isFirstBusinessDay = Utility.IsFirstBusinessDay(startedAt, holidays);
            FinalizeResult finalizeResult;

            //the daily update DOES produce correct data
            //however, if a change was made since the update, it needs to be caught
            if (isFirstBusinessDay)
            {
                finalizeResult = Finalize(period.AddMonths(-1));
            }
            else
            {
                finalizeResult = null;
            }

            var result = new UpdateTablesResult(startedAt)
            {
                Now                = startedAt,
                Period             = period,
                IsFirstBusinessDay = isFirstBusinessDay,
                FinalizeResult     = finalizeResult,
                UpdateResult       = updateResult
            };

            return(result);
        }