Exemple #1
0
        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);
        }