/// <summary> /// Copy Existing Site /// </summary> /// <param name="site"></param> /// <returns></returns> public void CopySite(int siteId) { if (!CheckSiteCollectionAdmin(UserContextDetails.UserId)) { throw new BusinessException(_coreValidationResourceManager.GetString(CoreValidationMessagesConstants.UnAuthorized), CoreValidationMessagesConstants.UnAuthorized); } Site site = eCollabroDbContext.Repository<Site>().Query().Include(inc => inc.Navigations).Include(inc => inc.Roles).Filter(qry => qry.SiteId.Equals(siteId)).Get().FirstOrDefault(); if (site != null) { #region Site Copy Site newSite = new Site(); newSite.SiteName = site.SiteName + "-Copy"; newSite.SiteDesc = site.SiteDesc; newSite.IsActive = true; newSite.SiteCode = _commonManager.GetNextCode(EntityConstants.Site); newSite.CreatedById = UserContextDetails.UserId; newSite.CreatedOn = DateTime.UtcNow; #endregion #region Feature Copy foreach (SiteFeature siteFeature in site.SiteFeatures) { SiteFeature newsiteFeature = new SiteFeature(); newsiteFeature.FeatureId = siteFeature.FeatureId; newsiteFeature.CreatedById = UserContextDetails.UserId; newsiteFeature.CreatedOn = DateTime.UtcNow; newSite.SiteFeatures.Add(newsiteFeature); } #endregion #region Navigation Copy foreach (Navigation navigation in site.Navigations) { Navigation newNavigation = new Navigation(); newNavigation.NavigationCode = _commonManager.GetNextCode(EntityConstants.Navigation); newNavigation.NavigationParentId = navigation.NavigationParentId; newNavigation.ContentPageId = navigation.ContentPageId; newNavigation.DisplayOrder = navigation.DisplayOrder; newNavigation.IsAnomynousAccess = navigation.IsAnomynousAccess; newNavigation.FeatureId = navigation.FeatureId; newNavigation.NavigationText = navigation.NavigationText; newNavigation.Link = navigation.Link; newNavigation.IsActive = true; newNavigation.IsDeleted = false; newNavigation.NavigationTypeId = navigation.NavigationTypeId; newNavigation.CreatedById = UserContextDetails.UserId; newNavigation.CreatedOn = DateTime.UtcNow; newSite.Navigations.Add(newNavigation); } #endregion #region Role Copy foreach (Role role in site.Roles) { Role newRole = new Role(); newRole.RoleCode = _commonManager.GetNextCode(EntityConstants.Role); newRole.RoleName = role.RoleName; newRole.RoleDescription = role.RoleDescription; newRole.IsSystem = role.IsSystem; newRole.IsActive = true; newRole.IsDeleted = false; newRole.CreatedById = UserContextDetails.UserId; newRole.CreatedOn = DateTime.UtcNow; newSite.Roles.Add(newRole); } #endregion eCollabroDbContext.Repository<Site>().Insert(newSite); eCollabroDbContext.Save(); #region Change Navigation Ids List<Navigation> fxNavition = site.Navigations.ToList(); Dictionary<int, int?> dict = new Dictionary<int, int?>(); for (int i = 0; i < fxNavition.Count; i++) { if (fxNavition[i].NavigationParentId.HasValue) { int j = 0; for (; j < fxNavition.Count; j++) { if (fxNavition[i].NavigationParentId.Value.Equals(fxNavition[j].NavigationId)) { dict.Add(i, j); break; } } } else { dict.Add(i, null); } } for (int k = 0; k < dict.Count; k++) { int? m; dict.TryGetValue(k, out m); if (m == null) { newSite.Navigations.ToList()[k].NavigationParentId = null; } else { newSite.Navigations.ToList()[k].NavigationParentId = newSite.Navigations.ToList()[m.Value].NavigationId; } } eCollabroDbContext.Save(); #endregion } else { throw new DBConcurrencyException(); } }
/// <summary> /// SaveSiteFeatures /// </summary> /// <param name="SiteFeatures"></param> private void SaveSiteFeatures(List<int> lstFeatures, int siteId) { List<SiteFeature> siteFeatures = eCollabroDbContext.Repository<SiteFeature>().Query().Filter(qry => qry.SiteId.Equals(siteId)).Get().ToList(); foreach (int featureId in lstFeatures) { SiteFeature oldSiteFeature = siteFeatures.Where(ee => ee.FeatureId.Equals(featureId)).FirstOrDefault(); if (oldSiteFeature == null) //New { SiteFeature siteFeature = new SiteFeature(); siteFeature.FeatureId = featureId; siteFeature.SiteId = siteId; siteFeature.CreatedById = UserContextDetails.UserId; siteFeature.CreatedOn = DateTime.UtcNow; eCollabroDbContext.Repository<SiteFeature>().Insert(siteFeature); } } foreach (SiteFeature siteFeature in siteFeatures) { if (!lstFeatures.Contains(siteFeature.FeatureId)) { eCollabroDbContext.Repository<SiteFeature>().Delete(siteFeature); } } if (lstFeatures.Count == 0) // unselect the existing feature { foreach (SiteFeature siteFeature in siteFeatures) { eCollabroDbContext.Repository<SiteFeature>().Delete(siteFeature); } } eCollabroDbContext.Save(); }