private string ParseCsvFile() { var fileName = Settings[ModuleSettingNames.FileName]; var filePath = HttpContext.Current.Server.MapPath(String.Format("{0}Maps/uploads/{1}", ModuleWebPath, fileName)); string status = string.Empty; if (!File.Exists(filePath)) { status = String.Format("File {0} doesn't exist. Please upload a CSV file in the module settings.", fileName); return(status); } var csvOptions = new CsvReaderOptions() { HasHeaderRecord = true, Strict = false }; var parser = new CsvParser(new StreamReader(filePath)); var reader = new CsvReader(parser, csvOptions); // Get header names var address1 = (string)(Settings[ModuleSettingNames.Address1] ?? ModuleSettingNames.Address1); var address2 = (string)(Settings[ModuleSettingNames.Address2] ?? ModuleSettingNames.Address2); var city = (string)(Settings[ModuleSettingNames.City] ?? ModuleSettingNames.City); var country = (string)(Settings[ModuleSettingNames.Country] ?? ModuleSettingNames.Country); var iconUrl = (string)(Settings[ModuleSettingNames.IconUrl] ?? ModuleSettingNames.IconUrl); var iconShadowUrl = (string)(Settings[ModuleSettingNames.IconShadowUrl] ?? ModuleSettingNames.IconShadowUrl); var infoWindowHtml = (string)(Settings[ModuleSettingNames.InfoWindowHtml] ?? ModuleSettingNames.InfoWindowHtml); var latitude = (string)(Settings[ModuleSettingNames.Latitude] ?? ModuleSettingNames.Latitude); var longitude = (string)(Settings[ModuleSettingNames.Longitude] ?? ModuleSettingNames.Longitude); var postalCode = (string)(Settings[ModuleSettingNames.PostalCode] ?? ModuleSettingNames.PostalCode); var region = (string)(Settings[ModuleSettingNames.Region] ?? ModuleSettingNames.Region); var title = (string)(Settings[ModuleSettingNames.Title] ?? ModuleSettingNames.Title); var customField = (string)(Settings[ModuleSettingNames.CustomField] ?? ModuleSettingNames.CustomField); var priority = (string)(Settings[ModuleSettingNames.Priority] ?? ModuleSettingNames.Priority); var phoneNumber = (string)(Settings[ModuleSettingNames.PhoneNumber] ?? ModuleSettingNames.PhoneNumber); // Delete old markers var markerQuery = new MarkerQuery(); markerQuery.Where(markerQuery.ModuleId == ModuleId); var markerCollection = new MarkerCollection(); markerCollection.Load(markerQuery); markerCollection.MarkAllAsDeleted(); markerCollection.Save(); while (reader.Read()) { // Add new markers to db from csv try { var marker = new Marker { ModuleId = ModuleId, Title = reader.GetField(title), InfoWindowHtml = reader.GetField(infoWindowHtml), Address1 = reader.GetField(address1), Address2 = reader.GetField(address2), City = reader.GetField(city), Region = reader.GetField(region), PostalCode = reader.GetField(postalCode), Country = reader.GetField(country), Latitude = WA.Parser.ToDouble(reader.GetField(latitude)), Longitude = WA.Parser.ToDouble(reader.GetField(longitude)), IconUrl = reader.GetField(iconUrl), IconShadowUrl = reader.GetField(iconShadowUrl), CustomField = reader.GetField(customField), PhoneNumber = reader.GetField(phoneNumber), Priority = (reader.GetField(priority) == "" || reader.GetField(priority) == null) ? "zzzz" : reader.GetField(priority) }; marker.Save(); if (!marker.Latitude.HasValue && !marker.Longitude.HasValue) { _markers.Add(marker); } } catch (Exception ex) { throw ex; } } status = String.Format("<h1>File {0} parsed successfully</h1><hr />", fileName); status += GeocodeMarkerList(_markers); return(status); }