Exemplo n.º 1
0
        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 }));
        }
Exemplo n.º 2
0
        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 }));
        }