Exemple #1
0
 private HandlerProvider(MqlHandler mqlHandler, HandlerElement handlerElement, ExpertInfo expertInfo)
 {
     this._mqlHandler = mqlHandler;
     this._mqlHandler.CallMqlInternal = new Func <string, IEnumerable <string>, string>(this.OnCallMqlMethod);
     this.HandlerConfiguration        = handlerElement;
     this.ExpertInfo = expertInfo;
 }
Exemple #2
0
        public ExpertInfo InitTerminal(ExpertInfo expert)
        {
            try
            {
                using (var Session = ConnectionHelper.CreateNewSession())
                {
                    var accNumber = long.Parse(expert.Account);
                    var terminal  = data.getTerminalByNumber(Session, accNumber);
                    if (terminal == null)
                    {
                        var msg = $"Unknown AccountNumber {expert.Account} ERROR";
                        log.Log(msg);
                        expert.Magic  = accNumber;
                        expert.Reason = msg;
                        return(expert);
                    }

                    SubscribeToSignals(accNumber);
                    log.Info($"Terminal <{accNumber}> Subscribed.");
                }

                return(expert);
            }
            catch (Exception e)
            {
                log.Error(e);
                expert.Magic = 0;
            }

            return(expert);
        }
 public frmGiangVienHeThong(Account oAccount, ExpertInfo oExpertInfo, Classes oClasses) : base(oAccount)
 {
     InitializeComponent();
     mLisExpertInfo = new List <ExpertInfo>();
     mClasses       = oClasses;
     mExpertInfo    = oExpertInfo;
 }
Exemple #4
0
 private HandlerProvider(MqlHandler mqlHandler, HandlerElement handlerElement, ExpertInfo expertInfo)
 {
     _mqlHandler = mqlHandler;
     _mqlHandler.CallMqlInternal = OnCallMqlMethod;
     HandlerConfiguration        = handlerElement;
     ExpertInfo = expertInfo;
 }
Exemple #5
0
        public void DeInitExpert(ExpertInfo expert)
        {
            try
            {
                using (var Session = ConnectionHelper.CreateNewSession())
                {
                    var magicNumber = (int)expert.Magic;
                    var adviser     = data.getAdviserByMagicNumber(Session, magicNumber);
                    if (adviser == null)
                    {
                        log.Error("Expert with MagicNumber=" + magicNumber + " doesn't exist");
                        return;
                    }

                    UnSubscribeFromSignals(magicNumber);

                    adviser.Running = false;

                    data.SaveInsertAdviser(Session, adviser);
                    var infoMsg = $"Expert On <{adviser.Symbol.Name}> Closed";
                    log.Info(infoMsg); // with reason {ReasonToString(expert.Reason)}.
                }
            }
            catch (Exception e)
            {
                log.Error("DeInitExpert: " + e);
            }
        }
Exemple #6
0
 private void frmGiangVienAdd_Load(object sender, EventArgs e)
 {
     actionUpdate.PressUpdate += new EventHandler(actionUpdate_PressUpdate);
     actionUpdate.PressHelp   += new EventHandler(actionUpdate_PressHelp);
     actionUpdate.PressClose  += new EventHandler(actionUpdate_PressClose);
     actionUpdate.PressNew    += new EventHandler(actionUpdate_PressNew);
     //iFlag = 0: Thêm mới; iFlag = 1: Sửa
     Load_lookupEditTrungTam();
     if (iFlag == 0)
     {
         this.Text = "Thêm giáo viên mới";
     }
     else
     {
         ExpertInfo oExpInfo = mExpertInfoBll.getElementById(idGV);
         txtHoten.Text              = oExpInfo.ExpertName;
         txtEmail.Text              = oExpInfo.Email;
         txtDiaChi.Text             = oExpInfo.Address;
         txtMobile.Text             = oExpInfo.Mobile;
         txtMota.Text               = oExpInfo.Description;
         txtNamKinhNghiem.Text      = oExpInfo.YearsExperience.ToString();
         txtNoiDung.Text            = "Không có sơ yếu lý lịch thì điền gì?";
         txtTruongTotNghiep.Text    = oExpInfo.UniversityDegree;
         cboGioiTinh.EditValue      = oExpInfo.sSex;
         dateEditNgaySinh.EditValue = oExpInfo.DateBirthday;
         this.Text = "Sửa thông tin giáo viên " + oExpInfo.ExpertName;
     }
 }
Exemple #7
0
 internal static HandlerProvider GetOrCreate(ExpertInfo expertInfo, HostElement hostElement)
 {
     lock (HandlerProvider._storageLocker)
     {
         if (HandlerProvider._storage.ContainsKey(expertInfo.Discriminator))
         {
             return(HandlerProvider._storage[expertInfo.Discriminator]);
         }
         if (!hostElement.Handlers.ContainsKey(expertInfo.HandlerName))
         {
             throw new HandlerLoadException(expertInfo, "Requested application not found in configuration", (Exception)null);
         }
         HandlerElement local_0 = hostElement.Handlers[expertInfo.HandlerName];
         Assembly       local_1;
         try
         {
             local_1 = Assembly.LoadFile(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + local_0.AssemblyName + ".dll");
         }
         catch (Exception exception_3)
         {
             throw new HandlerLoadException(expertInfo, "Requested assembly not found", exception_3);
         }
         Type local_3;
         try
         {
             local_3 = local_1.GetType(local_0.TypeName);
         }
         catch (Exception exception_2)
         {
             throw new HandlerLoadException(expertInfo, "Requested type not found in assembly.", exception_2);
         }
         MqlHandler local_5;
         try
         {
             local_5 = (MqlHandler)Activator.CreateInstance(local_3);
         }
         catch (Exception exception_1)
         {
             throw new HandlerLoadException(expertInfo, "Can't create intance of expert.", exception_1);
         }
         try
         {
             foreach (ParameterElement item_0 in (ConfigurationElementCollection)local_0.InputParameters)
             {
                 PropertyInfo local_8  = local_5.GetType().GetProperty(item_0.PropertyName);
                 Type         local_9  = local_8.PropertyType;
                 object       local_10 = Convert.ChangeType((object)item_0.PropertyValue, local_9);
                 local_8.SetValue((object)local_5, local_10);
             }
         }
         catch (Exception exception_0)
         {
             throw new HandlerLoadException(expertInfo, "Can't set input parameters for expert", exception_0);
         }
         local_5.Discriminator = expertInfo.Discriminator;
         HandlerProvider local_12 = new HandlerProvider(local_5, local_0, expertInfo);
         HandlerProvider._storage.Add(expertInfo.Discriminator, local_12);
         return(local_12);
     }
 }
Exemple #8
0
        private void LoadSavedOrders(DBAdviser adviser, ref ExpertInfo expert)
        {
            var terminals = Container.Resolve <ITerminalEvents>();
            List <PositionInfo> positions = terminals.GetPositions4Adviser(adviser.Id);

            if (Utils.HasAny(positions))
            {
                expert.Orders = JsonConvert.SerializeObject(positions);
            }
        }
Exemple #9
0
 public void DeInitTerminal(ExpertInfo expert)
 {
     try
     {
         var accNumber = long.Parse(expert.Account);
         UnSubscribeFromSignals(accNumber);
         log.Info($"Terminal: <{accNumber}> UnSubscribed.");
     }
     catch (Exception e)
     {
         log.Error("DeInitTerminal: " + e);
     }
 }
Exemple #10
0
 public string PostExpert(ExpertInfo expert)
 {
     try
     {
         expert.ExpertID = GenExpertID();
         db.ExpertInfo.Add(expert);
         db.SaveChanges();
         return("success");
     }
     catch (Exception ex)
     {
         return("error    " + ex.Message);
     }
 }
Exemple #11
0
        private long GenExpertID()
        {
            Random     rd       = new Random();
            int        r        = rd.Next(1000);
            long       ExpertID = (long)(DateTime.Now.ToUniversalTime() - new DateTime(2018, 3, 24)).TotalMilliseconds + r;
            ExpertInfo tryFind  = db.ExpertInfo.Find(ExpertID);

            while (tryFind != null)
            {
                ExpertID = GenExpertID();
                tryFind  = db.ExpertInfo.Find(ExpertID);
            }
            return(ExpertID);
        }
        public HttpResponseMessage GetExpertInfo()
        {
            Dictionary <string, string> res = new Dictionary <string, string>();
            var cookie = HttpContext.Current.Request.Cookies["account"];

            if (cookie == null)
            {
                res.Add("Message", "error");
                res.Add("Details", "cookie error");
                return(ConvertToJson(res));
            }
            long       userID = long.Parse(HttpContext.Current.Request.Cookies["account"]["userID"]);
            UserExpert ue     = db.UserExpert.FirstOrDefault(UserExpert => UserExpert.UserID == userID);

            if (ue == null)
            {
                res.Add("Message", "error");
                res.Add("Details", "not an expert");
                return(ConvertToJson(res));
            }
            long       expertID = (long)ue.ExpertID;
            ExpertInfo ei       = db.ExpertInfo.Find(expertID);

            res.Add("Message", "success");

            db.Configuration.ProxyCreationEnabled = false;
            JavaScriptSerializer        serializer = new JavaScriptSerializer();
            Dictionary <string, string> data       = new Dictionary <string, string>();

            data.Add("Name", ei.Name);
            data.Add("Workstation", ei.Workstation);
            data.Add("TimesCited", ei.TimesCited.ToString());
            data.Add("Results", ei.Results.ToString());
            data.Add("PUJournals", ei.PUJournals.ToString());
            data.Add("CSCDJournals", ei.CSCDJournals.ToString());
            data.Add("CTJournals", ei.CTJournals.ToString());
            data.Add("EIJournals", ei.EIJournals.ToString());
            data.Add("SCIEJournals", ei.SCIEJournals.ToString());
            data.Add("SSCIJournals", ei.SSCIJournals.ToString());
            data.Add("OtherJournals", ei.OtherJournals.ToString());
            data.Add("ConferencePapers", ei.ConferencePapers.ToString());
            data.Add("Field", ei.Field);
            data.Add("Books", ei.Books.ToString());
            data.Add("Others", ei.Others.ToString());
            string r = serializer.Serialize(data);

            res.Add("Data", r);
            return(ConvertToJson(res));
        }
        private void btnGiangVien_Click(object sender, EventArgs e)
        {
            ExpertInfo          oExpertInfo = new ExpertInfo();
            frmGiangVienHeThong ofrm        = new frmGiangVienHeThong(mAccount, oExpertInfo, mClasses);

            ofrm.ShowDialog();
            if (oExpertInfo.Id > 0 && oExpertInfo.iFlag == -1)
            {
                //MessageBox.Show("- Ex: " + oExpertInfo.Id);
                mClasses.ExpertId = oExpertInfo.Id;
                bool isResult = new ClassesBll(mAccount).UpdateElement(mClasses);
                //if(isResult)
                MessageBox.Show("Bạn đã chọn Chuyên gia thành công",
                                "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Exemple #14
0
        void actionUpdate_PressUpdate(object sender, EventArgs e)
        {
            //Lưu giảng viên:
            ExpertInfo oExpInfo = new ExpertInfo();

            oExpInfo.Id               = idGV;
            oExpInfo.ExpertName       = txtHoten.Text;
            oExpInfo.Email            = txtEmail.Text;
            oExpInfo.Address          = txtDiaChi.Text;
            oExpInfo.Mobile           = txtMobile.Text;
            oExpInfo.Description      = txtMota.Text;
            oExpInfo.YearsExperience  = int.Parse(txtNamKinhNghiem.Text);
            oExpInfo.UniversityDegree = txtTruongTotNghiep.Text;
            oExpInfo.sSex             = cboGioiTinh.EditValue.ToString();
            if (lookupEditTrungTam.EditValue != null)
            {
                oExpInfo.CenterId = (int)lookupEditTrungTam.EditValue;
            }
            else
            {
                oExpInfo.CenterId = 1;
            }
            oExpInfo.CenterId = (int)lookupEditTrungTam.EditValue;
            if (dateEditNgaySinh.EditValue != null)
            {
                oExpInfo.DateBirthday = DateTime.Parse(dateEditNgaySinh.EditValue.ToString());
            }
            oExpInfo.iFlag = iFlag;
            var check = mExpertInfoBll.InsertAndUpdateElement(oExpInfo);

            if ((check) & (iFlag == 0))
            {
                MessageBox.Show("Thêm thành công!");
                this.Close();
            }
            else if (check & iFlag == 1)
            {
                MessageBox.Show("Sửa thành công!");
                this.Close();
            }
            else
            {
                MessageBox.Show("Thao tác không thành công!");
            }
        }
        /// <summary>
        /// 替换字段属性
        /// </summary>
        /// <param name="li"></param>
        /// <returns></returns>
        private List <ExpertInfo> GetPropertiesString(List <Expert> li)
        {
            List <ExpertInfo> infolist = new List <ExpertInfo>();
            ExpertInfo        exptmp;

            foreach (var item in li)
            {
                exptmp                         = new ExpertInfo();
                exptmp.sId                     = item.sId; exptmp.eId = item.eId;
                exptmp.eName                   = item.eName; exptmp.gender = item.gender;
                exptmp.birthDay                = item.birthDay; exptmp.identityNumber = item.identityNumber;
                exptmp.UnitDetailsOne          = item.UnitDetailsOne;
                exptmp.UnitDetailsTwo          = item.UnitDetailsTwo; exptmp.UnitDetailsThree = item.UnitDetailsThree;
                exptmp.field                   = item.field; exptmp.academicTitles = item.academicTitles;
                exptmp.email                   = item.email; exptmp.officePhone = item.officePhone;
                exptmp.cellPhone               = item.cellPhone; exptmp.postalAddress = item.postalAddress;
                exptmp.expertSources           = item.expertSources;
                exptmp.img                     = item.img; exptmp.personalUrl = item.personalUrl;
                exptmp.registrationForm        = item.registrationForm; exptmp.Categories = item.Categories;
                exptmp.appointmentBook         = item.appointmentBook; exptmp.SerialNum = item.SerialNum;
                exptmp.remark                  = item.remark; exptmp.expertIntroduction = item.expertIntroduction;
                exptmp.expertworkingExperience = item.expertworkingExperience; exptmp.expertAchievement = item.expertAchievement;
                exptmp.addTime                 = item.addTime;
                #region 替换字段
                for (int i = 0; i < unitList.Count; i++)
                {
                    if (unitList[i].id == item.unitProperty)
                    {
                        exptmp.unitporetyString = unitList[i].unitProperties;
                    }
                }
                for (int i = 0; i < statusList.Count; i++)
                {
                    if (statusList[i].sid == item.beStatus)
                    {
                        exptmp.bestatusString = statusList[i].beStatus;
                    }
                }
                #endregion
                infolist.Add(exptmp);
                exptmp = null;
            }
            return(infolist);
        }
Exemple #16
0
        public RecommendInfo GetRecommendInfo()
        {
            string        querystring   = "select ApplicationType,UnitRecommend,UnitRecommendOName,ExpertName1,ExpertArea1,ExpertWorkType1,ExpertUnitPosition1,\r\n           ExpertUnit1,ExpertRecommend1, ExpertRecommend1OName,ExpertName2,ExpertArea2,ExpertWorkType2,ExpertUnitPosition2,ExpertUnit2,\r\n            ExpertRecommend2,ExpertRecommend2OName,ExpertName3,ExpertArea3,ExpertWorkType3,ExpertUnitPosition3,ExpertUnit3,ExpertRecommend3,ExpertRecommend3OName from BaseInfor";
            string        text          = "";
            DataTable     data          = base.GetData(querystring, out text);
            RecommendInfo recommendInfo = null;

            if (data != null && data.Rows.Count > 0)
            {
                recommendInfo = new RecommendInfo();
                recommendInfo.ApplicationType            = ((data.Rows[0]["ApplicationType"] == DBNull.Value) ? "单位推荐" : data.Rows[0]["ApplicationType"].ToString());
                recommendInfo.RAttachmentInfo.StoreName  = ((data.Rows[0]["UnitRecommend"] == DBNull.Value) ? "" : data.Rows[0]["UnitRecommend"].ToString());
                recommendInfo.RAttachmentInfo.UploadName = ((data.Rows[0]["UnitRecommendOName"] == DBNull.Value) ? "" : data.Rows[0]["UnitRecommendOName"].ToString());
                ExpertInfo expertInfo = new ExpertInfo();
                expertInfo.ExpertName                 = ((data.Rows[0]["ExpertName1"] == DBNull.Value) ? "" : data.Rows[0]["ExpertName1"].ToString());
                expertInfo.ExpertArea                 = ((data.Rows[0]["ExpertArea1"] == DBNull.Value) ? "" : data.Rows[0]["ExpertArea1"].ToString());
                expertInfo.ExpertWorkType             = ((data.Rows[0]["ExpertWorkType1"] == DBNull.Value) ? "" : data.Rows[0]["ExpertWorkType1"].ToString());
                expertInfo.ExpertUnitPosition         = ((data.Rows[0]["ExpertUnitPosition1"] == DBNull.Value) ? "" : data.Rows[0]["ExpertUnitPosition1"].ToString());
                expertInfo.ExpertUnit                 = ((data.Rows[0]["ExpertUnit1"] == DBNull.Value) ? "" : data.Rows[0]["ExpertUnit1"].ToString());
                expertInfo.EAttachmentInfo.StoreName  = ((data.Rows[0]["ExpertRecommend1"] == DBNull.Value) ? "" : data.Rows[0]["ExpertRecommend1"].ToString());
                expertInfo.EAttachmentInfo.UploadName = ((data.Rows[0]["ExpertRecommend1OName"] == DBNull.Value) ? "" : data.Rows[0]["ExpertRecommend1OName"].ToString());
                recommendInfo.ExperInfoList.Add(expertInfo);
                expertInfo                            = new ExpertInfo();
                expertInfo.ExpertName                 = ((data.Rows[0]["ExpertName2"] == DBNull.Value) ? "" : data.Rows[0]["ExpertName2"].ToString());
                expertInfo.ExpertArea                 = ((data.Rows[0]["ExpertArea2"] == DBNull.Value) ? "" : data.Rows[0]["ExpertArea2"].ToString());
                expertInfo.ExpertWorkType             = ((data.Rows[0]["ExpertWorkType2"] == DBNull.Value) ? "" : data.Rows[0]["ExpertWorkType2"].ToString());
                expertInfo.ExpertUnitPosition         = ((data.Rows[0]["ExpertUnitPosition2"] == DBNull.Value) ? "" : data.Rows[0]["ExpertUnitPosition2"].ToString());
                expertInfo.ExpertUnit                 = ((data.Rows[0]["ExpertUnit2"] == DBNull.Value) ? "" : data.Rows[0]["ExpertUnit2"].ToString());
                expertInfo.EAttachmentInfo.StoreName  = ((data.Rows[0]["ExpertRecommend2"] == DBNull.Value) ? "" : data.Rows[0]["ExpertRecommend2"].ToString());
                expertInfo.EAttachmentInfo.UploadName = ((data.Rows[0]["ExpertRecommend2OName"] == DBNull.Value) ? "" : data.Rows[0]["ExpertRecommend2OName"].ToString());
                recommendInfo.ExperInfoList.Add(expertInfo);
                expertInfo                            = new ExpertInfo();
                expertInfo.ExpertName                 = ((data.Rows[0]["ExpertName3"] == DBNull.Value) ? "" : data.Rows[0]["ExpertName3"].ToString());
                expertInfo.ExpertArea                 = ((data.Rows[0]["ExpertArea3"] == DBNull.Value) ? "" : data.Rows[0]["ExpertArea3"].ToString());
                expertInfo.ExpertWorkType             = ((data.Rows[0]["ExpertWorkType3"] == DBNull.Value) ? "" : data.Rows[0]["ExpertWorkType3"].ToString());
                expertInfo.ExpertUnitPosition         = ((data.Rows[0]["ExpertUnitPosition3"] == DBNull.Value) ? "" : data.Rows[0]["ExpertUnitPosition3"].ToString());
                expertInfo.ExpertUnit                 = ((data.Rows[0]["ExpertUnit3"] == DBNull.Value) ? "" : data.Rows[0]["ExpertUnit3"].ToString());
                expertInfo.EAttachmentInfo.StoreName  = ((data.Rows[0]["ExpertRecommend3"] == DBNull.Value) ? "" : data.Rows[0]["ExpertRecommend3"].ToString());
                expertInfo.EAttachmentInfo.UploadName = ((data.Rows[0]["ExpertRecommend3OName"] == DBNull.Value) ? "" : data.Rows[0]["ExpertRecommend3OName"].ToString());
                recommendInfo.ExperInfoList.Add(expertInfo);
            }
            return(recommendInfo);
        }
        public ExpertInfo Execute(ApplicationUser user)
        {
            var expertInfo = new ExpertInfo
            {
                UserId   = user.Id,
                UserName = user.NameRu,
                IpcCodes = user.Ipcs.Any() ? string.Join(", ", user.Ipcs.Select(i => i.Ipc.Code)) : string.Empty
            };

            var requests = Executor.GetQuery <GetRequestsByUserIdQuery>().Process(q => q.Execute(user.Id));
            var sumCoefficientComplexity = requests.Where(r => r.CoefficientComplexity.HasValue).Sum(r => r.CoefficientComplexity.Value);

            expertInfo.EmploymentIndexExpert             = Math.Round(sumCoefficientComplexity, 3);
            expertInfo.CountRequests                     = requests.Where(r => r.CurrentWorkflow.IsComplete == false).Count();
            expertInfo.CountCompletedRequestsCurrentYear = requests.Where(r => r.CurrentWorkflow.IsComplete == true && r.CurrentWorkflow.DateCreate.Year == DateTime.Now.Year).Count();
            expertInfo.RequestNumbers                    = string.Join(", ", requests.Where(r => string.IsNullOrEmpty(r.RequestNum) == false).Select(r => r.RequestNum));

            return(expertInfo);
        }
        public HttpResponseMessage ModifyExpertInfo(ExpertInfo info)
        {
            Dictionary <string, string> res = new Dictionary <string, string>();
            var cookie = HttpContext.Current.Request.Cookies["account"];

            if (cookie == null)
            {
                res.Add("Message", "error");
                res.Add("Details", "cookie error");
                return(ConvertToJson(res));
            }
            long       userID = long.Parse(HttpContext.Current.Request.Cookies["account"]["userID"]);
            UserExpert ue     = db.UserExpert.FirstOrDefault(UserExpert => UserExpert.UserID == userID);

            if (ue == null)
            {
                res.Add("Message", "error");
                res.Add("Details", "not an expert");
                return(ConvertToJson(res));
            }
            long       expertID = (long)ue.ExpertID;
            ExpertInfo ei       = db.ExpertInfo.Find(expertID);

            if (ei.Name != null)
            {
                ei.Name = info.Name;
            }
            if (ei.Workstation != null)
            {
                ei.Workstation = info.Workstation;
            }
            if (ei.Field != null)
            {
                ei.Field = info.Field;
            }
            db.SaveChanges();
            res.Add("Message", "success");
            return(ConvertToJson(res));
        }
Exemple #19
0
        public ExpertInfo InitExpert(ExpertInfo expert)
        {
            try
            {
                using (var Session = ConnectionHelper.CreateNewSession())
                {
                    var msg       = "";
                    var accNumber = long.Parse(expert.Account);
                    var terminal  = data.getTerminalByNumber(Session, accNumber);
                    if (terminal == null)
                    {
                        msg = $"Unknown AccountNumber {expert.Account}. Please Register Account in DB.";
                        log.Log(msg);
                        expert.Magic  = 0;
                        expert.Reason = msg;
                        return(expert);
                    }

                    var strSymbol = expert.Symbol;
                    if (strSymbol.Contains("_i"))
                    {
                        strSymbol = strSymbol.Substring(0, strSymbol.Length - 2);
                    }
                    var symbol = data.getSymbolByName(strSymbol);
                    if (symbol == null)
                    {
                        msg = $"Unknown Symbol {strSymbol}. Please register Symbol in DB.";
                        log.Log(msg);
                        expert.Reason = msg;
                        return(expert);
                    }

                    var adviser = data.getAdviser(Session, terminal.Id, symbol.Id, expert.EAName);
                    if (adviser == null)
                    {
                        adviser           = new DBAdviser();
                        adviser.Name      = expert.EAName;
                        adviser.Timeframe = expert.ChartTimeFrame;
                        adviser.Retired   = false;
                        var dbt = new DBTerminal();
                        dbt.Id           = terminal.Id;
                        adviser.Terminal = dbt;
                        adviser.Symbol   = symbol;
                    }
                    else
                    {
                        expert.IsMaster = adviser.IsMaster;
                    }

                    adviser.Running = true;
                    if (adviser.Id <= 0)
                    {
                        data.SaveInsertAdviser(Session, adviser);
                    }

                    var dynProps = data.GetPropertiesInstance((short)EntitiesEnum.Adviser, adviser.Id);
                    if (dynProps == null || Utils.HasAny(dynProps.Vals) == false)
                    {
                        expert.Data = "";
                    }
                    else
                    {
                        var res   = JsonConvert.DeserializeObject <Dictionary <string, DynamicProperty> >(dynProps.Vals);
                        var state = DefaultProperties.transformProperties(res);
                        expert.Data = JsonConvert.SerializeObject(state);
                    }
                    LoadSavedOrders(adviser, ref expert);
                    expert.Magic = adviser.Id;
                    SubscribeToSignals(adviser.Id);

                    log.Info($"Expert On <{adviser.Symbol.Name}> On TF=<{expert.ChartTimeFrame}> loaded successfully!");
                }

                return(expert);
            }
            catch (Exception e)
            {
                log.Error(e);
                expert.Magic = 0;
            }

            return(expert);
        }
        public void PostSignal(SignalInfo signal)
        {
            if ((SignalFlags)signal.Flags == SignalFlags.Cluster)
            {
                xtrade.PostSignalTo(signal);
                return;
            }

            switch ((EnumSignals)signal.Id)
            {
            case EnumSignals.SIGNAL_CHECK_HEALTH:
                if (xtrade.IsDebug())
                {
                    log.Info("CheckHealth: " + signal.Flags);
                }
                break;

            case EnumSignals.SIGNAL_DEALS_HISTORY:
            {
                List <DealInfo> deals = null;
                if (signal.Data != null)
                {
                    deals = JsonConvert.DeserializeObject <List <DealInfo> >(signal.Data.ToString());
                }
                else
                {
                    deals = new List <DealInfo>();
                }
                xtrade.SaveDeals(deals);
            }
            break;

            case EnumSignals.SIGNAL_CHECK_BALANCE:
            {
                if (signal.Data == null)
                {
                    break;
                }
                JArray jarray = (JArray)signal.Data;
                if (jarray == null || jarray.Count == 0)
                {
                    break;
                }
                decimal balance = jarray.First.Value <decimal?>("Balance") ?? 0;
                decimal equity  = jarray.First.Value <decimal?>("Equity") ?? 0;
                int     Account = jarray.First.Value <int?>("Account") ?? 0;
                xtrade.UpdateBalance(Account, balance, equity);
            }
            break;

            case EnumSignals.SIGNAL_UPDATE_RATES:
            {
                try {
                    List <RatesInfo> rates = null;
                    if (signal.Data != null)
                    {
                        rates = JsonConvert.DeserializeObject <List <RatesInfo> >(signal.Data.ToString());
                    }
                    if (rates != null)
                    {
                        var    usdbynrateTask = GetBYNRates();
                        double usdbynrate     = usdbynrateTask.Result;
                        if (usdbynrate > 0)
                        {
                            RatesInfo rate = new RatesInfo();
                            rate.Ask    = usdbynrate;
                            rate.Bid    = usdbynrate;
                            rate.Symbol = "USDBYN";
                            rates.Add(rate);
                        }
                    }
                    xtrade.UpdateRates(rates);
                }
                catch (Exception e)
                {
                    log.Info(String.Format($"GetBYNUSDRates Error: {0}", e.ToString()));
                }
            }
            break;

            case EnumSignals.SIGNAL_ACTIVE_ORDERS:
            {
                List <PositionInfo> positions = null;
                if (signal.Data != null)
                {
                    positions = JsonConvert.DeserializeObject <List <PositionInfo> >(signal.Data.ToString());
                }
                else
                {
                    positions = new List <PositionInfo>();
                }
                terminals.UpdatePositions(signal.ObjectId, signal.Value, positions);
            }
            break;

            /*
             * case EnumSignals.SIGNAL_UPDATE_SLTP:
             * {
             *  List<PositionInfo> positions = null;
             *  if (signal.Data != null)
             *      positions = JsonConvert.DeserializeObject<List<PositionInfo>>(signal.Data.ToString());
             *  else
             *      positions = new List<PositionInfo>();
             *  terminals.UpdateSLTP(signal.ObjectId, signal.Value, positions);
             * }
             * break;
             */
            case EnumSignals.SIGNAL_WARN_NEWS:
                break;

            case EnumSignals.SIGNAL_DEINIT_EXPERT:
            {
                ExpertInfo expert = JsonConvert.DeserializeObject <ExpertInfo>(signal.Data.ToString());
                xtrade.DeInitExpert(expert);
            }
            break;

            case EnumSignals.SIGNAL_DEINIT_TERMINAL:
            {
                ExpertInfo expert = JsonConvert.DeserializeObject <ExpertInfo>(signal.Data.ToString());
                xtrade.DeInitTerminal(expert);
            }
            break;

            // case EnumSignals.SIGNAL_SAVE_EXPERT:
            // {
            // deprecated
            //ExpertInfo expert = JsonConvert.DeserializeObject<ExpertInfo>(signal.Data.ToString());
            //if (expert != null)
            //    xtrade.SaveExpert(expert);
            // }
            //     break;
            case EnumSignals.SIGNAL_POST_LOG:
            {
                if (signal.Data == null)
                {
                    break;
                }
                Dictionary <string, string> paramsList = JsonConvert.DeserializeObject <Dictionary <string, string> >(signal.Data.ToString());
                StringBuilder message = new StringBuilder();
                if (paramsList.ContainsKey("Account"))
                {
                    message.Append("<" + paramsList["Account"] + ">:");
                }
                if (paramsList.ContainsKey("Magic"))
                {
                    message.Append("_" + paramsList["Magic"] + "_:");
                }
                if (paramsList.ContainsKey("order"))
                {
                    message.Append("**" + paramsList["order"] + "**");
                }
                if (paramsList.ContainsKey("message"))
                {
                    message.Append(paramsList["message"]);
                }
                log.Log(message.ToString());
                // log.Info(message);
            }
            break;
            }
        }
Exemple #21
0
        public void PostSignal(SignalInfo signal)
        {
            if ((SignalFlags)signal.Flags == SignalFlags.Cluster)
            {
                xtrade.PostSignalTo(signal);
                return;
            }

            switch ((EnumSignals)signal.Id)
            {
            case EnumSignals.SIGNAL_CHECK_HEALTH:
                if (xtrade.IsDebug())
                {
                    log.Info("CheckHealth: " + signal.Flags);
                }
                break;

            case EnumSignals.SIGNAL_DEALS_HISTORY:
            {
                List <DealInfo> deals = null;
                if (signal.Data != null)
                {
                    deals = JsonConvert.DeserializeObject <List <DealInfo> >(signal.Data.ToString());
                }
                else
                {
                    deals = new List <DealInfo>();
                }
                xtrade.SaveDeals(deals);
            }
            break;

            case EnumSignals.SIGNAL_CHECK_BALANCE:
            {
                if (signal.Data == null)
                {
                    break;
                }
                JArray jarray = (JArray)signal.Data;
                if (jarray == null || jarray.Count == 0)
                {
                    break;
                }
                decimal balance = jarray.First.Value <decimal?>("Balance") ?? 0;
                decimal equity  = jarray.First.Value <decimal?>("Equity") ?? 0;
                int     Account = jarray.First.Value <int?>("Account") ?? 0;
                xtrade.UpdateBalance(Account, balance, equity);
            }
            break;

            case EnumSignals.SIGNAL_UPDATE_RATES:
                break;

            case EnumSignals.SIGNAL_ACTIVE_ORDERS:
            {
                // Dictionary<string, string> signal = JsonConvert.DeserializeObject<Dictionary<string, string>>(parameters);
                // var jObject = JObject.Parse(parameters);
                // var jTokenData = jObject.GetValue("Data");
                // var Value = jObject.GetValue("Value");
                // if (jTokenData != null)
                List <PositionInfo> positions = null;
                if (signal.Data != null)
                {
                    positions = JsonConvert.DeserializeObject <List <PositionInfo> >(signal.Data.ToString());
                }
                else
                {
                    positions = new List <PositionInfo>();
                }
                terminals.UpdatePositions(signal.ObjectId, signal.Value, positions);
            }
            break;

            /*
             * case EnumSignals.SIGNAL_UPDATE_SLTP:
             * {
             *  List<PositionInfo> positions = null;
             *  if (signal.Data != null)
             *      positions = JsonConvert.DeserializeObject<List<PositionInfo>>(signal.Data.ToString());
             *  else
             *      positions = new List<PositionInfo>();
             *  terminals.UpdateSLTP(signal.ObjectId, signal.Value, positions);
             * }
             * break;
             */
            case EnumSignals.SIGNAL_WARN_NEWS:
                break;

            case EnumSignals.SIGNAL_DEINIT_EXPERT:
            {
                ExpertInfo expert = JsonConvert.DeserializeObject <ExpertInfo>(signal.Data.ToString());
                xtrade.DeInitExpert(expert);
            }
            break;

            case EnumSignals.SIGNAL_DEINIT_TERMINAL:
            {
                ExpertInfo expert = JsonConvert.DeserializeObject <ExpertInfo>(signal.Data.ToString());
                xtrade.DeInitTerminal(expert);
            }
            break;

            // case EnumSignals.SIGNAL_SAVE_EXPERT:
            // {
            // deprecated
            //ExpertInfo expert = JsonConvert.DeserializeObject<ExpertInfo>(signal.Data.ToString());
            //if (expert != null)
            //    xtrade.SaveExpert(expert);
            // }
            //     break;
            case EnumSignals.SIGNAL_POST_LOG:
            {
                if (signal.Data == null)
                {
                    break;
                }
                Dictionary <string, string> paramsList = JsonConvert.DeserializeObject <Dictionary <string, string> >(signal.Data.ToString());
                StringBuilder message = new StringBuilder();
                if (paramsList.ContainsKey("Account"))
                {
                    message.Append("<" + paramsList["Account"] + ">:");
                }
                if (paramsList.ContainsKey("Magic"))
                {
                    message.Append("_" + paramsList["Magic"] + "_:");
                }
                if (paramsList.ContainsKey("order"))
                {
                    message.Append("**" + paramsList["order"] + "**");
                }
                if (paramsList.ContainsKey("message"))
                {
                    message.Append(paramsList["message"]);
                }
                log.Log(message.ToString());
                // log.Info(message);
            }
            break;
            }
        }
Exemple #22
0
 public MqlErrorException(ExpertInfo expertInfo, MethodCallInfo clientMethodInfo) : base(string.Format("MQL returned error: '{0}' for method {1}. Failure Context: {2}", clientMethodInfo.ErrorMessage, clientMethodInfo, expertInfo))
 {
 }
Exemple #23
0
        internal static HandlerProvider GetOrCreate(ExpertInfo expertInfo, HostElement hostElement)
        {
            Assembly        assembly;
            Type            type;
            MqlHandler      mqlHandler;
            HandlerProvider item;

            lock (_storageLocker)
            {
                if (!_storage.ContainsKey(expertInfo.Discriminator))
                {
                    if (hostElement.Handlers.ContainsKey(expertInfo.HandlerName))
                    {
                        HandlerElement handlerElement = hostElement.Handlers[expertInfo.HandlerName];
                        try
                        {
                            var assemblyPath =
                                Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
                                             string.Concat(handlerElement.AssemblyName, ".dll"));
                            assembly =
                                Assembly.LoadFile(assemblyPath);
                        }
                        catch (Exception exception1)
                        {
                            Exception exception = exception1;
                            throw new HandlerLoadException(expertInfo, "Requested assembly not found", exception);
                        }
                        try
                        {
                            type = assembly.GetType(handlerElement.TypeName);
                        }
                        catch (Exception exception3)
                        {
                            Exception exception2 = exception3;
                            throw new HandlerLoadException(expertInfo, "Requested type not found in assembly.",
                                                           exception2);
                        }
                        try
                        {
                            mqlHandler = (MqlHandler)Activator.CreateInstance(type);
                        }
                        catch (Exception exception5)
                        {
                            Exception exception4 = exception5;
                            throw new HandlerLoadException(expertInfo, "Can't create intance of expert.", exception4);
                        }
                        try
                        {
                            foreach (ParameterElement inputParameter in handlerElement.InputParameters)
                            {
                                PropertyInfo property     = mqlHandler.GetType().GetProperty(inputParameter.PropertyName);
                                Type         propertyType = property.PropertyType;
                                object       obj          = Convert.ChangeType(inputParameter.PropertyValue, propertyType);
                                property.SetValue(mqlHandler, obj);
                            }
                        }
                        catch (Exception exception7)
                        {
                            Exception exception6 = exception7;
                            throw new HandlerLoadException(expertInfo, "Can't set input parameters for expert",
                                                           exception6);
                        }
                        var handlerProvider = new HandlerProvider(mqlHandler, handlerElement, expertInfo);
                        _storage.TryAdd(expertInfo.Discriminator, handlerProvider);
                        item = handlerProvider;
                    }
                    else
                    {
                        throw new HandlerLoadException(expertInfo, "Requested application not found in configuration",
                                                       null);
                    }
                }
                else
                {
                    item = _storage[expertInfo.Discriminator];
                }
            }
            return(item);
        }
 public HandlerExecutionException(ExpertInfo expertInfo, Exception innerException)
     : base(string.Format("Handler execution failed with error '{0}'. Failure Context: {1}", (object)innerException.Message, (object)expertInfo), innerException)
 {
 }
        public void PostSignal(SignalInfo signal, IMessagingServer server)
        {
            if ((SignalFlags)signal.Flags == SignalFlags.Cluster)
            {
                xtrade.PostSignalTo(signal);
                return;
            }

            switch ((EnumSignals)signal.Id)
            {
            case EnumSignals.SIGNAL_POST_LOG:
            {
                if (signal.Data == null)
                {
                    break;
                }
                MainService.thisGlobal.DoLog(signal);
            }
            break;

            case EnumSignals.SIGNAL_CHECK_HEALTH:
                if (xtrade.IsDebug())
                {
                    log.Info("CheckHealth: " + signal.Flags);
                }
                break;

            case EnumSignals.SIGNAL_DEALS_HISTORY:
            {
                List <DealInfo> deals = null;
                if (signal.Data != null)
                {
                    deals = JsonConvert.DeserializeObject <List <DealInfo> >(signal.Data.ToString());
                }
                else
                {
                    deals = new List <DealInfo>();
                }
                xtrade.SaveDeals(deals);
            }
            break;

            case EnumSignals.SIGNAL_CHECK_BALANCE:
            {
                if (signal.Data == null)
                {
                    break;
                }
                JArray jarray = (JArray)signal.Data;
                if (jarray == null || jarray.Count == 0)
                {
                    break;
                }
                decimal balance = jarray.First.Value <decimal?>("Balance") ?? 0;
                decimal equity  = jarray.First.Value <decimal?>("Equity") ?? 0;
                int     Account = jarray.First.Value <int?>("Account") ?? 0;
                xtrade.UpdateBalance(Account, balance, equity);
            }
            break;

            case EnumSignals.SIGNAL_UPDATE_RATES:
            {
                try
                {
                    List <RatesInfo> rates = null;
                    if (signal.Data != null)
                    {
                        rates = JsonConvert.DeserializeObject <List <RatesInfo> >(signal.Data.ToString());
                    }
                    if (rates != null)
                    {
                        var    usdbynrateTask = GetBYNRates();
                        double usdbynrate     = usdbynrateTask.Result;
                        if (usdbynrate > 0)
                        {
                            RatesInfo rate = new RatesInfo();
                            rate.Ask    = usdbynrate;
                            rate.Bid    = usdbynrate;
                            rate.Symbol = "USDBYN";
                            rates.Add(rate);
                        }
                    }
                    xtrade.UpdateRates(rates);
                }
                catch (Exception e)
                {
                    log.Info(String.Format($"GetBYNUSDRates Error: {0}", e.ToString()));
                }
            }
            break;

            case EnumSignals.SIGNAL_ACTIVE_ORDERS:
            {
                List <PositionInfo> positions = null;
                if (signal.Data != null)
                {
                    positions = JsonConvert.DeserializeObject <List <PositionInfo> >(signal.Data.ToString());
                }
                else
                {
                    positions = new List <PositionInfo>();
                }
                var terminals = MainService.thisGlobal.Container.Resolve <ITerminalEvents>();
                terminals.UpdatePositions(signal.ObjectId, signal.Value, positions);
            }
            break;

            /*
             * case EnumSignals.SIGNAL_UPDATE_SLTP:
             * {
             *  List<PositionInfo> positions = null;
             *  if (signal.Data != null)
             *      positions = JsonConvert.DeserializeObject<List<PositionInfo>>(signal.Data.ToString());
             *  else
             *      positions = new List<PositionInfo>();
             *  terminals.UpdateSLTP(signal.ObjectId, signal.Value, positions);
             * }
             * break;
             */
            case EnumSignals.SIGNAL_WARN_NEWS:
                break;

            case EnumSignals.SIGNAL_DEINIT_EXPERT:
            {
                ExpertInfo expert = JsonConvert.DeserializeObject <ExpertInfo>(signal.Data.ToString());
                xtrade.DeInitExpert(expert);
            }
            break;

            case EnumSignals.SIGNAL_DEINIT_TERMINAL:
            {
                ExpertInfo expert = JsonConvert.DeserializeObject <ExpertInfo>(signal.Data.ToString());
                xtrade.DeInitTerminal(expert);
            }
            break;

            case EnumSignals.SIGNAL_LEVELS4SYMBOL:
            {
                string symbol       = signal.Sym;
                string levelsString = xtrade.Levels4Symbol(symbol);
                var    result       = xtrade.CreateSignal(SignalFlags.Expert, signal.ObjectId, (EnumSignals)signal.Id, signal.ChartId);
                result.Sym  = symbol;
                result.Data = levelsString;
                var send = JsonConvert.SerializeObject(result);
                if (server != null)
                {
                    server.MulticastText(send);
                }
            }
            break;

            default:
                if (server != null)
                {
                    var result = xtrade.SendSignal(signal);
                    if (result != null)
                    {
                        var send = JsonConvert.SerializeObject(result);
                        server.MulticastText(send);
                    }
                }
                break;
            }
        }
Exemple #26
0
 private void HandleClientComm(object client)
 {
     lock (client)
     {
         TcpClient local_0 = (TcpClient)client;
         Trace.Write((object)new LogInfo(LogType.Initializations, (Exception)null, "Connection opened"));
         HandlerProvider handlerProvider = (HandlerProvider)null;
         try
         {
             NetworkStream local_1 = local_0.GetStream();
             string[]      local_2 = this.GetMessage(local_1);
             if (local_2.Length < 3)
             {
                 throw new MessageException(local_2, 3, "discriminator|applicationName|methodName|param1|param2|param3");
             }
             MethodCallInfo local_3    = new MethodCallInfo(local_2[2], Enumerable.Skip <string>((IEnumerable <string>)local_2, 3));
             ExpertInfo     expertInfo = new ExpertInfo(local_2[0] + local_2[1], local_2[1], local_3);
             handlerProvider = HandlerProvider.GetOrCreate(expertInfo, this.HostConfiguration);
             lock (handlerProvider.Locker)
             {
                 handlerProvider.BeginTime    = DateTime.Now;
                 handlerProvider.ServerMethod = local_3;
                 handlerProvider.ClientMethod = (MethodCallInfo)null;
                 Thread local_4 = new Thread((ParameterizedThreadStart)(x =>
                 {
                     try
                     {
                         ((HandlerProvider)x).ProceedServerMethod();
                     }
                     catch (Exception exception_1)
                     {
                         HandlerExecutionException local_1 = new HandlerExecutionException(expertInfo, exception_1);
                         handlerProvider.ServerMethod.ErrorMessage = local_1.Message;
                         Trace.Write((object)new LogInfo(LogType.HandlerExecutionError, (Exception)local_1, ""));
                     }
                     finally
                     {
                         handlerProvider.ClientCallSemaphore.Set();
                     }
                 }))
                 {
                     IsBackground = this._isBackground
                 };
                 local_4.CurrentCulture = new CultureInfo("en-US");
                 local_4.Name           = (string)(object)local_0.Client.RemoteEndPoint + (object)" > " + (string)(object)this._tcpListener.Server.LocalEndPoint;
                 local_4.Start((object)handlerProvider);
                 handlerProvider.ClientCallSemaphore.WaitOne();
                 while (handlerProvider.ClientMethod != null)
                 {
                     string[] local_5 = new string[2 + Enumerable.Count <string>((IEnumerable <string>)handlerProvider.ClientMethod.Parameters)];
                     local_5[0] = "###MQL###";
                     local_5[1] = handlerProvider.ClientMethod.MethodName;
                     for (int local_6 = 2; local_6 < local_5.Length; ++local_6)
                     {
                         local_5[local_6] = handlerProvider.ClientMethod.Parameters[local_6 - 2];
                     }
                     this.WriteMessage(local_1, local_5);
                     string[] local_7 = this.GetMessage(local_1);
                     if (local_7.Length < 2)
                     {
                         throw new MessageException(local_7, 2, "lastError|returnValue");
                     }
                     handlerProvider.ClientMethod.ErrorMessage = local_7[0] == "0:no error" ? (string)null : local_7[0];
                     handlerProvider.ClientMethod.ReturnValue  = local_7[1] == "###EMPTY###" ? string.Empty : local_7[1];
                     handlerProvider.ServerCallSemaphore.Set();
                     handlerProvider.ClientCallSemaphore.WaitOne();
                 }
                 if (handlerProvider.ServerMethod.ErrorMessage != null)
                 {
                     this.WriteMessage(local_1, "###ERR###", handlerProvider.ServerMethod.ErrorMessage);
                 }
                 if (handlerProvider.ServerMethod.ReturnValue != null)
                 {
                     this.WriteMessage(local_1, new string[1]
                     {
                         handlerProvider.ServerMethod.ReturnValue
                     });
                 }
             }
         }
         catch (Exception exception_0)
         {
             Trace.Write((object)new LogInfo(LogType.Execption, exception_0, ""));
         }
         finally
         {
             if (handlerProvider != null)
             {
                 handlerProvider.EndTime = DateTime.Now;
                 Trace.Write((object)new LogInfo(LogType.Notifications, (Exception)null, "Method execution time: " + (object)(handlerProvider.EndTime - handlerProvider.BeginTime).TotalMilliseconds + " ms."));
             }
             local_0.Close();
         }
         Trace.Write((object)new LogInfo(LogType.Initializations, (Exception)null, "Connection closed\n"));
     }
 }
Exemple #27
0
        private void HandleClientComm(object client)
        {
            string    str;
            string    str1;
            TcpClient tcpClient = (TcpClient)client;

            Trace.Write(new TraceInfo(BridgeTraceErrorType.HostInfo, null, "Connection opened"));
            HandlerProvider orCreate = null;

            try
            {
                try
                {
                    NetworkStream stream  = tcpClient.GetStream();
                    string[]      message = this.GetMessage(stream);
                    if ((int)message.Length >= 3)
                    {
                        MethodCallInfo methodCallInfo = new MethodCallInfo(message[2], message.Skip <string>(3));
                        ExpertInfo     expertInfo     = new ExpertInfo(message[0], message[1], methodCallInfo);
                        orCreate = HandlerProvider.GetOrCreate(expertInfo, this.HostConfiguration);
                        lock (orCreate.Locker)
                        {
                            orCreate.BeginTime    = DateTime.Now;
                            orCreate.ServerMethod = methodCallInfo;
                            orCreate.ClientMethod = null;
                            Thread thread = new Thread((object x) => {
                                try
                                {
                                    try
                                    {
                                        ((HandlerProvider)x).ProceedServerMethod();
                                    }
                                    catch (Exception exception1)
                                    {
                                        Exception exception = exception1;
                                        HandlerExecutionException handlerExecutionException = new HandlerExecutionException(expertInfo, exception);
                                        orCreate.ServerMethod.ErrorMessage = handlerExecutionException.Message;
                                        Trace.Write(new TraceInfo(BridgeTraceErrorType.HandlerExecutionError, handlerExecutionException, ""));
                                    }
                                }
                                finally
                                {
                                    orCreate.ClientCallSemaphore.Set();
                                }
                            });
                            thread.IsBackground = this._isBackground;
                            Thread cultureInfo = thread;
                            cultureInfo.CurrentCulture = new CultureInfo("en-US");
                            cultureInfo.Name           = string.Concat(tcpClient.Client.RemoteEndPoint, " > ", this._tcpListener.Server.LocalEndPoint);
                            cultureInfo.Start(orCreate);
                            orCreate.ClientCallSemaphore.WaitOne();
                            while (orCreate.ClientMethod != null)
                            {
                                string[] methodName = new string[2 + orCreate.ClientMethod.Parameters.Count <string>()];
                                methodName[0] = "###MQL###";
                                methodName[1] = orCreate.ClientMethod.MethodName;
                                for (int i = 2; i < (int)methodName.Length; i++)
                                {
                                    methodName[i] = orCreate.ClientMethod.Parameters[i - 2];
                                }
                                this.WriteMessage(stream, methodName);
                                string[] strArrays = this.GetMessage(stream);
                                if ((int)strArrays.Length >= 2)
                                {
                                    MethodCallInfo clientMethod = orCreate.ClientMethod;
                                    if (strArrays[0] == "0:no error")
                                    {
                                        str = null;
                                    }
                                    else
                                    {
                                        str = strArrays[0];
                                    }
                                    clientMethod.ErrorMessage = str;
                                    MethodCallInfo clientMethod1 = orCreate.ClientMethod;
                                    str1 = (strArrays[1] == "###EMPTY###" ? string.Empty : strArrays[1]);
                                    clientMethod1.ReturnValue = str1;
                                    orCreate.ServerCallSemaphore.Set();
                                    orCreate.ClientCallSemaphore.WaitOne();
                                }
                                else
                                {
                                    throw new MessageException(strArrays, 2, "lastError|returnValue");
                                }
                            }
                            if (orCreate.ServerMethod.ErrorMessage != null)
                            {
                                string[] errorMessage = new string[] { "###ERR###", orCreate.ServerMethod.ErrorMessage };
                                this.WriteMessage(stream, errorMessage);
                            }
                            if (orCreate.ServerMethod.ReturnValue != null)
                            {
                                string[] returnValue = new string[] { orCreate.ServerMethod.ReturnValue };
                                this.WriteMessage(stream, returnValue);
                            }
                        }
                    }
                    else
                    {
                        throw new MessageException(message, 3, "discriminator|applicationName|methodName|param1|param2|param3");
                    }
                }
                catch (Exception exception3)
                {
                    Exception exception2 = exception3;
                    Trace.Write(new TraceInfo(BridgeTraceErrorType.Execption, exception2, ""));
                }
            }
            finally
            {
                if (orCreate != null)
                {
                    orCreate.EndTime = DateTime.Now;
                    TimeSpan endTime = orCreate.EndTime - orCreate.BeginTime;
                    Trace.Write(new TraceInfo(BridgeTraceErrorType.Service, null, string.Concat("Method execution time: ", endTime.TotalMilliseconds, " ms.")));
                }
                tcpClient.Close();
            }
            Trace.Write(new TraceInfo(BridgeTraceErrorType.HostInfo, null, "Connection closed\n"));
        }
 public HandlerLoadException(ExpertInfo expertInfo, string reason, Exception innerException)
     : base(string.Format("Can't load handler: {0}. Failure Context: {1}", (object)reason, (object)expertInfo), innerException)
 {
 }
Exemple #29
0
        protected override IList ExecuteCrawl(bool crawlAll)
        {
            IList  list            = new ArrayList();
            string htl             = string.Empty;
            string cookiestr       = string.Empty;
            string viewState       = string.Empty;
            int    pageInt         = 1;
            string eventValidation = string.Empty;

            try
            {
                htl = this.ToolWebSite.GetHtmlByUrl(SiteUrl, Encoding.UTF8, ref cookiestr);
            }
            catch { return(null); }
            Parser   parser   = new Parser(new Lexer(htl));
            NodeList nodeList = parser.ExtractAllNodesThatMatch(new AndFilter(new HasAttributeFilter("cellSpacing", "2"), new TagNameFilter("table")));

            if (nodeList != null && nodeList.Count > 0)
            {
                string pageString = nodeList.AsString();
                Regex  regexPage  = new Regex(@"共[^页]+页,");
                Match  pageMatch  = regexPage.Match(pageString);
                try
                {
                    pageInt = int.Parse(pageMatch.Value.Replace("共", "").Replace("页,", "").Replace(" ", ""));
                }
                catch { }
            }
            for (int i = 1; i <= pageInt; i++)
            {
                if (i > 1)
                {
                    viewState       = this.ToolWebSite.GetAspNetViewState(htl);
                    eventValidation = this.ToolWebSite.GetAspNetEventValidation(htl);
                    NameValueCollection nvc = this.ToolWebSite.GetNameValueCollection(new string[] {
                        "__EVENTTARGET",
                        "__EVENTARGUMENT",
                        "__VIEWSTATE",
                        "__VIEWSTATEENCRYPTED",
                        "__EVENTVALIDATION",
                        "ctl00$Header$drpSearchType",
                        "ctl00$Header$txtGcxm",
                        "ctl00$Content$hdnId",
                        "ctl00$Content$hdnOperate",
                        "ctl00$hdnPageCount"
                    }, new string[] {
                        "ctl00$Content$GridView1",
                        "Page$" + i.ToString(),
                        viewState,
                        "",
                        eventValidation,
                        "0",
                        string.Empty,
                        string.Empty,
                        string.Empty,
                        pageInt.ToString()
                    });
                    try
                    {
                        htl = this.ToolWebSite.GetHtmlByUrl(SiteUrl, nvc, Encoding.UTF8);
                    }
                    catch { return(list); }
                }
                parser   = new Parser(new Lexer(htl));
                nodeList = parser.ExtractAllNodesThatMatch(new AndFilter(new HasAttributeFilter("id", "ctl00_Content_GridView1"), new TagNameFilter("table")));
                if (nodeList != null && nodeList.Count > 0)
                {
                    TableTag table = nodeList[0] as TableTag;
                    for (int j = 1; j < table.RowCount - 1; j++)
                    {
                        string   expertName = string.Empty, workUnit = string.Empty, profession = string.Empty, remark = string.Empty, infourl = string.Empty, creator = string.Empty, CreateTime = string.Empty, lastModifTime = string.Empty, lastModifier = string.Empty;
                        TableRow tr = table.Rows[j];
                        expertName = tr.Columns[1].ToPlainTextString().Trim();
                        workUnit   = tr.Columns[2].ToPlainTextString().Trim();
                        profession = tr.Columns[3].ToPlainTextString().Replace("&lt;", "").Replace("br", "").Replace("&gt;", "").Trim();
                        infourl    = SiteUrl;
                        ExpertInfo info = ToolDb.GenExpertInfo(expertName, workUnit, profession, remark, infourl, creator, CreateTime, lastModifier, lastModifTime);
                        list.Add(info);
                        if (!crawlAll && list.Count >= this.MaxCount)
                        {
                            return(list);
                        }
                    }
                }
            }
            return(list);
        }