コード例 #1
0
 public async Task <DateTime?> GetStatusEtaFromNowUtcAsync(InitiativeStatus initiativeStatus)
 {
     if (StatusToEtaMap.ContainsKey(initiativeStatus))
     {
         var          etaDefinition = StatusToEtaMap[initiativeStatus];
         TimeZoneInfo albertaTimeZone;
         try { albertaTimeZone = TimeZoneInfo.FindSystemTimeZoneById("America/Edmonton"); }
         catch (TimeZoneNotFoundException)
         {
             _logger.Error("Unable to find Mountain Standard Time zone");
             throw;
         }
         var      nowAlberta = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, albertaTimeZone);
         DateTime returnValue;
         if (etaDefinition.EtaType == EtaType.BusinessSeconds)
         {
             returnValue = await _businessCalendarService.AddBusinessTime(nowAlberta, TimeSpan.FromSeconds(etaDefinition.Time));
         }
         else
         {
             returnValue = await _businessCalendarService.AddBusinessDays(nowAlberta, etaDefinition.Time);
         }
         returnValue = TimeZoneInfo.ConvertTimeToUtc(returnValue, albertaTimeZone);
         return(returnValue);
     }
     else
     {
         return(null);
     }
 }