public MapEventListModel Create(IEnumerable <Event> events, IEnumerable <EventBasicInfoViewModel> eventListInfo, IEnumerable <ZipCode> zipCodes, IEnumerable <CorporateAccount> corporateAccounts)
        {
            var model      = new MapEventListModel();
            var collection = new List <MapEventViewModel>();

            events.ToList().ForEach(e =>
            {
                var info    = eventListInfo.Single(x => x.Id == e.Id);
                var zipCode = zipCodes.Where(x => x.Zip == info.HostAddress.ZipCode).FirstOrDefault();

                var mapEventModel = new MapEventViewModel
                {
                    Id = e.Id,
                    //Latitude = zipCode.Latitude.ToString(),
                    //Longitude = zipCode.Longitude.ToString(),
                    Host                  = info.HostName,
                    Address               = info.HostAddress.ToString(),
                    SponsoredBy           = info.Sponsor,
                    Pods                  = info.Pods != null ? string.Join(", ", info.Pods.Select(pod => pod.SecondValue)) : string.Empty,
                    EventType             = e.EventType,
                    TotalAppointmentSlots = info.TotalAppointmentSlots,
                    BookedSlots           = info.BookedSlots,
                    EventDate             = e.EventDate.ToString("dd/MM/yyyy")
                };

                if (e.AccountId.HasValue)
                {
                    var corporateAccount = corporateAccounts.Single(x => x.Id == e.AccountId);
                    if (corporateAccount.IsHealthPlan)
                    {
                        mapEventModel.EventType = EventType.HealthPlan;
                    }
                    else
                    {
                        mapEventModel.EventType = EventType.Corporate;
                    }
                }
                else
                {
                    mapEventModel.EventType = EventType.Retail;
                }

                mapEventModel = GetLatLngByZipCode(collection, zipCode.Latitude.ToString(), zipCode.Longitude.ToString(), mapEventModel);

                collection.Add(mapEventModel);
            });

            model.Collection = collection;
            return(model);
        }
        private MapEventViewModel GetLatLngByZipCode(List <MapEventViewModel> collection, string lat, string lng, MapEventViewModel model)
        {
            do
            {
                var latpower = CountDigitsAfterDecimal(Convert.ToDouble(lat));
                var lngpower = CountDigitsAfterDecimal(Convert.ToDouble(lng));
                lat = (Convert.ToDouble(lat) + 1 / Math.Pow(10, latpower - 1)).ToString();
                lng = (Convert.ToDouble(lng) + 1 / Math.Pow(10, lngpower - 1)).ToString();
            }while (collection.Any(x => (x.Latitude) == lat && x.Longitude == lng));

            model.Latitude  = lat.ToString();
            model.Longitude = lng.ToString();

            return(model);
        }