public void OneMatches()
        {
            // ARRANGE
            var salesforceSupportedTimeZones = new List <SalesforceSupportedTimeZone>();

            salesforceSupportedTimeZones.Add(new SalesforceSupportedTimeZone(-36000, "Hawaii-Aleutian Standard Time", "Pacific/Honolulu"));
            var googleTimeZone = new GoogleApiTimeZoneResult
            {
                rawOffset = -36000,
                dstOffset = 0
            };

            // ACT
            var result = googleTimeZone.ToSalesforceTimeZone(salesforceSupportedTimeZones);

            // ASSERT
            Assert.AreEqual("Pacific/Honolulu", result);
        }
        public void MultipleTimeZoneNameMatches_NoResult()
        {
            // ARRANGE
            var salesforceSupportedTimeZones = new List <SalesforceSupportedTimeZone>();

            salesforceSupportedTimeZones.Add(new SalesforceSupportedTimeZone(-36000, "Eastern Daylight Time", "America/New_York"));
            var googleTimeZone = new GoogleApiTimeZoneResult
            {
                rawOffset    = -18000,
                dstOffset    = 3600,
                timeZoneName = "Bob"
            };

            // ACT
            var result = googleTimeZone.ToSalesforceTimeZone(salesforceSupportedTimeZones);

            // ASSERT
            Assert.AreEqual(string.Empty, result);
        }
        public static string ToSalesforceTimeZone(this GoogleApiTimeZoneResult googleTimeZoneResult, IList <SalesforceSupportedTimeZone> salesforceSupportedTimeZones)
        {
            var timeZoneOffset = googleTimeZoneResult.rawOffset + googleTimeZoneResult.dstOffset;
            var matches        = salesforceSupportedTimeZones.Where(timeZone => timeZone.TimeZoneOffset == timeZoneOffset).ToList();

            if (matches.Count == 1)
            {
                return(matches.First().TimeZoneId);
            }

            if (matches.Any())
            {
                var timeZoneNameMatches = matches.Where(match => match.TimeZoneName.Equals(googleTimeZoneResult.timeZoneName)).ToList();

                if (timeZoneNameMatches.Any())
                {
                    return(timeZoneNameMatches.FirstOrDefault().TimeZoneId);
                }
            }

            return(string.Empty);
        }