public static void SetIntervalUtc(IntervalTypes intervalType, DateTime interval)
 {
     try
     {
         Trace.Debug($"SetIntervalUtc(), intervalType:{intervalType}, interval:{interval.ToString("o")}");
         var config = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
         if (config.AppSettings.Settings[intervalType.ToString()] == null)
         {
             config.AppSettings.Settings.Add(intervalType.ToString(), "");
         }
         config.AppSettings.Settings[intervalType.ToString()].Value = interval.ToString("o");
         config.Save(ConfigurationSaveMode.Modified);
         Trace.Info($"{intervalType} saved: {interval.ToString("o")}");
     }
     catch (Exception ex)
     {
         Trace.Fatal(ex);
     }
 }
 public static DateTime GetIntervalUtc(IntervalTypes intervalType)
 {
     try
     {
         Trace.Debug($"GetIntervalUtc(), intervalType:{intervalType}");
         var config        = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
         var valueAsString = config.AppSettings.Settings[intervalType.ToString()].Value;
         var valueAsDate   = DateTime.Parse(valueAsString);
         Trace.Info($"{intervalType} loaded: {valueAsDate.ToString("o")}");
         return(valueAsDate);
     }
     catch
     {
         // <return a default value if interval does not exist>
         var dt = DateTime.Today.ToUniversalTime().AddDays(-DefaultNumberOfDays);
         Trace.Warn($"{intervalType} not found, taking the default one: {dt.ToString("o")}");
         return(dt);
         // <return a default value if interval does not exist>
     }
 }
        internal TimeSpan GetAverageWaitTime(string workgroupName, IntervalTypes intervalType, bool waitForData)
        {
            using (Trace.Cic.scope())
            {
                try
                {
                    var key = new StatisticKey(AverageWaitTimeDefinition.Id,
                                               new ParameterValueKeyedCollection
                    {
                        new ParameterValue(new ParameterTypeId("ININ.People.WorkgroupStats:Workgroup"), workgroupName),
                        new ParameterValue(new ParameterTypeId("ININ.Queue:Interval"), intervalType.ToString())
                    });

                    return(GetStatisticDuration(key, waitForData));
                }
                catch (NullStatisticValueException ex)
                {
                    Trace.Cic.warning(ex.Message);
                    return(TimeSpan.MinValue);
                }
                catch (StatisticErrorException ex)
                {
                    Trace.Cic.exception(ex);
                    return(TimeSpan.MinValue);
                }
                catch (Exception ex)
                {
                    Trace.Cic.exception(ex);
                    return(TimeSpan.MinValue);
                }
            }
        }