Exemple #1
0
        private void MapSiteResourceToDao(SiteResource resource, SiteDao siteDao)
        {
            if (resource.Pages == null)
            {
                resource.Pages = new List <PageResource>();
            }

            siteDao.Domain    = resource.Domain;
            siteDao.IsEnabled = resource.IsEnabled;

            siteDao.MaintainCountryList(_dataContext, resource.Countries);

            var incomingPaths = resource.Pages.ToDictionary(p => p.Path);
            var currentPaths  = siteDao.Pages.ToDictionary(p => p.Path);

            var newPaths     = incomingPaths.Keys.Except(currentPaths.Keys).ToList();
            var deletedPaths = currentPaths.Keys.Except(incomingPaths.Keys).ToList();
            var commonPaths  = currentPaths.Keys.Intersect(incomingPaths.Keys).ToList();

            foreach (var p in newPaths)
            {
                var dao = new PageDao();
                MapPageResourceToDao(incomingPaths[p], dao);
                siteDao.Pages.Add(dao);
            }

            foreach (var p in deletedPaths)
            {
                siteDao.Pages.Remove(currentPaths[p]);
            }

            foreach (var p in commonPaths)
            {
                var currentPage  = currentPaths[p];
                var pageresource = incomingPaths[p];
                MapPageResourceToDao(pageresource, currentPage);
            }
        }