/// <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>
    /// Converts the lead to new account and contact.
    /// </summary>
    /// <param name="lead">The lead.</param>
    /// <param name="createOpportunity">if set to <c>true</c> [create opportunity].</param>
    /// <param name="options">The options.</param>
    private void ConvertLeadToNewAccountAndContact(ILead lead, bool createOpportunity, string options)
    {
        if (lead.LegalName != null)
        {
            string qry = "select LegalCompanyName from LegalMaster where LegalCompanyName ='" + lead.LegalName + "'";
            Sage.Platform.Data.IDataService service1 = Sage.Platform.Application.ApplicationContext.Current.Services.Get<Sage.Platform.Data.IDataService>();
            System.Data.OleDb.OleDbConnection conObj = new System.Data.OleDb.OleDbConnection(service1.GetConnectionString());
            System.Data.OleDb.OleDbDataAdapter dataAdapterObj = new System.Data.OleDb.OleDbDataAdapter(qry, conObj);
            System.Data.DataTable dt = new System.Data.DataTable();
            dataAdapterObj.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                lblmsg.Text = lead.LegalName + ": legal Name is already exists";
                return;
            }
        }
        //if (ddLSalesProcess.SelectedIndex > 0 || chkCreateOpportunity.Checked == false)
        //{
            var keyGen = new SalesLogixEntityKeyGenerator();
            string key = keyGen.GenerateIds(typeof(IContact), 1).FirstOrDefault();
            IContact contact = EntityFactory.Create<IContact>();
            ((IAssignableId)contact).Id = key;
            IAccount account = EntityFactory.Create<IAccount>();
            account.Type = "LEAD";
            lead.ConvertLeadToContact(contact, account, options);
            lead.ConvertLeadToAccount(account);
            lead.ConvertLeadAddressToAccountAddress(account);
            lead.ConvertLeadAddressToContactAddress(contact);
            contact.SaveContactAccount(account);
            IOpportunity opportunity = CreateOpportunity(createOpportunity, contact, lead);
            IUser usr = lead.AccountManager;
            IOwner own = lead.Owner;
            if (lkpBranchManager.LookupResultValue != null)
            {
                usr = (IUser)lkpBranchManager.LookupResultValue;//Sage.Platform.EntityFactory.GetById<IUser>(lkpBranchManager.LookupResultValue.ToString());

                Sage.Platform.Data.IDataService service1 = Sage.Platform.Application.ApplicationContext.Current.Services.Get<Sage.Platform.Data.IDataService>();
                System.Data.OleDb.OleDbConnection conObj = new System.Data.OleDb.OleDbConnection(service1.GetConnectionString());
                System.Data.OleDb.OleDbDataAdapter dataAdapterObj3 = new System.Data.OleDb.OleDbDataAdapter("Select Optionvalue as DEFAULTSECCODEID from UserOptions where userid = '" + usr.Id.ToString() + "' and name ='InsertSecCodeID'", conObj);
                System.Data.DataTable dt3 = new System.Data.DataTable();
                dataAdapterObj3.Fill(dt3);
                if (dt3.Rows.Count > 0)
                {
                    Sage.Entity.Interfaces.IOwner objowner2 = Sage.Platform.EntityFactory.GetById<Sage.Entity.Interfaces.IOwner>((object)dt3.Rows[0][0].ToString());
                    own = objowner2;
                }
            }
            AddAttachmentsToLead(lead, account, contact, opportunity);
            lead.AddHistoryAndQualificationRecords(contact, account, opportunity, false);
            lead.AddActivities(contact, account, opportunity);
            if(chkCreateOpportunity.Checked == true)
                account.Type = "Prospect";
            else
                account.Type = "LEAD";
            account.LegalName = lead.LegalName;

            Sage.Platform.Data.IDataService service2 = Sage.Platform.Application.ApplicationContext.Current.Services.Get<Sage.Platform.Data.IDataService>();
            System.Data.OleDb.OleDbConnection conOb2 = new System.Data.OleDb.OleDbConnection(service2.GetConnectionString());
            System.Data.OleDb.OleDbDataAdapter dataAdapterObj1 = new System.Data.OleDb.OleDbDataAdapter("Select INDSGMSTID From INDSGMST where CINDSGDESC = '" +lead.Industry+"' and CMKTSGDESC = '" +lead.MKTSegment +"'", conOb2);
            System.Data.DataTable dt1 = new System.Data.DataTable();
            dataAdapterObj1.Fill(dt1);
            if (dt1.Rows.Count > 0)
            {
                account.SegmentmstID = dt1.Rows[0][0].ToString();
            }
            //account.Industry = lead.Industry;
            //account.MktSegment = lead.MKTSegment;

            account.AccountManager = usr;
            account.Owner = own;
            contact.Owner = own;
            contact.AccountManager = usr;
            account.Status = "Active";
            contact.Save();
            account.Save();

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

            ILeadHistory leadHistory = EntityFactory.GetById<ILeadHistory>(lead.SaveLeadHistory());
            if (leadHistory != null)
            {
                leadHistory.ContactId = contact.Id.ToString();
                leadHistory.AccountId = account.Id.ToString();
                leadHistory.Save();
            }
            //lead.Delete();
            Sage.Entity.Interfaces.IOwner objowner = Sage.Platform.EntityFactory.GetById<Sage.Entity.Interfaces.IOwner>((object)"SYST00000002");
            lead.Owner = objowner;
            lead.Status = "Converted";
            lead.Save();
            string url;
            if (opportunity != null)
            {
                opportunity.Status = "Active";
                opportunity.BusinessPotential = lead.BussinessPortential;
                opportunity.AccountManager = usr;
                opportunity.Owner = own;
                opportunity.Save();
                url = string.Format("Opportunity.aspx?entityid={0}", opportunity.Id);
            }
            else
                url = string.Format("Contact.aspx?entityId={0}", contact.Id);
            cmdConvert.Click += DialogService.CloseEventHappened;
            //Page.ClientScript.RegisterClientScriptBlock(GetType(), "sas", "<script>window.close();if (window.opener && !window.opener.closed) { window.opener.location='" + url + "'; }</script>", false);
            Response.Redirect(
                opportunity != null
                    ? string.Format("Opportunity.aspx?entityid={0}", opportunity.Id)
                    : string.Format("Contact.aspx?entityId={0}", contact.Id), false);
        /*}
        else
        {
            lblmsg.Text = "Please Select SalesProcess,Then Continue Convert Opportunity";
            //throw new Sage.Platform.Application.ValidationException("The call to LeadSearchAndConvert.cmdConvert_Click() failed");
        }*/
    }
    /// <summary>
    /// Converts the lead to new account and contact.
    /// </summary>
    /// <param name="lead">The lead.</param>
    /// <param name="createOpportunity">if set to <c>true</c> [create opportunity].</param>
    /// <param name="options">The options.</param>
    private void ConvertLeadToNewAccountAndContact(ILead lead, bool createOpportunity, string options)
    {
        var keyGen = new SalesLogixEntityKeyGenerator();
        string key = keyGen.GenerateIds(typeof(IContact), 1).FirstOrDefault();
        IContact contact = EntityFactory.Create<IContact>();
        ((IAssignableId)contact).Id = key;
        IAccount account = EntityFactory.Create<IAccount>();

        lead.ConvertLeadToContact(contact, account, options);
        lead.ConvertLeadToAccount(account);
        lead.ConvertLeadAddressToAccountAddress(account);
        lead.ConvertLeadAddressToContactAddress(contact);
        contact.SaveContactAccount(account);
        IOpportunity opportunity = CreateOpportunity(createOpportunity, contact, lead);

        AddAttachmentsToLead(lead, account, contact, opportunity);
        lead.AddHistoryAndQualificationRecords(contact, account, opportunity, false);
        lead.AddActivities(contact, account, opportunity);

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

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

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