/// <summary>
        /// 
        /// </summary>
        /// <param name="Code"></param>
        /// <param name="Pwd"></param>
        /// <returns></returns>
        internal Business.Agent AdminLogin(string Code, string Pwd,string ipAddress)
        {
            Business.Agent agent = new Agent();
            Business.Investor investor = new Investor();
            investor = investor.LoginAgent(Code, Pwd);
            if (investor != null)
            {
                agent = agent.GetAgentByInvestorID(investor.InvestorID);
                if (agent != null)
                {
                    bool checkIp = agent.CheckValidRangeIpAddress(ipAddress);
                    if (checkIp == false)
                    {
                        string content = "'" + Code + "': admin blocked by IP";
                        string comment = "[login admin]";
                        TradingServer.Facade.FacadeAddNewSystemLog(4, content, comment, ipAddress, code);
                        return null;
                    }
                    for (int i = Business.Market.AdminList.Count - 1; i >= 0; i--)
                    {
                        if (Business.Market.AdminList[i].AgentID == agent.AgentID)
                        {
                            if (Business.Market.AdminList[i].IsAdmin && !Business.Market.AdminList[i].IsDisable)
                            {
                                Business.Market.AdminList[i].TimeSync = DateTime.Now;
                                Business.Market.AdminList[i].Ip = ipAddress;
                                return Business.Market.AdminList[i];
                            }
                            else return null;
                        }
                    }
                    agent.Code = Code;
                    agent.TimeSync = DateTime.Now;
                    agent.Ip = ipAddress;
                    agent.IsOnline = true;
                    agent.IAgentGroup = new List<Business.IAgentGroup>();
                    agent.IAgentGroup = Facade.FacadeGetIAgentGroupByAgentID(agent.AgentID);
                    agent.IAgentSecurity = new List<Business.IAgentSecurity>();
                    agent.IAgentSecurity = Facade.FacadeGetIAgentSecurityByAgentID(agent.AgentID);
                    List<Business.Permit> listPermit = new List<Business.Permit>();
                    listPermit = Facade.FacadeGetPermitByAgentID(agent.AgentID);
                    for (int i = listPermit.Count - 1; i >= 0; i--)
                    {
                        #region Enable Role
                        switch (listPermit[i].Role.Code)
                        {
                            case "R01":
                                agent.IsManager = true;
                                break;
                            case "R02":
                                agent.IsSuperviseTrades = true;
                                break;
                            case "R03":
                                agent.IsAdmin = true;
                                break;
                            case "R04":
                                agent.IsAccountant = true;
                                break;
                            case "R05":
                                agent.IsReports = true;
                                break;
                            case "R06":
                                agent.IsRiskManager = true;
                                break;
                            case "R07":
                                agent.IsInternalMail = true;
                                break;
                            case "R08":
                                agent.IsJournals = true;
                                break;
                            case "R09":
                                agent.IsSendNews = true;
                                break;
                            case "R10":
                                agent.IsMarketWatch = true;
                                break;
                            case "R11":
                                agent.IsConections = true;
                                break;
                            case "R12":
                                agent.IsPersonalDetails = true;
                                break;
                            case "R13":
                                agent.IsConfigServerPlugins = true;
                                break;
                            case "R14":
                                agent.IsAutomaticServerReports = true;
                                break;
                            case "R15":
                                agent.IsDealer = true;
                                break;
                            case "R16":
                                agent.IsEditDealer = true;
                                break;
                            case "R17":
                                agent.IsDownloadStatements = true;
                                break;
                        }

                        #endregion
                    }
                    if (agent.IsAdmin && !agent.IsDisable)
                    {
                        agent.AlertQueue = new List<PriceAlert>();
                        agent = this.GetAlertByAgent(agent);
                        Business.Market.AdminList.Add(agent);
                    }
                    else return null;
                }
            }
            return agent;
        }
 internal bool ManagerChangePass(int investorID, string code, string oldPass, string newPass)
 {
     bool result = false;
     Business.Investor investor = new Investor();
     investor = investor.LoginAgent(code, oldPass);
     if (investor != null)
     {
         result = TradingServer.Facade.FacadeUpdatePasswordByCode(code, newPass);
     }
     return result;
 }