/// <summary>
        /// GET INVESTOR ACCOUNT BY INVESTOR ID IN MARKET
        /// </summary>
        /// <param name="InvestorID"></param>
        /// <returns></returns>
        internal string GetInvestorByInvestorID(int InvestorID)
        {
            string Result = string.Empty;
            Business.Investor Investor = new Business.Investor();
            Investor = TradingServer.Facade.FacadeGetInvestorAccountByInvestorID(InvestorID);
            Result = Model.CommandFramework.CommandFrameworkInstance.ExtractInvestorToString(Investor);

            return Result;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="RowNumber"></param>
        /// <returns></returns>
        internal List<Business.Investor> GetInvestorByStartEnd(int RowNumber,int Limit)
        {
            List<Business.Investor> Result = new List<Business.Investor>();
            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(DBConnection.DBConnection.Connection);
            DSTableAdapters.InvestorTableAdapter adap = new DSTableAdapters.InvestorTableAdapter();
            DSTableAdapters.InvestorProfileTableAdapter adapInvestorProfile = new DSTableAdapters.InvestorProfileTableAdapter();
            DS.InvestorDataTable tbInvestor = new DS.InvestorDataTable();
            DS.InvestorProfileDataTable tbInvestorProfile = new DS.InvestorProfileDataTable();

            try
            {
                conn.Open();
                adap.Connection = conn;
                adapInvestorProfile.Connection = conn;
                tbInvestor = adap.GetInvestorByStartEnd(RowNumber, Limit);
                if (tbInvestor != null)
                {
                    int count = tbInvestor.Count;
                    for (int i = 0; i < count; i++)
                    {
                        tbInvestorProfile = adapInvestorProfile.GetInvestorProfileByInvestorID(tbInvestor[i].InvestorID);

                        Business.Investor newInvestor = new Business.Investor();
                        newInvestor.InvestorID = tbInvestor[i].InvestorID;
                        newInvestor.AgentID = tbInvestor[i].AgentID;
                        //Fill Investor Group Instance
                        if (Business.Market.InvestorGroupList != null)
                        {
                            int countInvestorGroup = Business.Market.InvestorGroupList.Count;
                            for (int j = 0; j < countInvestorGroup; j++)
                            {
                                if (Business.Market.InvestorGroupList[j].InvestorGroupID == tbInvestor[i].InvestorGroupID)
                                {
                                    newInvestor.InvestorGroupInstance = Business.Market.InvestorGroupList[j];
                                    break;
                                }
                            }
                        }

                        //newInvestor.InvestorGroupInstance = TradingServer.Facade.FacadeGetInvestorGroupByInvestorGroupID(tbInvestor[i].InvestorGroupID);
                        newInvestor.InvestorStatusID = tbInvestor[i].InvestorStatusID;
                        newInvestor.Balance = tbInvestor[i].Balance;
                        newInvestor.Code = tbInvestor[i].Code;
                        newInvestor.Credit = tbInvestor[i].Credit;
                        newInvestor.IsDisable = tbInvestor[i].IsDisible;
                        newInvestor.TaxRate = tbInvestor[i].TaxRate;
                        newInvestor.Leverage = tbInvestor[i].Leverage;
                        newInvestor.PreviousLedgerBalance = tbInvestor[i].PreviousLedgerBalance;
                        newInvestor.UserConfig = tbInvestor[i].UserConfig;
                        newInvestor.RefInvestorID = tbInvestor[i].RefInvestorID;

                        //Add Data InvestorProfile To Result
                        if (tbInvestorProfile != null && tbInvestorProfile.Count > 0)
                        {
                            newInvestor.InvestorProfileID = tbInvestorProfile[0].InvestorProfileID;
                            newInvestor.Address = tbInvestorProfile[0].Address;
                            newInvestor.City = tbInvestorProfile[0].City;
                            newInvestor.InvestorComment = tbInvestorProfile[0].Comment;
                            newInvestor.Country = tbInvestorProfile[0].Country;
                            newInvestor.Email = tbInvestorProfile[0].Email;
                            newInvestor.NickName = tbInvestorProfile[0].NickName;
                            newInvestor.Phone = tbInvestorProfile[0].Phone;
                            newInvestor.RegisterDay = tbInvestorProfile[0].RegisterDay;
                            newInvestor.State = tbInvestorProfile[0].State;
                            newInvestor.ZipCode = tbInvestorProfile[0].ZipCode;
                            newInvestor.IDPassport = tbInvestorProfile[0].IDPassport;
                        }

                        Result.Add(newInvestor);
                    }
                }
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                adap.Connection.Close();
                adapInvestorProfile.Connection.Close();
                conn.Close();
            }

            return Result;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="investorID"></param>
        /// <param name="loginKey"></param>
        /// <returns></returns>
        internal bool CheckOnlineInvestor(int investorID, string loginKey)
        {
            bool result = false;
            bool isExits = false;
            Business.Investor InstanceInvestor = null;

            if (Business.Market.InvestorList != null)
            {
                int count = Business.Market.InvestorList.Count;
                for (int i = 0; i < count; i++)
                {
                    if (Business.Market.InvestorList[i].InvestorID == investorID)
                    {
                        //save instance investor
                        InstanceInvestor = Business.Market.InvestorList[i];

                        if (Business.Market.InvestorList[i].LoginKey == loginKey)
                        {
                            Business.Investor newInvestor = new Business.Investor();
                            newInvestor.InvestorID = investorID;
                            newInvestor.LastConnectTime = DateTime.Now;
                            newInvestor.numTimeOut = 30;
                            newInvestor.TickInvestor = new List<Business.Tick>();
                            newInvestor.Code = Business.Market.InvestorList[i].Code;
                            newInvestor.IsLogout = false;
                            newInvestor.LoginKey = loginKey;
                            newInvestor.LoginType = TypeLogin.Primary;
                            newInvestor.InvestorGroupInstance = Business.Market.InvestorList[i].InvestorGroupInstance;

                            //set islogout for investor list
                            Business.Market.InvestorList[i].IsLogout = false;

                            if (Business.Market.InvestorList[i].InvestorGroupInstance.IsEnable && !Business.Market.InvestorList[i].IsDisable)
                            {
                                Business.Market.InvestorOnline.Add(newInvestor);
                                TradingServer.Facade.FacadeSendNotifyManagerRequest(1, newInvestor);
                            }

                            isExits = true;
                            result = true;

                            break;
                        }
                    }
                }
            }

            if (!isExits)
            {
                if (InstanceInvestor != null && InstanceInvestor.InvestorID > 0)
                {
                    bool flag = false;
                    if (Business.Market.InvestorOnline != null)
                    {
                        int count = Business.Market.InvestorOnline.Count;
                        for (int i = 0; i < count; i++)
                        {
                            if (Business.Market.InvestorOnline[i].InvestorID == investorID && Business.Market.InvestorOnline[i].LoginKey == loginKey)
                            {
                                flag = true;
                                break;
                            }
                        }
                    }

                    if (!flag)
                    {
                        Business.Investor newInvestor = new Business.Investor();
                        newInvestor.InvestorID = investorID;
                        newInvestor.LastConnectTime = DateTime.Now;
                        newInvestor.numTimeOut = 30;
                        newInvestor.TickInvestor = new List<Business.Tick>();
                        newInvestor.Code = InstanceInvestor.Code;
                        newInvestor.IsLogout = false;
                        newInvestor.LoginKey = loginKey;
                        newInvestor.LoginType = TypeLogin.ReadOnly;
                        newInvestor.InvestorGroupInstance = InstanceInvestor.InvestorGroupInstance;

                        ////set islogout for investor list
                        //Business.Market.InvestorList[i].IsLogout = false;

                        Business.Market.InvestorOnline.Add(newInvestor);
                        TradingServer.Facade.FacadeSendNotifyManagerRequest(1, newInvestor);

                        result = true;
                    }
                }
            }

            return result;
        }
        /// <summary>
        /// Get All Investor Profile
        /// </summary>
        /// <returns>List<Business.InvestorProfile</returns>
        internal List<Business.Investor> GetAllInvestorProfile()
        {
            List<Business.Investor> Result = new List<Business.Investor>();
            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(DBConnection.DBConnection.Connection);
            DSTableAdapters.InvestorProfileTableAdapter adap = new DSTableAdapters.InvestorProfileTableAdapter();
            DS.InvestorProfileDataTable tbInvestorProfile = new DS.InvestorProfileDataTable();

            try
            {
                conn.Open();
                adap.Connection = conn;

                tbInvestorProfile = adap.GetData();
                if (tbInvestorProfile != null)
                {
                    int count = tbInvestorProfile.Count;
                    for (int i = 0; i < count; i++)
                    {
                        Business.Investor newInvestorProfile = new Business.Investor();
                        newInvestorProfile.InvestorID = tbInvestorProfile[i].InvestorID;
                        newInvestorProfile.Address = tbInvestorProfile[i].Address;
                        newInvestorProfile.Phone = tbInvestorProfile[i].Phone;
                        newInvestorProfile.City = tbInvestorProfile[i].City;
                        newInvestorProfile.Country = tbInvestorProfile[i].Country;
                        newInvestorProfile.Email = tbInvestorProfile[i].Email;
                        newInvestorProfile.ZipCode = tbInvestorProfile[i].ZipCode;
                        newInvestorProfile.RegisterDay = tbInvestorProfile[i].RegisterDay;
                        newInvestorProfile.InvestorComment = tbInvestorProfile[i].Comment;
                        newInvestorProfile.State = tbInvestorProfile[i].State;
                        newInvestorProfile.NickName = tbInvestorProfile[i].NickName;
                        newInvestorProfile.IDPassport = tbInvestorProfile[i].IDPassport;

                        Result.Add(newInvestorProfile);
                    }
                }
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                adap.Connection.Close();
                conn.Close();
            }

            return Result;
        }
        /// <summary>
        /// Get Investor By Investor ID
        /// </summary>
        /// <param name="InvestorID">int InvestorID</param>
        /// <returns>Business.Investor</returns>
        internal Business.Investor GetInvestorByInvestorID(int InvestorID)
        {
            Business.Investor Result = new Business.Investor();
            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(DBConnection.DBConnection.Connection);
            DSTableAdapters.InvestorTableAdapter adap = new DSTableAdapters.InvestorTableAdapter();
            DS.InvestorDataTable tbInvestor = new DS.InvestorDataTable();
            DSTableAdapters.InvestorProfileTableAdapter adapInvestorProfile = new DSTableAdapters.InvestorProfileTableAdapter();
            DS.InvestorProfileDataTable tbInvestorProfile = new DS.InvestorProfileDataTable();

            try
            {
                conn.Open();
                adap.Connection = conn;
                adapInvestorProfile.Connection = conn;
                tbInvestor = adap.GetInvestorByInvestorID(InvestorID);

                if (tbInvestor != null)
                {
                    tbInvestorProfile = adapInvestorProfile.GetInvestorProfileByInvestorID(tbInvestor[0].InvestorID);

                    if (tbInvestorProfile != null)
                    {
                        //Add Data Investor To Result
                        Result.InvestorID = tbInvestor[0].InvestorID;
                        Result.AgentID = tbInvestor[0].AgentID;
                        //Result.InvestorGroupInstance = TradingServer.Facade.FacadeGetInvestorGroupByInvestorGroupID(tbInvestor[0].InvestorGroupID);

                        if (Business.Market.InvestorGroupList != null)
                        {
                            int countInvestorGroup = Business.Market.InvestorGroupList.Count;
                            for (int j = 0; j < countInvestorGroup; j++)
                            {
                                if (Business.Market.InvestorGroupList[j].InvestorGroupID == tbInvestor[0].InvestorGroupID)
                                {
                                    Result.InvestorGroupInstance = Business.Market.InvestorGroupList[j];

                                    break;
                                }
                            }
                        }
                        Result.InvestorStatusID = tbInvestor[0].InvestorStatusID;
                        Result.Balance = tbInvestor[0].Balance;
                        Result.Code = tbInvestor[0].Code;
                        Result.Credit = tbInvestor[0].Credit;
                        Result.IsDisable = tbInvestor[0].IsDisible;
                        Result.TaxRate = tbInvestor[0].TaxRate;
                        Result.Leverage = tbInvestor[0].Leverage;
                        Result.PreviousLedgerBalance = tbInvestor[0].PreviousLedgerBalance;
                        Result.UserConfig = tbInvestor[0].UserConfig;
                        Result.RefInvestorID = tbInvestor[0].RefInvestorID;

                        //Add Data InvestorProfile To Result
                        Result.Address = tbInvestorProfile[0].Address;
                        Result.City = tbInvestorProfile[0].City;
                        Result.InvestorComment = tbInvestorProfile[0].Comment;
                        Result.Country = tbInvestorProfile[0].Country;
                        Result.Email = tbInvestorProfile[0].Email;
                        Result.NickName = tbInvestorProfile[0].NickName;
                        Result.Phone = tbInvestorProfile[0].Phone;
                        Result.RegisterDay = tbInvestorProfile[0].RegisterDay;
                        Result.State = tbInvestorProfile[0].State;
                        Result.ZipCode = tbInvestorProfile[0].ZipCode;
                        Result.IDPassport = tbInvestorProfile[0].IDPassport;
                    }
                }
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                adap.Connection.Close();
                conn.Close();
            }

            return Result;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="code"></param>
        /// <param name="readPwd"></param>
        /// <returns></returns>
        internal Business.Investor LoginWithReadPwd(string code, string readPwd)
        {
            Business.Investor result = new Business.Investor();
            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(DBConnection.DBConnection.Connection);
            DSTableAdapters.InvestorTableAdapter adap = new DSTableAdapters.InvestorTableAdapter();
            DSTableAdapters.InvestorProfileTableAdapter adapInvestorProfile = new DSTableAdapters.InvestorProfileTableAdapter();
            DS.InvestorDataTable tbInvestor = new DS.InvestorDataTable();
            DS.InvestorProfileDataTable tbInvestorProfile = new DS.InvestorProfileDataTable();

            try
            {
                conn.Open();
                adap.Connection = conn;
                adapInvestorProfile.Connection = conn;
                tbInvestor = adap.LoginWithReadPwd(code, readPwd);

                //string hash = Model.ValidateCheck.GetEncodedString(Password);
                if (tbInvestor != null && tbInvestor.Count > 0)
                {
                    //Add Data From Table Investor To Result
                    result.InvestorID = tbInvestor[0].InvestorID;
                    result.AgentID = tbInvestor[0].AgentID;
                    result.Balance = tbInvestor[0].Balance;
                    result.Code = tbInvestor[0].Code;
                    result.Credit = tbInvestor[0].Credit;
                    //Result.IsOnline = true;
                    result.IsDisable = tbInvestor[0].IsDisible;
                    result.ReadOnly = tbInvestor[0].ReadOnly;
                    result.IsReadOnly = true;

                    if (Business.Market.InvestorGroupList != null)
                    {
                        int count = Business.Market.InvestorGroupList.Count;
                        for (int i = 0; i < count; i++)
                        {
                            if (Business.Market.InvestorGroupList[i].InvestorGroupID == tbInvestor[0].InvestorGroupID)
                            {
                                result.InvestorGroupInstance = Business.Market.InvestorGroupList[i];
                                break;
                            }
                        }
                    }

                    result.InvestorStatusID = tbInvestor[0].InvestorStatusID;
                    result.IsDisable = tbInvestor[0].IsDisible;
                    result.Leverage = tbInvestor[0].Leverage;
                    result.PreviousLedgerBalance = tbInvestor[0].PreviousLedgerBalance;

                    tbInvestorProfile = adapInvestorProfile.GetInvestorProfileByInvestorID(tbInvestor[0].InvestorID);
                    if (tbInvestorProfile != null && tbInvestorProfile.Count > 0)
                    {
                        //Add Data From Table InvestorProfile To Result
                        result.Address = tbInvestorProfile[0].Address;
                        result.City = tbInvestorProfile[0].City;
                        result.InvestorComment = tbInvestorProfile[0].Comment;
                        result.Country = tbInvestorProfile[0].Country;
                        result.Email = tbInvestorProfile[0].Email;
                        result.NickName = tbInvestorProfile[0].NickName;
                        result.Phone = tbInvestorProfile[0].Phone;
                        result.RegisterDay = tbInvestorProfile[0].RegisterDay;
                        result.State = tbInvestorProfile[0].State;
                        result.ZipCode = tbInvestorProfile[0].ZipCode;
                        result.InvestorProfileID = tbInvestorProfile[0].InvestorProfileID;
                        result.IDPassport = tbInvestorProfile[0].IDPassport;
                    }
                }
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                adap.Connection.Close();
                conn.Close();
            }

            return result;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="Code"></param>
        /// <returns></returns>
        internal Business.Investor SelectInvestorByCode(string Code)
        {
            Business.Investor newInvestor = new Business.Investor();
            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(DBConnection.DBConnection.Connection);
            DSTableAdapters.InvestorTableAdapter adap = new DSTableAdapters.InvestorTableAdapter();
            DS.InvestorDataTable tbInvestor = new DS.InvestorDataTable();
            DSTableAdapters.InvestorProfileTableAdapter adapProfile = new DSTableAdapters.InvestorProfileTableAdapter();
            DS.InvestorProfileDataTable tbInvestorProfile = new DS.InvestorProfileDataTable();

            try
            {
                conn.Open();
                adap.Connection = conn;
                adapProfile.Connection = conn;
                tbInvestor = adap.SelectInvestorByCode(Code);

                if (tbInvestor != null)
                {
                    tbInvestorProfile = adapProfile.GetInvestorProfileByInvestorID(tbInvestor[0].InvestorID);

                    if (tbInvestorProfile != null && tbInvestorProfile.Count > 0)
                    {
                        newInvestor.InvestorProfileID = tbInvestorProfile[0].InvestorProfileID;
                        newInvestor.Address = tbInvestorProfile[0].Address;
                        newInvestor.Phone = tbInvestorProfile[0].Phone;
                        newInvestor.City = tbInvestorProfile[0].City;
                        newInvestor.Country = tbInvestorProfile[0].Country;
                        newInvestor.Email = tbInvestorProfile[0].Email;
                        newInvestor.ZipCode = tbInvestorProfile[0].ZipCode;
                        newInvestor.RegisterDay = tbInvestorProfile[0].RegisterDay;
                        newInvestor.InvestorComment = tbInvestorProfile[0].Comment;
                        newInvestor.State = tbInvestorProfile[0].State;
                        newInvestor.NickName = tbInvestorProfile[0].NickName;
                        newInvestor.IDPassport = tbInvestorProfile[0].IDPassport;
                    }
                    else
                    {
                        newInvestor.InvestorProfileID = -1;
                        newInvestor.Address = "NaN";
                        newInvestor.Phone = "NaN";
                        newInvestor.City = "NaN";
                        newInvestor.Country = "NaN";
                        newInvestor.Email = "NaN";
                        newInvestor.ZipCode = "NaN";
                        newInvestor.RegisterDay = DateTime.Now;
                        newInvestor.InvestorComment = "NaN";
                        newInvestor.State = "NaN";
                        newInvestor.NickName = "NaN";
                        newInvestor.IDPassport = "";
                    }
                    newInvestor.InvestorID = tbInvestor[0].InvestorID;
                    newInvestor.InvestorStatusID = tbInvestor[0].InvestorStatusID;
                    //newInvestor.InvestorGroupInstance = TradingServer.Facade.FacadeGetInvestorGroupByInvestorGroupID(tbInvestor[0].InvestorGroupID);

                    if (Business.Market.InvestorGroupList != null)
                    {
                        int countInvestorGroup = Business.Market.InvestorGroupList.Count;
                        for (int j = 0; j < countInvestorGroup; j++)
                        {
                            if (Business.Market.InvestorGroupList[j].InvestorGroupID == tbInvestor[0].InvestorGroupID)
                            {
                                newInvestor.InvestorGroupInstance = Business.Market.InvestorGroupList[j];
                                break;
                            }
                        }
                    }

                    newInvestor.AgentID = tbInvestor[0].AgentID;
                    newInvestor.Balance = tbInvestor[0].Balance;
                    newInvestor.Credit = tbInvestor[0].Credit;
                    newInvestor.Code = tbInvestor[0].Code;
                    newInvestor.IsDisable = tbInvestor[0].IsDisible;
                    newInvestor.TaxRate = tbInvestor[0].TaxRate;
                    newInvestor.Leverage = tbInvestor[0].Leverage;
                    newInvestor.AllowChangePwd = tbInvestor[0].AllowChangePwd;
                    newInvestor.ReadOnly = tbInvestor[0].ReadOnly;
                    newInvestor.SendReport = tbInvestor[0].SendReport;
                    newInvestor.PreviousLedgerBalance = tbInvestor[0].PreviousLedgerBalance;
                    newInvestor.PhonePwd = tbInvestor[0].PhonePwd;
                }
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                adap.Connection.Close();
                adapProfile.Connection.Close();
                conn.Close();
            }

            return newInvestor;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="Code"></param>
        /// <param name="Password"></param>
        /// <returns></returns>
        internal Business.Investor LoginAgent(string Code, string Password)
        {
            Business.Investor Result = new Business.Investor();
            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(DBConnection.DBConnection.Connection);
            DSTableAdapters.InvestorTableAdapter adapInvestor = new DSTableAdapters.InvestorTableAdapter();
            DS.InvestorDataTable tbInvestor = new DS.InvestorDataTable();

            try
            {
                conn.Open();
                adapInvestor.Connection = conn;

                //string hash = Model.ValidateCheck.GetEncodedString(Password);
                //string hash = Model.ValidateCheck.Encrypt(Password);

                tbInvestor = adapInvestor.LoginSystem(Code, Password);
                if (tbInvestor != null)
                {
                    //Add Data From Table Investor To Result
                    Result.InvestorID = tbInvestor[0].InvestorID;
                    //Result.AgentID = tbInvestor[0].AgentID;
                    //Result.Balance = tbInvestor[0].Balance;
                    //Result.Code = tbInvestor[0].Code;
                    //Result.Credit = tbInvestor[0].Credit;

                    //if (Business.Market.InvestorGroupList != null)
                    //{
                    //    int count = Business.Market.InvestorGroupList.Count;
                    //    for (int i = 0; i < count; i++)
                    //    {
                    //        if (Business.Market.InvestorGroupList[i].InvestorGroupID == tbInvestor[0].InvestorGroupID)
                    //        {
                    //            Result.InvestorGroupInstance = Business.Market.InvestorGroupList[i];
                    //            break;
                    //        }
                    //    }
                    //}

                    //Result.InvestorStatusID = tbInvestor[0].InvestorStatusID;
                    //Result.IsDisable = tbInvestor[0].IsDisible;
                    //Result.Leverage = tbInvestor[0].Leverage;
                }
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                adapInvestor.Connection.Close();
                conn.Close();
            }

            return Result;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="investorID"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        internal Business.Investor CheckMasterPassword(int investorID, string password)
        {
            Business.Investor result = new Business.Investor();
            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(DBConnection.DBConnection.Connection);
            DSTableAdapters.InvestorTableAdapter adap = new DSTableAdapters.InvestorTableAdapter();
            DS.InvestorDataTable tbInvestor = new DS.InvestorDataTable();

            try
            {
                conn.Open();
                adap.Connection = conn;
                tbInvestor = adap.VerifyMasterPassword(investorID, password);

                //string hash = Model.ValidateCheck.GetEncodedString(Password);
                if (tbInvestor != null && tbInvestor.Count > 0)
                {
                    //Add Data From Table Investor To Result
                    result.InvestorID = tbInvestor[0].InvestorID;
                    result.AgentID = tbInvestor[0].AgentID;
                    result.Balance = tbInvestor[0].Balance;
                    result.Code = tbInvestor[0].Code;
                    result.Credit = tbInvestor[0].Credit;
                    //Result.IsOnline = true;
                    result.IsDisable = tbInvestor[0].IsDisible;
                    result.ReadOnly = true;

                    if (Business.Market.InvestorGroupList != null)
                    {
                        int count = Business.Market.InvestorGroupList.Count;
                        for (int i = 0; i < count; i++)
                        {
                            if (Business.Market.InvestorGroupList[i].InvestorGroupID == tbInvestor[0].InvestorGroupID)
                            {
                                result.InvestorGroupInstance = Business.Market.InvestorGroupList[i];
                                break;
                            }
                        }
                    }

                    result.InvestorStatusID = tbInvestor[0].InvestorStatusID;
                    result.IsDisable = tbInvestor[0].IsDisible;
                    result.Leverage = tbInvestor[0].Leverage;
                    result.PreviousLedgerBalance = tbInvestor[0].PreviousLedgerBalance;
                }
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                adap.Connection.Close();
                conn.Close();
            }

            return result;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="InvestorProfileID"></param>
        /// <returns></returns>
        internal Business.Investor GetInvestorProfileByInvestorProfileID(int InvestorProfileID)
        {
            Business.Investor Result = new Business.Investor();
            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(DBConnection.DBConnection.Connection);
            DSTableAdapters.InvestorProfileTableAdapter adap = new DSTableAdapters.InvestorProfileTableAdapter();
            DS.InvestorProfileDataTable tbInvestorProfile = new DS.InvestorProfileDataTable();

            try
            {
                conn.Open();
                adap.Connection = conn;

                tbInvestorProfile = adap.GetInvestorProfileByInvestorProfileID(InvestorProfileID);

                if (tbInvestorProfile != null)
                {
                    int count = tbInvestorProfile.Count;
                    Result.Address = tbInvestorProfile[0].Address;
                    Result.City = tbInvestorProfile[0].City;
                    Result.InvestorComment = tbInvestorProfile[0].Comment;
                    Result.Country = tbInvestorProfile[0].Country;
                    Result.Email = tbInvestorProfile[0].Email;
                    Result.InvestorID = tbInvestorProfile[0].InvestorID;
                    Result.NickName = tbInvestorProfile[0].NickName;
                    Result.Phone = tbInvestorProfile[0].Phone;
                    Result.RegisterDay = tbInvestorProfile[0].RegisterDay;
                    Result.State = tbInvestorProfile[0].State;
                    Result.ZipCode = tbInvestorProfile[0].ZipCode;
                    Result.IDPassport = tbInvestorProfile[0].IDPassport;
                }
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                adap.Connection.Close();
                conn.Close();
            }

            return Result;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public string GetNextRandomCode()
        {
            while (TradingCalculate.flagRendCode)
            {
                System.Threading.Thread.Sleep(100);
            }

            TradingCalculate.flagRendCode = true;

            lock (Business.Market.syncObject)
            {
                string result = string.Empty;
                if (Business.Market.InvestorList != null)
                {
                    int index = 0;
                    int count = Business.Market.InvestorList.Count;

                    #region SORT INVESTOR
                    for (int i = 0; i < count; i++)
                    {
                        for (int j = i + 1; j < count; j++)
                        {
                            int codeI = 0;
                            int codeJ = 0;
                            bool parseI = int.TryParse(Business.Market.InvestorList[i].Code, out codeI);
                            bool parseJ = int.TryParse(Business.Market.InvestorList[j].Code, out codeJ);

                            if (parseI && parseJ)
                            {
                                if (codeJ < codeI)
                                {
                                    Business.Investor temp = new Business.Investor();
                                    temp = Business.Market.InvestorList[i];
                                    Business.Market.InvestorList[i] = Business.Market.InvestorList[j];
                                    Business.Market.InvestorList[j] = temp;
                                }
                            }
                            else
                            {
                                if (parseJ)
                                {
                                    Business.Investor temp = new Business.Investor();
                                    temp = Business.Market.InvestorList[i];
                                    Business.Market.InvestorList[i] = Business.Market.InvestorList[j];
                                    Business.Market.InvestorList[j] = Business.Market.InvestorList[i];
                                }
                            }
                        }
                    }
                    #endregion

                    #region REND NEXT CODE
                    int countInvestor = Business.Market.InvestorList.Count;
                    if (countInvestor > 1)
                    {
                        #region COUNT INVESTOR LIST > 1
                        for (int j = 0; j < countInvestor; j++)
                        {
                            int codeIndexI = 0;
                            int codeIndexJ = 0;
                            bool parseIndexI = int.TryParse(Business.Market.InvestorList[j].Code, out codeIndexI);
                            int n = j + 1;
                            bool parseIndexJ = false;
                            if (n < countInvestor)
                            {
                                parseIndexJ = int.TryParse(Business.Market.InvestorList[j + 1].Code, out codeIndexJ);
                            }

                            if (parseIndexI && parseIndexJ)
                            {
                                int temp = codeIndexJ - codeIndexI;
                                if (temp > 1)
                                {
                                    int tempResult = codeIndexI + 1;
                                    result = tempResult.ToString();
                                    while (result.Length < 8)
                                    {
                                        result = "0" + result;
                                    }

                                    TradingCalculate.flagRendCode = false;

                                    return result;
                                }
                            }
                            else
                            {
                                if (parseIndexI)
                                {
                                    int tempResult = codeIndexI + 1;
                                    result = tempResult.ToString();
                                    while (result.Length < 8)
                                    {
                                        result = "0" + result;
                                    }

                                    TradingCalculate.flagRendCode = false;

                                    return result;
                                }
                            }

                            index++;
                        }
                        #endregion
                    }
                    else
                    {
                        if (countInvestor == 0) //count investor list == 0
                        {
                            int tempResult = 1;
                            result = tempResult.ToString();

                            while (result.Length < 8)
                            {
                                result = "0" + result;
                            }

                            TradingCalculate.flagRendCode = false;

                            return result;
                        }
                        else//count investor list == 1
                        {
                            #region COUNT INVESTOR LIST = 1
                            int codeI = 0;
                            int codeJ = 0;
                            bool parseJ = false;
                            parseJ = int.TryParse(Business.Market.InvestorList[0].Code, out codeJ);

                            if (parseJ)
                            {
                                int temp = codeJ - codeI;
                                if (temp > 1)
                                {
                                    int tempResult = codeI + 1;
                                    result = tempResult.ToString();
                                    while (result.Length < 8)
                                    {
                                        result = "0" + result;
                                    }

                                    TradingCalculate.flagRendCode = false;

                                    return result;
                                }
                                else
                                {
                                    int tempResult = codeJ + 1;
                                    result = tempResult.ToString();
                                    while (result.Length < 8)
                                    {
                                        result = "0" + result;
                                    }

                                    TradingCalculate.flagRendCode = false;

                                    return result;
                                }
                            }
                            else
                            {
                                int tempResult = codeI + 1;
                                result = tempResult.ToString();
                                while (result.Length < 8)
                                {
                                    result = "0" + result;
                                }

                                TradingCalculate.flagRendCode = false;

                                return result;
                            }
                            #endregion
                        }
                    }
                    #endregion
                }

                return result.ToString();
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="AgentGroupID"></param>
        /// <param name="Name"></param>
        /// <returns></returns>
        internal int AddNewAgent(Business.Agent agent)
        {
            int idAgent = -1;
            System.Data.SqlClient.SqlTransaction trans = null;
            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(DBConnection.DBConnection.Connection);
            DSTableAdapters.AgentTableAdapter adapAgent = new DSTableAdapters.AgentTableAdapter();
            DSTableAdapters.IAgentGroupTableAdapter adapIAgentGroup = new DSTableAdapters.IAgentGroupTableAdapter();
            try
            {
                conn.Open();
                trans                                          = conn.BeginTransaction();
                adapAgent.Connection                           = conn;
                adapAgent.Transaction                          = trans;

                adapIAgentGroup.Connection                     = conn;
                adapIAgentGroup.Transaction                    = trans;

                #region Create Investor
                Business.Investor investor                     = new Business.Investor();
                investor.InvestorStatusID                      = -1;
                investor.InvestorGroupInstance                 = new Business.InvestorGroup();
                investor.InvestorGroupInstance.InvestorGroupID = -1;
                investor.AgentID                               = string.Empty;
                investor.Balance                               = 0;
                investor.Credit                                = 0;
                investor.Code                                  = agent.Code;
                investor.PrimaryPwd                            = agent.Pwd;
                investor.ReadOnlyPwd                           = "";
                investor.PhonePwd                              = "";
                investor.IsDisable                             = true;
                investor.TaxRate                               = 0;
                investor.Leverage                              = 0;
                //Investor Profile
                DateTime registerDay                           = new DateTime();
                investor.Address                               = "";
                investor.Phone                                 = "";
                investor.City                                  = "";
                investor.Country                               = "";
                investor.Email                                 = "";
                investor.ZipCode                               = "";
                investor.RegisterDay                           = registerDay;
                investor.Comment                               = "";
                investor.State                                 = "";
                investor.NickName                              = "";
                investor.AllowChangePwd                        = false;
                investor.ReadOnly                              = false;
                investor.SendReport                            = false;
                #endregion

                int idInvestor = TradingServer.Facade.FacadeAddNewInvestor(investor);
                if (idInvestor < 1)
                {
                    throw new Exception("Data error");
                }

                agent.InvestorID = idInvestor;
                if (agent.AgentGroupID == -1)
                {
                    idAgent = int.Parse(adapAgent.AddNewAgent(null, agent.Name, agent.InvestorID, agent.Comment, agent.IsDisable, agent.IsIpFilter, agent.IpForm, agent.IpTo, agent.GroupCondition).ToString());
                }
                else idAgent = int.Parse(adapAgent.AddNewAgent(agent.AgentGroupID, agent.Name, agent.InvestorID, agent.Comment, agent.IsDisable, agent.IsIpFilter, agent.IpForm, agent.IpTo, agent.GroupCondition).ToString());
                if (idAgent < 1)
                {
                    throw new Exception("Data error");
                }

                List<int> listInvestorGroupIDs = new List<int>();
                listInvestorGroupIDs = agent.MakeListIAgentGroupManager(agent.GroupCondition);
                int count = listInvestorGroupIDs.Count;
                for (int i = 0; i < count; i++)
                {
                    int idIAgentGroup = int.Parse(adapIAgentGroup.AddIAgentGroup(idAgent, listInvestorGroupIDs[i]).ToString());
                    if (idIAgentGroup < 1)
                    {
                        throw new Exception("Data error");
                    }
                }

                trans.Commit();
            }
            catch (Exception ex)
            {
                trans.Rollback();
                idAgent = -1;
            }
            finally
            {
                adapAgent.Connection.Close();
                adapIAgentGroup.Connection.Close();
                conn.Close();
            }

            return idAgent;
        }