public void SetCustomRoutes(IEnumerable <CustomRouteModel> routes)
        {
            var existingRouteIds = new List <int>();

            foreach (var model in routes)
            {
                // Throw out empty urls
                if (String.IsNullOrEmpty(model.Url))
                {
                    continue;
                }
                if (model.Url.Trim() == String.Empty)
                {
                    continue;
                }

                var customRouteModel = model;
                var record           = _customRouteRepository.Fetch(q => q.Url == customRouteModel.Url).FirstOrDefault();
                if (record == null)
                {
                    record = new SitemapCustomRouteRecord {
                        IndexForDisplay = model.IndexForDisplay,
                        IndexForXml     = model.IndexForXml,
                        Priority        = model.Priority,
                        Url             = model.Url ?? String.Empty,
                        UpdateFrequency = model.UpdateFrequency
                    };
                    _customRouteRepository.Create(record);
                }
                else
                {
                    record.IndexForDisplay = model.IndexForDisplay;
                    record.IndexForXml     = model.IndexForXml;
                    record.Priority        = model.Priority;
                    record.UpdateFrequency = model.UpdateFrequency;
                    _customRouteRepository.Update(record);
                }
                existingRouteIds.Add(record.Id);
            }
            _customRouteRepository.Flush();

            var toDelete = _customRouteRepository.Fetch(q => !existingRouteIds.Contains(q.Id));

            foreach (var record in toDelete)
            {
                _customRouteRepository.Delete(record);
            }
            _customRouteRepository.Flush();

            _signals.Trigger("WebAdvanced.Sitemap.CustomRoutes");
        }
        public void SetCustomRoutes(IEnumerable <CustomRouteModel> routes)
        {
            var existingRouteIds = new List <int>();

            foreach (var model in routes)
            {
                // Treat empty url as over-ride for root path
                if (string.IsNullOrWhiteSpace(model.Url))
                {
                    model.Url = string.Empty;
                }

                var customRouteModel = model;
                var record           = _customRouteRepository.Get(q => q.Url == model.Url);
                if (record == null)
                {
                    record = new SitemapCustomRouteRecord
                    {
                        IndexForDisplay = model.IndexForDisplay,
                        IndexForXml     = model.IndexForXml,
                        Priority        = model.Priority,
                        Url             = model.Url ?? String.Empty,
                        UpdateFrequency = model.UpdateFrequency
                    };
                    _customRouteRepository.Create(record);
                }
                else
                {
                    record.IndexForDisplay = model.IndexForDisplay;
                    record.IndexForXml     = model.IndexForXml;
                    record.Priority        = model.Priority;
                    record.UpdateFrequency = model.UpdateFrequency;
                    _customRouteRepository.Update(record);
                }
                existingRouteIds.Add(record.Id);
            }
            _customRouteRepository.Flush();

            var toDelete = _customRouteRepository.Fetch(q => !existingRouteIds.Contains(q.Id));

            foreach (var record in toDelete)
            {
                _customRouteRepository.Delete(record);
            }
            _customRouteRepository.Flush();

            _signals.Trigger("Digic.Sitemap.CustomRoutes");
        }