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