public ActionResult MergeCompay(AjaxMergeCompany mergecompany) { var maincrmid = mergecompany.company.CRMID; CompanyRelationship crm = CH.GetDataById <CompanyRelationship>(mergecompany.company.CRMID); crm.Company.Address = mergecompany.company.Address; crm.Company.AreaID = mergecompany.company.AreaID; crm.Company.Business = mergecompany.company.Business; crm.Company.CompanyTypeID = mergecompany.company.CompanyTypeID; crm.Company.Contact = mergecompany.company.Contact == null?mergecompany.company.Contact:mergecompany.company.Contact.Trim(); crm.Company.ModifiedDate = DateTime.Now; crm.Company.ModifiedUser = Employee.CurrentUserName; crm.Company.Address_EN = mergecompany.company.Address_EN; crm.Company.Province = mergecompany.company.Province; crm.Company.City = mergecompany.company.City; crm.Company.Scale = mergecompany.company.Scale; crm.Company.AnnualSales = mergecompany.company.AnnualSales; crm.Company.MainProduct = mergecompany.company.MainProduct; crm.Company.MainClient = mergecompany.company.MainClient; crm.Company.Description = mergecompany.company.Description; crm.Company.DistrictNumberID = mergecompany.company.DistrictNumberID; crm.Company.Fax = mergecompany.company.Fax; crm.Company.Name_CH = mergecompany.company.Name_CH == null?mergecompany.company.Name_CH:mergecompany.company.Name_CH.Trim(); crm.Company.Name_EN = mergecompany.company.Name_EN == null?mergecompany.company.Name_EN:mergecompany.company.Name_EN.Trim(); crm.Company.WebSite = mergecompany.company.WebSite; crm.Company.ZIP = mergecompany.company.ZIP; crm.Company.Customers = mergecompany.company.Customers; crm.Company.Competitor = mergecompany.company.Competitor; var maincompanyid = crm.CompanyID; List <int> crmids = mergecompany.ids.Where(w => w != maincrmid).ToList(); List <Category> othercates = new List <Category>(); //crm.Company.Leads.AddRange(otherleads); foreach (int i in crmids) { CompanyRelationship othercrm = CH.GetDataById <CompanyRelationship>(i); othercates.AddRange(othercrm.Categorys); } crm.Categorys.AddRange(othercates); CH.Edit <CompanyRelationship>(crm); List <int> oldcompanyids = new List <int>(); foreach (int i in crmids) { CompanyRelationship othercrm = CH.GetDataById <CompanyRelationship>(i); othercrm.Deleted = true; CH.Edit <CompanyRelationship>(othercrm); //判断是否有其他crm指向次公司 var hasothercrm = CH.DB.CompanyRelationships.Any(w => w.CompanyID == othercrm.CompanyID && !crmids.Contains(w.ID)); if (!hasothercrm) { Company com = CH.GetDataById <Company>(othercrm.CompanyID); com.Deleted = true; CH.Edit <Company>(com); oldcompanyids.Add((int)othercrm.CompanyID); } } CompanyMergeTrack _track = new CompanyMergeTrack(); _track.TableName = "Company"; _track.OldID = maincompanyid.ToString(); _track.NewID = string.Join(";", oldcompanyids.ToArray()); CH.Create <CompanyMergeTrack>(_track); _track = new CompanyMergeTrack(); _track.TableName = "CompanyRelationship"; _track.OldID = maincrmid.ToString(); _track.NewID = string.Join(";", crmids.ToArray()); CH.Create <CompanyMergeTrack>(_track); List <int> companyids = CH.DB.CompanyRelationships.Where(w => crmids.Contains((int)w.ID)).Select(w => (int)w.CompanyID).ToList(); List <Lead> otherleads = CH.DB.Leads.Where(w => companyids.Contains((int)w.CompanyID)).ToList(); List <int> oldleadids = new List <int>(); List <int> newleadids = new List <int>(); List <int> oldcallids = new List <int>(); List <int> newcallids = new List <int>(); foreach (Lead lead in otherleads) { oldleadids.Add(lead.ID); lead.Deleted = true; CH.Edit <Lead>(lead); int leadid = lead.ID; lead.CompanyID = crm.Company.ID; lead.Deleted = false; CH.DB.Set <Lead>().Add(lead); CH.DB.SaveChanges(); //CH.Create<Lead>(lead); newleadids.Add(lead.ID); List <LeadCall> othercalls = CH.DB.LeadCalls.Where(w => w.LeadID == leadid).ToList(); foreach (LeadCall call in othercalls) { oldcallids.Add(call.ID); call.Deleted = true; CH.Edit <LeadCall>(call); call.LeadID = lead.ID; call.CompanyRelationshipID = maincrmid; call.Deleted = false; CH.Create <LeadCall>(call); newcallids.Add(call.ID); } } if (otherleads.Count > 0) { _track = new CompanyMergeTrack(); _track.TableName = "Lead"; _track.OldID = string.Join(";", oldleadids.ToArray()); _track.NewID = string.Join(";", newleadids.ToArray()); CH.Create <CompanyMergeTrack>(_track); } if (oldcallids.Count > 0) { _track = new CompanyMergeTrack(); _track.TableName = "LeadCall"; _track.OldID = string.Join(";", oldcallids.ToArray()); _track.NewID = string.Join(";", newcallids.ToArray()); CH.Create <CompanyMergeTrack>(_track); } List <Deal> otherdeals = CH.DB.Deals.Where(w => crmids.Contains((int)w.CompanyRelationshipID)).ToList(); List <int> newdealids = new List <int>(); foreach (Deal deal in otherdeals) { deal.Deleted = true; CH.Edit <Deal>(deal); deal.CompanyRelationshipID = maincrmid; deal.Deleted = false; CH.Create <Deal>(deal); newdealids.Add(deal.ID); } if (otherdeals.Count > 0) { _track = new CompanyMergeTrack(); _track.TableName = "Deal"; _track.OldID = string.Join(";", otherdeals.Select(w => w.ID).ToArray()); _track.NewID = string.Join(";", newdealids.ToArray()); CH.Create <CompanyMergeTrack>(_track); } List <Comment> othercomments = CH.DB.Comments.Where(w => crmids.Contains((int)w.CompanyRelationshipID)).ToList(); List <int> newcommentids = new List <int>(); foreach (Comment comment in othercomments) { comment.Deleted = true; CH.Edit <Comment>(comment); comment.CompanyRelationshipID = maincrmid; comment.Deleted = false; CH.Create <Comment>(comment); newcommentids.Add(comment.ID); } if (othercomments.Count > 0) { _track = new CompanyMergeTrack(); _track.TableName = "Comment"; _track.OldID = string.Join(";", othercomments.Select(w => w.ID).ToArray()); _track.NewID = string.Join(";", newcommentids.ToArray()); CH.Create <CompanyMergeTrack>(_track); } return(Json(new { crmid = crm.ID })); }
public ActionResult MergeLead(AjaxMergeLead mergelead) { int mainleadid = mergelead.lead.LeadId; Lead lead = CH.GetDataById <Lead>(mainleadid); lead.Name_CH = mergelead.lead.Name_CN == null?mergelead.lead.Name_CN:mergelead.lead.Name_CN.Trim(); lead.Name_EN = mergelead.lead.Name_EN == null?mergelead.lead.Name_EN:mergelead.lead.Name_EN.Trim(); lead.Gender = mergelead.lead.Gender; lead.Title = mergelead.lead.Title == null?mergelead.lead.Title:mergelead.lead.Title.Trim(); lead.Address = mergelead.lead.Address == null?mergelead.lead.Address:mergelead.lead.Address.Trim(); lead.Birthday = mergelead.lead.Birthday; lead.Contact = mergelead.lead.Telephone == null?mergelead.lead.Telephone:mergelead.lead.Telephone.Trim(); lead.Department = mergelead.lead.Department; lead.Description = mergelead.lead.Desc; lead.EMail = mergelead.lead.WorkingEmail; lead.Fax = mergelead.lead.Fax; lead.Gender = mergelead.lead.Gender; lead.Mobile = mergelead.lead.CellPhone == null?mergelead.lead.CellPhone:mergelead.lead.CellPhone.Trim(); lead.WeiBo = mergelead.lead.WeiBo; lead.WeiXin = mergelead.lead.WeiXin; lead.LinkIn = mergelead.lead.LinkIn; lead.FaceBook = mergelead.lead.FaceBook; lead.Blog = mergelead.lead.Blog; lead.MarkForDelete = false; lead.DistrictNumberID = mergelead.lead.DistrictNumberId; lead.PersonalEmailAddress = mergelead.lead.PersonelEmail; lead.PersonalPhone = mergelead.lead.PersonalPhone; lead.PersonalCellPhone = mergelead.lead.PersonalCellPhone; lead.PersonalFax = mergelead.lead.PersonalFax; lead.Comment = mergelead.lead.Comment; lead.QQ = mergelead.lead.QQ; lead.Twitter = mergelead.lead.Twitter; lead.Branch = mergelead.lead.Branch; lead.ZIP = mergelead.lead.Zip; if (mergelead.lead.leadRole != null) { foreach (string leadrole in mergelead.lead.leadRole) { lead.LeadRoles += leadrole + ";"; } } List <int> otherleads = mergelead.ids.Where(w => w != mainleadid).ToList(); CH.Edit <Lead>(lead); //foreach (int i in leadids) //{ // Lead otherlead = CH.GetDataById<Lead>(i); // otherlead.Deleted = true; // CH.Edit<Lead>(otherlead); //} //CompanyMergeTrack _track = new CompanyMergeTrack(); //_track.TableName = "Lead"; //_track.OldID = mainleadid.ToString(); //_track.NewID = string.Join(";", leadids.ToArray()); //CH.Create<CompanyMergeTrack>(_track); List <int> oldcallids = new List <int>(); List <int> newcallids = new List <int>(); foreach (int i in otherleads) { Lead otherlead = CH.GetDataById <Lead>(i); otherlead.Deleted = true; CH.Edit <Lead>(otherlead); List <LeadCall> othercalls = CH.DB.LeadCalls.Where(w => w.LeadID == otherlead.ID).ToList(); foreach (LeadCall call in othercalls) { oldcallids.Add(call.ID); call.Deleted = true; CH.Edit <LeadCall>(call); call.LeadID = mainleadid; call.Deleted = false; CH.Create <LeadCall>(call); newcallids.Add(call.ID); } } CompanyMergeTrack _track = new CompanyMergeTrack(); if (otherleads.Count > 0) { _track.TableName = "Lead"; _track.OldID = mainleadid.ToString(); _track.NewID = string.Join(";", otherleads.ToArray()); CH.Create <CompanyMergeTrack>(_track); } if (oldcallids.Count > 0) { _track = new CompanyMergeTrack(); _track.TableName = "LeadCall"; _track.OldID = string.Join(";", oldcallids.ToArray()); _track.NewID = string.Join(";", newcallids.ToArray()); CH.Create <CompanyMergeTrack>(_track); } return(Json(new { leadid = mainleadid })); }