/// <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");
        }*/
    }
    protected void btnSaveHistory_ClickAction(object sender, EventArgs e)
    {
        ILead CurrentLead = this.BindingSource.Current as ILead;

        //TAC Code Here to Create the Linked Activity.
        // Create Activity Record
        Sage.Entity.Interfaces.IHistory History = Sage.Platform.EntityFactory.Create <Sage.Entity.Interfaces.IHistory>();
        //History.AccountId = oppfulfiltask.Opportunity.Account.Id.ToString();
        //History.AccountName = oppfulfiltask.Opportunity.Account.AccountName;
        //History.OpportunityId = oppfulfiltask.Opportunity.Id.ToString();
        //History.OpportunityName = oppfulfiltask.Opportunity.Description;
        //todo.ContactId = histContactID;
        //todo.ContactName = histContactName;
        History.LeadId   = CurrentLead.Id.ToString();
        History.LeadName = CurrentLead.LeadNameFirstLast;
        History.Type     = HistoryType.atPhoneCall;
        //todo.Category = histCategory;
        // get the current user as a User

        Sage.SalesLogix.Security.SLXUserService usersvc = (Sage.SalesLogix.Security.SLXUserService)Sage.Platform.Application.ApplicationContext.Current.Services.Get <Sage.Platform.Security.IUserService>();
        Sage.Entity.Interfaces.IUser            user    = usersvc.GetUser();

        History.UserId = user.Id.ToString();

        History.Duration      = 5;
        History.StartDate     = System.DateTime.UtcNow.AddMinutes(-5);
        History.OriginalDate  = System.DateTime.UtcNow.AddMinutes(-5);
        History.CompletedDate = System.DateTime.UtcNow;
        History.CompletedUser = user.Id.ToString();
        History.Description   = Left(Description.PickListValue, 64);

        History.LongNotes  = Notes.Text;
        History.Notes      = Left(Notes.Text, 255);
        History.Timeless   = false;
        History.Result     = Left(Result.PickListValue, 64);
        History.ResultCode = "COMP";



        try
        {
            History.Save();

            //ListBox lbFollowUp = FindCompActControl("FollowUp") as ListBox;
            //if (lbFollowUp == null) return false;
            //CheckBox cxCarryOverNotes = FindCompActControl("CarryOverNotes") as CheckBox;
            //if (cxCarryOverNotes == null) return false;
            //CheckBox cxCarryOverAttachments = FindCompActControl("CarryOverAttachments") as CheckBox;
            //if (cxCarryOverAttachments == null) return false;
            if (CurrentLead.FirstName == null && CurrentLead.LastName == null)
            {
                CurrentLead.FirstName = "No";
                CurrentLead.LastName  = "Name";
            }
            CurrentLead.CfxLastCallResult = Left(Result.PickListValue, 64);
            CurrentLead.ModifyUser        = user.Id.ToString(); // Force Modify User and Modify Date to be set
            CurrentLead.ModifyDate        = DateTime.UtcNow;
            CurrentLead.ValidateLead();
            CurrentLead.Save();
            //Refresh
            if (this.PageWorkItem != null)
            {
                Sage.Platform.WebPortal.Services.IPanelRefreshService refresher = PageWorkItem.Services.Get <Sage.Platform.WebPortal.Services.IPanelRefreshService>();
                if (refresher != null)
                {
                    refresher.RefreshAll();
                }
                else
                {
                    Response.Redirect(Request.Url.ToString());
                }
            }

            if (Followup.Checked)
            {
                Dictionary <string, string> args = new Dictionary <string, string>();
                args.Add("type", "atPhoneCall");

                //if (cxCarryOverNotes.Checked || cxCarryOverAttachments.Checked)
                //{
                args.Add("historyid", History.Id.ToString());
                //}
                //if (cxCarryOverNotes.Checkeod)
                //{
                args.Add("carryovernotes", "true");
                //}
                //if (cxCarryOverAttachments.Checked)
                //{
                //    args.Add("carryoverattachments", "true");
                //}
                args.Add("aid", History.AccountId);
                args.Add("cid", History.ContactId);
                args.Add("oid", History.OpportunityId);
                args.Add("tid", History.TicketId);
                args.Add("lid", History.LeadId);
                args.Add("leadname", History.LeadName);
                args.Add("description", History.Description);

                // if we're in batch mode (multiple complete from ActivityReminders)
                // pass that fact on to ScheduleActivity, so it can link to next activity in batch


                Link.ScheduleActivity(args);
            }
            //===================================================
            // Initialize
            //===================================================
            Result.PickListValue      = String.Empty;
            Description.PickListValue = String.Empty;
            Notes.Text       = String.Empty;
            Followup.Checked = false;
        }
        catch (Exception)
        {
            //Exception But Continue
        }
    }