Beispiel #1
0
        /// <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());
        }