Exemplo n.º 1
0
    /// <summary>
    /// Adds the contact to account.
    /// </summary>
    /// <param name="sourceLead">The source lead.</param>
    private void AddContactToAccount(ILead sourceLead, string accountID)
    {
        if (accountID != null)
        {
            IList <IAccount> selectedAccount = EntityFactory.GetRepository <IAccount>().FindByProperty("Id", accountID);
            if (selectedAccount != null)
            {
                foreach (IAccount account in selectedAccount)
                {
                    IContact newContact = EntityFactory.Create <IContact>();

                    sourceLead.ConvertLeadToContact(newContact, account, "Add Contact to this Account");

                    sourceLead.ConvertLeadAddressToContactAddress(newContact);
                    sourceLead.ConvertLeadAddressToAccountAddress(account);

                    sourceLead.MergeLeadWithAccount(account, "ACCOUNTWINS", newContact);

                    account.Save();

                    newContact.Save();

                    Response.Redirect(string.Format("Contact.aspx?entityId={0}", (newContact.Id)));
                }
            }
        }
    }
    protected void btnConvert_Click(object sender, EventArgs e)
    {
        IContact            newContact        = EntityFactory.Create <IContact>();
        ILeadHistory        newHistory        = EntityFactory.Create <ILeadHistory>();
        ILeadAddressHistory newAddressHistory = EntityFactory.Create <ILeadAddressHistory>();

        newAddressHistory.LeadHistory = newHistory;
        newHistory.Addresses.Add(newAddressHistory);
        ILead curLead = BindingSource.Current as ILead;

        if (curLead == null)
        {
            return;
        }
        accountID = ((IAccount)dtsAccounts.Current).Id.ToString();
        if (accountID != null)
        {
            var account = EntityFactory.GetById <IAccount>(accountID);
            if (account != null)
            {
                curLead.ConvertLeadToContact(newContact, account,
                                             GetLocalResourceObject("chkAddContacts.Text").ToString());
                curLead.ConvertLeadAddressToContactAddress(newContact);
                curLead.ConvertLeadAddressToAccountAddress(account);
                curLead.MergeLeadWithAccount(account,
                                             GetLocalResourceObject("ExistingAccountwins.Text").ToString(),
                                             newContact);
                account.Save();
                Response.Redirect(string.Format("Contact.aspx?entityId={0}", (newContact.Id)));
            }
        }
    }
 /// <summary>
 /// Adds the contact to account.
 /// </summary>
 /// <param name="sourceLead">The source lead.</param>
 /// <param name="accountID">The account ID.</param>
 private void AddContactToAccount(ILead sourceLead, string accountID)
 {
     if (accountID != null)
     {
         var account = EntityFactory.GetById <IAccount>(accountID);
         if (account != null)
         {
             IContact newContact = EntityFactory.Create <IContact>();
             sourceLead.ConvertLeadToContact(newContact, account, "Add Contact to this Account");
             sourceLead.ConvertLeadAddressToContactAddress(newContact);
             sourceLead.ConvertLeadAddressToAccountAddress(account);
             sourceLead.MergeLeadWithAccount(account, "ACCOUNTWINS", newContact);
             account.Contacts.Add(newContact);
             account.Save();
             Response.Redirect(String.Format("Contact.aspx?entityId={0}", (newContact.Id)));
         }
     }
 }
    /// <summary>
    /// Converts the lead to contact.
    /// </summary>
    /// <param name="sourceLead">The source lead.</param>
    /// <param name="accountId">The account ID.</param>
    /// <param name="createOpportunity">if set to <c>true</c> [create opportunity].</param>
    /// <param name="mergeRule">The merge rule.</param>
    private void ConvertLeadToContact(ILead sourceLead, string accountId, bool createOpportunity, string mergeRule)
    {
        if (accountId != null)
        {
            IAccount account = EntityFactory.GetById<IAccount>(accountId);
            if (account != null)
            {
                var keyGen = new SalesLogixEntityKeyGenerator();
                string key = keyGen.GenerateIds(typeof(IContact), 1).FirstOrDefault();
                IContact contact = EntityFactory.Create<IContact>();
                ((IAssignableId)contact).Id = key;
                string leadHistoryId = sourceLead.SaveLeadHistory();
                sourceLead.ConvertLeadToContact(contact, account, "Add Contact to this Account");

                if (mergeRule.ToUpper().Equals("LEADWINS"))
                {
                    sourceLead.ConvertLeadAddressToContactAddress(contact);
                }
                else
                {
                    contact.Address.Address1 = account.Address.Address1;
                    contact.Address.Address2 = account.Address.Address2;
                    contact.Address.Address3 = account.Address.Address3;
                    contact.Address.Address4 = account.Address.Address4;
                    contact.Address.City = account.Address.City;
                    contact.Address.Country = account.Address.Country;
                    contact.Address.County = account.Address.County;
                    contact.Address.Description = account.Address.Description;
                    contact.Address.PostalCode = account.Address.PostalCode;
                    contact.Address.Salutation = account.Address.Salutation;
                    contact.Address.State = account.Address.State;
                    contact.Address.TimeZone = account.Address.TimeZone;
                    contact.Address.Type = account.Address.Type;
                    contact.Address.GlobalSyncId = account.Address.GlobalSyncId;
                    contact.Address.AppId = account.Address.AppId;
                    contact.Address.Tick = account.Address.Tick;
                }

                sourceLead.MergeLeadWithAccount(account, mergeRule, contact);
                CreateContactLeadSource(sourceLead, contact);
                account.Save();
                contact.Save();

                IOpportunity opportunity = CreateOpportunity(createOpportunity, contact, sourceLead);

                IList<IAttachment> attachment = EntityFactory.GetRepository<IAttachment>().FindByProperty("LeadId",
                                                                                                          sourceLead.Id.
                                                                                                              ToString());
                foreach (IAttachment attach in attachment)
                    sourceLead.AddAttachmentsContactID(contact, account, null, attach);

                sourceLead.AddHistoryAndQualificationRecords(contact, account, opportunity, false);
                sourceLead.AddActivities(contact, account, opportunity);

                IList<ICampaignTarget> campaignTarget =
                    EntityFactory.GetRepository<ICampaignTarget>().FindByProperty("EntityId", sourceLead.Id.ToString());
                foreach (ICampaignTarget ct in campaignTarget)
                    sourceLead.ChangeCampaignTargetEntityID(contact, ct);

                ILeadHistory leadHistory = EntityFactory.GetById<ILeadHistory>(leadHistoryId);
                if (leadHistory != null)
                {
                    leadHistory.ContactId = contact.Id.ToString();
                    leadHistory.AccountId = account.Id.ToString();
                    leadHistory.Save();
                }
                sourceLead.Delete();
                EntityContext.RemoveEntityHistory(typeof (ILead), sourceLead.Id);

                Response.Redirect(
                    opportunity != null
                        ? string.Format("Opportunity.aspx?entityid={0}", opportunity.Id)
                        : string.Format("Contact.aspx?entityId={0}", contact.Id), false);
            }
        }
    }
    /// <summary>
    /// Adds the contact to account.
    /// </summary>
    /// <param name="sourceLead">The source lead.</param>
    private void AddContactToAccount(ILead sourceLead, string accountID)
    {
        if (accountID != null)
        {
            IList<IAccount> selectedAccount = EntityFactory.GetRepository<IAccount>().FindByProperty("Id", accountID);
            if (selectedAccount != null)
            {
                foreach (IAccount account in selectedAccount)
                {
                    IContact newContact = EntityFactory.Create<IContact>();

                    sourceLead.ConvertLeadToContact(newContact, account, "Add Contact to this Account");

                    sourceLead.ConvertLeadAddressToContactAddress(newContact);
                    sourceLead.ConvertLeadAddressToAccountAddress(account);

                    sourceLead.MergeLeadWithAccount(account, "ACCOUNTWINS", newContact);

                    account.Save();

                    newContact.Save();

                    Response.Redirect(string.Format("Contact.aspx?entityId={0}", (newContact.Id)));
                }
            }
        }
    }
    /// <summary>
    /// Converts the lead to contact.
    /// </summary>
    /// <param name="sourceLead">The source lead.</param>
    /// <param name="accountID">The account ID.</param>
    private void ConvertLeadToContact(ILead sourceLead, string accountID, bool createOpportinity, string mergeRule)
    {
        if (accountID != null)
        {
            IAccount account = EntityFactory.GetById<IAccount>(accountID);
            if (account != null)
            {
                IContact contact = EntityFactory.Create<IContact>();
                IOpportunity opportunity = null;

                ILeadHistory leadHistory = null;
                string leadHistoryId = string.Empty;

                leadHistoryId = sourceLead.SaveLeadHistory();

                sourceLead.ConvertLeadToContact(contact, account, "Add Contact to this Account");

                if (mergeRule.ToUpper().Equals("LEADWINS"))
                {
                    sourceLead.ConvertLeadAddressToContactAddress(contact);
                    //sourceLead.ConvertLeadAddressToAccountAddress(account);
                }
                else
                {

                    contact.Address.Address1 = account.Address.Address1;
                    contact.Address.Address2 = account.Address.Address2;
                    contact.Address.Address3 = account.Address.Address3;
                    contact.Address.Address4 = account.Address.Address4;
                    contact.Address.City = account.Address.City;
                    contact.Address.Country = account.Address.Country;
                    contact.Address.County = account.Address.County;
                    contact.Address.Description = account.Address.Description;
                    contact.Address.PostalCode = account.Address.PostalCode;
                    contact.Address.Salutation = account.Address.Salutation;
                    contact.Address.State = account.Address.State;
                    contact.Address.TimeZone = account.Address.TimeZone;
                    contact.Address.Type = account.Address.Type;
                }

                sourceLead.MergeLeadWithAccount(account, mergeRule, contact);
                account.Save();
                contact.Save();

                if (createOpportinity)
                {
                    opportunity = EntityFactory.Create<IOpportunity>();
                    opportunity.Account = contact.Account;
                    opportunity.Description = string.Format("Opportunity for {0}", sourceLead.LeadNameLastFirst);
                    opportunity.Owner = contact.Account.Owner;
                    opportunity.AccountManager = contact.Account.AccountManager;
                    opportunity.Save();
                }

                IList<IAttachment> attachment = EntityFactory.GetRepository<IAttachment>().FindByProperty("LeadId", sourceLead.Id.ToString());
                foreach (IAttachment attach in attachment)
                    sourceLead.AddAttachmentsContactID(contact, account, null, attach);

                sourceLead.AddHistoryAndQualificationRecords(contact, account, opportunity, false);
                sourceLead.AddActivities(contact, account, opportunity);

                IList<ICampaignTarget> campaignTarget = EntityFactory.GetRepository<ICampaignTarget>().FindByProperty("EntityId", sourceLead.Id.ToString());
                foreach (ICampaignTarget ct in campaignTarget)
                    sourceLead.ChangeCampaignTargetEntityID(contact, ct);

                leadHistory = EntityFactory.GetById<ILeadHistory>(leadHistoryId);
                if (leadHistory != null)
                {
                    leadHistory.ContactId = contact.Id.ToString();
                    leadHistory.AccountId = account.Id.ToString();
                    leadHistory.Save();
                }
                sourceLead.Delete();
                EntityContext.RemoveEntityHistory(typeof(ILead), sourceLead.Id);

                if (opportunity != null)
                {
                    Response.Redirect(string.Format("Opportunity.aspx?entityid={0}", opportunity.Id), false);
                }
                else
                {
                    Response.Redirect(string.Format("Contact.aspx?entityId={0}", contact.Id),false);
                }
            }
        }
    }