/// <summary> /// Deletes the by ID. /// </summary> /// <param name="id">The id.</param> public tbl_SiteActivityRules CopyByID(Guid id) { var siteActivityRule = SelectById(id); if (siteActivityRule != null) { var newSiteActivityRule = new tbl_SiteActivityRules(); newSiteActivityRule = siteActivityRule; _dataContext.Detach(newSiteActivityRule); newSiteActivityRule.ID = new Guid(); newSiteActivityRule = Add(newSiteActivityRule); NameValueCollection id2id = new NameValueCollection(); var ruleLayouts = _dataContext.tbl_SiteActivityRuleLayout.Where(a => a.SiteActivityRuleID == id).OrderBy(a => a.Order); if (ruleLayouts.Any()) { foreach (var ruleLayout in ruleLayouts) { _dataContext.Detach(ruleLayout); var newId = Guid.NewGuid(); id2id.Add(ruleLayout.ID.ToString(), newId.ToString()); ruleLayout.ID = newId; ruleLayout.SiteActivityRuleID = newSiteActivityRule.ID; string newParrentId = id2id[ruleLayout.ParentID.ToString()]; if (newParrentId != null) { ruleLayout.ParentID = Guid.Parse(newParrentId); } _dataContext.tbl_SiteActivityRuleLayout.AddObject(ruleLayout); } _dataContext.SaveChanges(); } //ruleLayouts = _dataContext.tbl_SiteActivityRuleLayout.Where(a => a.SiteActivityRuleID == newSiteActivityRule.ID).OrderBy(a => a.Order); //if (ruleLayouts.Any()) //{ // foreach (var ruleLayout in ruleLayouts) // { // if (ruleLayout.ParentID != null) // { // string newParrentId = id2id[ruleLayout.ParentID.ToString()]; // if (newParrentId != null) // { // ruleLayout.ParentID = Guid.Parse(newParrentId); // } // } // } //} var siteColumns = _dataContext.tbl_SiteColumns.Where(a => a.SiteActivityRuleID == id); if (siteColumns.Any()) { foreach (var siteColumn in siteColumns) { _dataContext.Detach(siteColumn); var oldId = siteColumn.ID; siteColumn.ID = Guid.NewGuid(); siteColumn.SiteActivityRuleID = newSiteActivityRule.ID; _dataContext.tbl_SiteColumns.AddObject(siteColumn); var siteColumnValues = _dataContext.tbl_SiteColumnValues.Where(a => a.SiteColumnID == oldId); if (siteColumnValues.Any()) { foreach (var siteColumnValue in siteColumnValues) { _dataContext.Detach(siteColumnValue); siteColumnValue.ID = Guid.NewGuid(); siteColumnValue.SiteColumnID = siteColumn.ID; _dataContext.tbl_SiteColumns.AddObject(siteColumn); } } foreach (var activityRuleLayout in _dataContext.tbl_SiteActivityRuleLayout.Where(o => o.SiteActivityRuleID == newSiteActivityRule.ID && o.SiteColumnID == oldId)) { activityRuleLayout.SiteColumnID = siteColumn.ID; } } } var siteActivityRuleExternalForms = _dataContext.tbl_SiteActivityRuleExternalForms.Where(a => a.SiteActivityRuleID == id); if (siteActivityRuleExternalForms.Any()) { foreach (var siteActivityRuleExternalForm in siteActivityRuleExternalForms) { _dataContext.Detach(siteActivityRuleExternalForm); var oldId = siteActivityRuleExternalForm.ID; siteActivityRuleExternalForm.ID = Guid.NewGuid(); siteActivityRuleExternalForm.SiteActivityRuleID = newSiteActivityRule.ID; _dataContext.tbl_SiteActivityRuleExternalForms.AddObject(siteActivityRuleExternalForm); var siteActivityRuleExternalFormFields = _dataContext.tbl_SiteActivityRuleExternalFormFields.Where(a => a.SiteActivityRuleExternalFormID == oldId); if (siteActivityRuleExternalFormFields.Any()) { foreach (var siteActivityRuleExternalFormField in siteActivityRuleExternalFormFields) { _dataContext.Detach(siteActivityRuleExternalFormField); siteActivityRuleExternalFormField.ID = Guid.NewGuid(); siteActivityRuleExternalFormField.SiteActivityRuleExternalFormID = siteActivityRuleExternalForm.ID; _dataContext.tbl_SiteActivityRuleExternalFormFields.AddObject(siteActivityRuleExternalFormField); } } } } _dataContext.SaveChanges(); return(newSiteActivityRule); } return(new tbl_SiteActivityRules()); }