private void btnTakeAway_Click(object sender, EventArgs e) { orderInfo infoOrder = new orderInfo(); infoOrder.txtWaiterName.Text = this.statGetUser.Text; infoOrder.txtTableNo.Text = "0"; //infoOrder.txtAdultNo.Text = "1"; //infoOrder.txtChild.Text = "0"; infoOrder.txtReceiptType.Text = "Take Away"; infoOrder.orderType = "Take Away"; infoOrder.ShowDialog(); }
public async Task <ActionResult <orderInfo> > PostOrder(orderInfo orderBody) { var userInfo = await _userManager.FindByIdAsync(User.FindFirstValue(ClaimTypes.NameIdentifier)); // var formationInfo = await _context.formations.FindAsync(orderBody.formationId); new InvoiceGenerator("./InvoiceGenerator/invoice_template.docx") .SetData(new { envoyeur = "Mediwatch", envoyeur_addresse_1 = "24 rue Pasteur", envoyeur_addresse_2 = "94270 Le Kremlin-Bicêtre", envoyeur_addresse_3 = "France", destinataire = userInfo.UserName, destinataire_addresse = orderBody.billingAdress, numéro_facture = orderBody.invoiceId, date_facture = DateTime.Now.ToString("dd/MM/yyyy"), description = "Formation", // description = formationInfo.Name, quantité = "1", unité = "pce.", prix_unitaire_HT = orderBody.price.ToString(), // prix_unitaire_HT = formationInfo.Price, total_TTC = "-1.00", // total_TTC = formationInfo.Price, téléphone = "+33 X XX XX XX XX", email = "*****@*****.**", IBAN = "XXXXXXXXXX" }) .SetOuput("./InvoiceGenerator/" + orderBody.invoiceId) .SetOverwrite(true) .Run(); // EmailForm email = new EmailForm // { // EmailAddress = userInfo.Email, // Content = "Vous avez payé" // }; // EmailUtils.SendMail(email, _configuration); new InvoiceArchiver(_configuration) .ArchiveInvoice("./InvoiceGenerator/" + orderBody.invoiceId, orderBody.invoiceId, userInfo.UserName); // orderInfo info = new orderInfo(); orderBody.createAt = DateTime.Now; _context.orderInfos.Add(orderBody); await _context.SaveChangesAsync(); return(CreatedAtAction(nameof(GetOrder), new { id = orderBody.id }, orderBody)); }
/// <summary> /// 根据id查找订单 /// </summary> /// <param name="id"></param> /// <returns></returns> public orderInfo GetOrderById(int id) { string sql = $"select orderId,cName,cNumber,orderDate,orderAddress from OrderList where orderId={id}"; DataSet ds = SqlServer.Query(sql); orderInfo order = new orderInfo(); if (ds.Tables.Count > 0) { DataTable dt = ds.Tables[0]; if (dt.Rows.Count > 0) { order = orderInfo.TableToList(dt)[0]; } } return(order); }
public void ProcessRequest(HttpContext context) { string cName = context.Request.Form["cName"]; string cNumber = context.Request.Form["cNumber"]; DateTime orderDate = Convert.ToDateTime(context.Request.Form["orderDate"]); string orderAddress = context.Request.Form["orderAddress"]; orderInfo order = new orderInfo(); order.cName = cName; order.cNumber = Convert.ToInt32(cNumber); order.orderDate = Convert.ToDateTime(orderDate); order.orderAddress = orderAddress; if (orderBll.AddOrder(order)) { context.Response.Write("<script>alert('添加成功!');window.location='orderQuery.aspx'</script>"); } }
private void button2_Click(object sender, EventArgs e) { _entities = new KBBQEntities(); orderInfo infoOrder = new orderInfo(); infoOrder.txtWaiterName.Text = this.statGetUser.Text; infoOrder.txtTableNo.Text = "0"; infoOrder.hiddFashCash = 1; //infoOrder.txtAdultNo.Text = "1"; //infoOrder.txtChild.Text = "0"; infoOrder.txtReceiptType.Text = "Fast Cash"; infoOrder.orderType = button2.Text; var empIDD = selectClass.getEmployeeByID(statGetUser.Text.ToString()); infoOrder.cmbWaiter.SelectedText = this.statGetUser.Text; infoOrder.ShowDialog(); }
/// <summary> /// 获取成交量 /// </summary> /// <returns></returns> protected int[] GetGoodsNum() { List <orderInfo> orders = orderBLL.GetOrderList(); List <int> numList = new List <int>(); orderInfo old = null; for (int i = 0; i < orders.Count(); i++) { if (old != null && old.orderDate == orders[i].orderDate) { numList[i - 1] = orders[i].cNumber; old = orders[i]; i--; } else { numList.Add(orders[i].cNumber); } } return(numList.ToArray()); }
//функция отправки заявки на добавление на биржу public bool sendOrderAdd(orderInfo ord) { try { this.parent.parent.logMsg("Opt Expiration: Выставление заявки Id:" + ord.id.ToString()); this.m_msg.set_Field("P2_Type", 4); this.m_msg.set_Field("P2_From", "ukrnt");// parent.sender); this.m_msg.set_Field("broker_code", this.parent.parent.mainAccount); // если Установить лимиты денежных средств, залоговых средств и лимит на покупки спотов this.m_msg.set_Field("mode", ord.mode); this.m_msg.set_Field("order_id", ord.order_id); this.m_msg.set_Field("isin", ord.isin); this.m_msg.set_Field("amount", ord.amount); this.m_msg.set_Field("code", ord.code); this.parent.parent.logMsg("Opt Expiration: Отправка асинхронной заявки Id:" + ord.id.ToString() + " mode:" + ord.mode + ""); // отправляем асинхронно заявку и подключаем callback функцию // ,????? сдесь я поставил ожидание 2000 милисекунд (2 сек), но достаточно ли такое значение this.m_msg.SendAsync2(this.parent.m_con, 10000, this.asyncReceiver, ord.id); return true; } catch (Exception e) { //если ошибка, то удаляем заявку с очереди и обновляем статус this.parent.parent.logMsg("Opt Expiration: Ошибка выставления заявки на добавление id: " + ord.id.ToString()); return false; } }
// функция выборки с таблици fut_orders_add записей для отправки public bool getOrders() { bool res = true; NpgsqlDataReader rd; try { rd = cmdOrders_Select.ExecuteReader(); //на всякий случай блокируем очередь lock (this.parent.xQueueMsgLock) { while (rd.Read()) { try { long rowId = Convert.ToInt64(rd["_id"]); string rowType = "cm"; //если очередь не содержит такую заявку if (!this.parent.queueMsg.Contains(rowId)) { try { //если очередь не содержит такую заявку if (!this.mQueue.Contains(Convert.ToInt64(rd["_id"]))) { this.parent.parent.logMsg("Change Money: Выставление заявки на изменения лимитов Id:" + rd["_id"].ToString()); orderInfo order = new orderInfo(rowId, rowType); order.code = rd["_code"].ToString(); if (rd["_broker_code"].ToString() != "") order.broker_code = rd["_broker_code"].ToString(); else order.broker_code = this.parent.parent.mainAccount; order.mode = rd["_mode"].ToString(); if (order.mode == "12") { order.limit_money = rd["_limit_money"].ToString().Replace(",", "."); order.limit_pledge = rd["_limit_pledge"].ToString().Replace(",", "."); order.coeff_go = rd["_coeff_go"].ToString().Replace(",", "."); } else if (order.mode == "13") { order.limit_money = "0"; order.limit_pledge = "0"; order.coeff_go = rd["_coeff_go"].ToString().Replace(",", "."); } this.parent.queueMsg.Add(rowId, order); } } catch (Exception e) { this.parent.parent.logMsg("Change Money: Ошибка при добавлении в очередь отправки на биржу заявки с id " + rowId.ToString() + "." + e.Message + e.HelpLink + " " + e.TargetSite + " " + e.Data, 1); this.parent.addNotifyToQueue("uxf_change_client_money"); res = false; } } } catch (Exception ee) { this.parent.parent.logMsg("Change Money (Reader next): Ошибка при добавлении в очередь отправки на биржу заявки ." + ee.Message + ee.HelpLink + " " + ee.TargetSite + " " + ee.Data, 1); this.parent.addNotifyToQueue("uxf_change_client_money"); res = false; } } } try { rd.Close(); } catch { } } catch (Exception e) { this.parent.parent.logMsg("Change Money (Reader): Ошибка выборки заявок для добавлениия в очередь отправки." + e.Message + e.HelpLink + " " + e.TargetSite + " " + e.Data, 1); this.parent.addNotifyToQueue("uxf_change_client_money"); res = false; } return res; }
//функция отправки заявки на добавление на биржу public bool sendOrderAdd(orderInfo ord) { try { string t = ord.isin + " " + ord.client_code + " " + ord.type + " " + ord.dir + " " + ord.amount + " " + ord.price + " " + ord.comment + " " + ord.ext_id; this.parent.parent.logMsg("FUT Add: Выставление заявки на биржу Id:" + ord.id.ToString()+" "+t); this.m_futOrderAdd.set_Field("P2_Type", 1); this.m_futOrderAdd.set_Field("broker_code", ord.broker_code); this.m_futOrderAdd.set_Field("isin", ord.isin); this.m_futOrderAdd.set_Field("client_code", ord.client_code); this.m_futOrderAdd.set_Field("type", ord.type); this.m_futOrderAdd.set_Field("dir", ord.dir); this.m_futOrderAdd.set_Field("amount",ord.amount); this.m_futOrderAdd.set_Field("price", ord.price); this.m_futOrderAdd.set_Field("P2_From", "ukrnt");// parent.sender); this.m_futOrderAdd.set_Field("comment", ord.comment); this.m_futOrderAdd.set_Field("ext_id", ord.ext_id); // отправляем асинхронно заявку и подключаем callback функцию // ,????? сдесь я поставил ожидание 10000 милисекунд 10 сек), но достаточно ли такое значение this.m_futOrderAdd.SendAsync2(this.parent.m_con, 10000, this.asyncReceiverAdd, ord.id); return true; } catch (Exception e) { //если ошибка, то удаляем заявку с очереди и обновляем статус this.parent.parent.logMsg("FUT Add:Ошибка выставления заявки на добавление id: " + ord.id.ToString(),1); return false; } }
// функция выборки с таблици fut_orders записей для отправки public bool getOrders() { bool res = true; NpgsqlDataReader rd; try { this.parent.parent.logMsg("Начало выборки фьючерсных заявок с таблицы"); rd = cmdOrders_Select.ExecuteReader(); try { //на всякий случай блокируем очередь lock (this.parent.xQueueMsgLock) { while (rd.Read()) { long rowId=Convert.ToInt64(rd["id"]); string rowType=rd["tp"].ToString(); bool inHist=false; //проверим нет ли заявки с таким ід в списке недавно отправленных lock (this.parent.xQueueMsgHistLock) { if (this.parent.queueMsgHist.Contains(rowId)) inHist = true; } //если заявки нет в списке отправленных if (!inHist){ //если очередь не содержит такую заявку if (!this.parent.queueMsg.Contains(rowId)) { try { this.parent.parent.logMsg("Fut добавление заявки в очередь id " + rowId.ToString()); orderInfo ord = new orderInfo(rowId, rowType); switch (rowType) { case "1": ord.isin = rd["isin"].ToString(); ord.amount = rd["amount"].ToString().Replace(",", "."); ord.client_code = rd["client_code"].ToString(); if (rd["broker_code"].ToString() != "") ord.broker_code = rd["broker_code"].ToString(); else ord.broker_code = this.parent.parent.mainAccount; ord.comment = rd["comment"].ToString(); ord.type = Convert.ToInt32(rd["type"]); ord.date_exp = rd["date_exp"].ToString(); ord.dir = Convert.ToInt32(rd["dir"]); ord.ext_id = Convert.ToInt32(rd["ext_id"]); ord.price = rd["price"].ToString().Replace(",", "."); ord.date_exp = rd["date_exp"].ToString(); this.parent.queueMsg.Add(rowId, ord); break; case "3": if (rd["broker_code"].ToString() != "") ord.broker_code = rd["broker_code"].ToString(); else ord.broker_code = this.parent.parent.mainAccount; ord.order_id = Convert.ToInt32(rd["order_id"]); this.parent.queueMsg.Add(rowId, ord); break; } } catch (Exception e) { this.parent.parent.logMsg("FUT: Ошибка при добавлении в очередь отправки на биржу заявки с id " + rowId.ToString() + "." + e.Message + e.HelpLink + " " + e.TargetSite + " " + e.Data, 1); res = false; } } } } } } catch (Exception ee) { this.parent.parent.logMsg("FUT : (Reader next) Ошибка выборки заявок для добавлениия в очередь отправки." + ee.Message + ee.HelpLink + " " + ee.TargetSite + " " + ee.Data,1); //добавляем в очередь сообщение this.parent.addNotifyToQueue("uxf_fut_orders"); res = false; } rd.Close(); } catch (Exception e) { this.parent.parent.logMsg("FUT : (Reader) Ошибка выборки заявок для добавлениия в очередь отправки." + e.Message + e.HelpLink + " " + e.TargetSite + " " + e.Data,1); //добавляем в очередь сообщение this.parent.addNotifyToQueue("uxf_fut_orders"); res = false; } return res; }
protected void Submit_Click(object sender, EventArgs e) { string id = Request["HotelId"];//接收来自酒店信息页面a链接传递过来的酒店编号 DataTable table = room.searchHotelRoomById(id); if (table != null && table.Rows.Count > 0) //当前表里有数据时 { if (RoomType.Text == "") //没有选择客房类型 { Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('请选择您要预订的客房!');</script>"); } else { int oldVacantNum = Int32.Parse(Session["vacantNum"].ToString()); //原先空房数 if (CheckInDate.Text == "") //没有选择入住日期 { Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('请选择您要入住的日期!');</script>"); } else if (Int32.Parse(OrderNumber.Text.Trim()) <= 0 || Int32.Parse(OrderNumber.Text.Trim()) > oldVacantNum)//预订数量小等于0或预订数量大于空房数 { Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('当前空房数无法满足您的需求!');</script>"); } else if (Int32.Parse(StayDuration.Text.Trim()) <= 0)//入住时长小等于0 { Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('入住时长需大于0!');</script>"); } else { orderInfo d = new orderInfo(); DateTime date = Convert.ToDateTime(OrderDate.Text); //预订日期 d.OorderDate = date; d.Uid = CardId.Text.Trim(); //身份证号 d.Hid = Request["HotelId"]; //接收来自在线订房页面a链接传递过来的酒店编号 d.Tid = room.searchRoomTypeId(RoomType.Text); //根据客房类型查询客房类型编号 d.Onumber = Int32.Parse(OrderNumber.Text.Trim()); //预订数量 d.OcheckInDate = Convert.ToDateTime(CheckInDate.Text); //入住日期 d.OstayDuration = Int32.Parse(StayDuration.Text.Trim()); //入住时长 d.Oprice = Double.Parse(Monetary.Text); //预订总金额 //订单编号设置为=身份证后四位+选择的酒店编号后三位+客房编号+预约的月日时分 String month = date.ToString("MM"); //取月 String day = date.Day.ToString(); //取日 string hour = DateTime.Now.Hour.ToString(); //获取当前小时 string minute = DateTime.Now.Minute.ToString(); //获取当前分钟 string lastHotelId = d.Hid.Remove(0, d.Hid.Length - 3); //酒店编号后三位 string lastCardId = d.Uid.Remove(0, d.Uid.Length - 4); //客户身份证后四位 d.Oid = lastCardId + lastHotelId + d.Tid + month + day + hour + minute; //订单编号 order.addOrderInfo(d); //增加订单记录 Response.Write("<script>alert('预订成功!');</script>"); int currentVacantNum = oldVacantNum - d.Onumber; //当前空房数=原先空房数-客户预订数量 if (currentVacantNum > 0) //还有空房 { room.updateVacantNum(currentVacantNum, Session["hotelRoomId"].ToString()); //修改空房数 } else { room.deleteHotelRoomInfo(Session["hotelRoomId"].ToString());//删除该客房信息 } RoomType.Text = ""; CheckInDate.Text = ""; OrderNumber.Text = "1"; StayDuration.Text = "1"; Monetary.Text = ""; InitGridView();//重新加载 this.GridView1.SelectedIndex = -1; } } } else { Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('当前没有酒店客房信息,无法预订!');</script>"); } }
public bool getOrders() { bool res = true; NpgsqlDataReader rd; try { this.parent.parent.toLog(2,"Начало выборки спотовых заявок с таблицы"); rd = cmdOrders_Select.ExecuteReader(); try { //на всякий случай блокируем очередь lock (this.parent.xQueueMsgLock) { while (rd.Read()) { long rowId = Convert.ToInt64(rd["id"]); string rowType = rd["tp"].ToString(); bool inHist = false; //проверим нет ли заявки с таким ід в списке недавно отправленных lock (this.parent.xQueueMsgHistLock) { if (this.parent.queueMsgHist.Contains(rowId)) inHist = true; } //если заявки нет в списке отправленных if (!inHist) { //если очередь не содержит такую заявку if (!this.parent.queueMsg.Contains(rowId)) { try { this.parent.parent.toLog(2,"SPOT добавление заявки в очередь id " + rowId.ToString()); orderInfo ord = new orderInfo(rowId, rowType); switch (rowType) { case "1": case "3": ord.type = rd["type"].ToString(); ord.issueId = Convert.ToInt32(rd["issueid"]); ord.issueName = rd["issue_name"].ToString(); ord.i_code = rd["i_code"].ToString(); ord.price = rd["price"].ToString().Replace(",", "."); ord.qty = rd["qty"].ToString().Replace(",", "."); ord.memo = rd["memo"].ToString(); ord.ext_id =Convert.ToInt32( rd["ext_id"]); ord.settl_pair = rd["settl_pair"].ToString(); ord.paycond = rd["pay_condition"].ToString(); ord.quote_order = Convert.ToInt32(rd["quote_order"]); ord.order_type = Convert.ToInt32(rd["order_type"]); ord.action = rd["action"].ToString(); ord.firmId = parent.parent.firmId; ord.firmName = parent.parent.firmName; if (rowType=="1") ord.order_id=0; else ord.order_id = Convert.ToInt32(rd["order_id"]); ord.aon = Convert.ToInt32(rd["aon"]); ord.leave = Convert.ToInt32(rd["leave"]); ord.max_asset = rd["max_asset"].ToString(); this.parent.queueMsg.Add(rowId, ord); break; case "2": //this.parent.queueMsg.Add(rowId, ord); break; } } catch (Exception e) { this.parent.parent.toLog(2,"SPOT: Ошибка при добавлении в очередь отправки на биржу заявки с id " + rowId.ToString() + "." + e.Message + e.HelpLink + " " + e.TargetSite + " " + e.Data, 1); res = false; } } } } } } catch (Exception ee) { this.parent.parent.toLog(2,"SPOT : (Reader next) Ошибка выборки заявок для добавлениия в очередь отправки." + ee.Message + ee.HelpLink + " " + ee.TargetSite + " " + ee.Data, 1); //добавляем в очередь сообщение this.parent.addNotifyToQueue("uxs_spot_orders"); res = false; } rd.Close(); } catch (Exception e) { this.parent.parent.toLog(2,"SPOT : (Reader) Ошибка выборки заявок для добавлениия в очередь отправки." + e.Message + e.HelpLink + " " + e.TargetSite + " " + e.Data, 1); //добавляем в очередь сообщение this.parent.addNotifyToQueue("uxf_spot_orders"); res = false; } return res; }
public bool sendOrderEdit(orderInfo ord) { DSSERVERLib.GMsgOrder msg = new DSSERVERLib.GMsgOrder(); return true; }
public bool sendOrderAdd(orderInfo ord) { try { DSSERVERLib.GMsgOrder msg = new DSSERVERLib.GMsgOrder(); msg.Msg_action = Asc(Convert.ToChar(ord.action)); msg.Id = Convert.ToInt32(ord.order_id); msg.type = Asc(Convert.ToChar(ord.type)); msg.IssueID = ord.issueId; msg.Issue_name = ord.issueName; msg.I_code = ord.i_code; msg.Price = ord.price; msg.Qty = ord.qty; msg.FirmID = ord.firmId; msg.Firm_name = ord.firmName;// ord.firmName; msg.Ext_id = ord.ext_id; msg.Settl_pair = ord.settl_pair; msg.Quote_order = ord.quote_order; msg.Order_type = ord.order_type; msg.Catalyst = 1; msg.All_non = ord.aon; msg.Act_price = ord.price; msg.Max_asset = ord.max_asset; msg.Mm = 0; msg.Leave = ord.leave; msg.Paycond = Asc(Convert.ToChar(ord.paycond)); msg.Visible = 0; this.parent.parent.toLog(2,"Попытка добавления заявки id: "+ord.id.ToString()+" ext_id: "+ord.ext_id.ToString()+" issueName: "+ord.issueName+" amount: "+ord.qty+" price: "+ord.price+" type: "+ord.type+ " settlPair:"+ord.settl_pair); bool res; string pDesc; int pSeverity, pId; object pTime; int pCodePage; int pCryptoRes; object pUID; res = msg.SendSignedXML(out pDesc, out pSeverity, out pId, out pTime, out pCodePage, out pCryptoRes, out pUID); int rCode = 0; string rDesc = String.Empty; bool result = false; if (res) { rCode = pSeverity; rDesc = pDesc; result = true; } else { rCode = 1; rDesc=pDesc; } ord.sended = 1; if (result) { this.parent.parent.toLog(2, "Заявка успешно добавлена на биржу. Id: " + ord.id.ToString() + " pCode: " + pSeverity.ToString() + " pDesc: " + pDesc + " res: " + res.ToString()); } else this.parent.parent.toLog(2, "Ошибка добавления заявки на биржу. Id: " + ord.id.ToString() + " pCode: " + pSeverity.ToString() + " pDesc: " + pDesc + " res: " + res.ToString()); try { this.cmdOrders_Update.Parameters["p_id"].Value = ord.id; this.cmdOrders_Update.Parameters["p_code"].Value = rCode; this.cmdOrders_Update.Parameters["p_message"].Value = rDesc; this.parent.parent.toLog(2, "Обновление в таблице заявки на добавление id " + ord.id.ToString() + ", p_code" + rCode.ToString()); this.cmdOrders_Update.ExecuteNonQuery(); this.parent.parent.toLog(2, "Заявка на добавление id " + ord.id.ToString() + " удачно обновлена "); } catch (Exception exp2) { this.parent.parent.toLog(2, "Ошибка при обновлении заявки в базе. Id: " + ord.id.ToString() + " Error: " + exp2.Message, 1); } try { this.parent.parent.toLog(2, "Удалени с таблици заявки на добавление id " + ord.id.ToString() ); this.cmdOrders_Delete.Parameters["p_id"].Value = ord.id; this.cmdOrders_Delete.ExecuteNonQuery(); this.parent.parent.toLog(2, "Заявка на добавление id " + ord.id.ToString() + " удачно удалена с таблицы заявок"); } catch (Exception exp3) { this.parent.parent.toLog(2, "Ошибка при удалении заявки в базе. Id: " + ord.id.ToString() + " Error: " + exp3.Message, 1); } return true; } catch (Exception exp) { this.parent.parent.toLog(2, "Ошибка отправки " + exp.Message); return false; } }
/// <summary> /// 添加订单 /// </summary> /// <returns></returns> public int AddOrder(orderInfo order) { string sqlStr = $"insert into OrderList ( cName,cNumber,orderDate,orderAddress) values ('{order.cName}', '{order.cNumber}', '{order.orderDate.ToString("yyyy-MM-dd")}', '{order.orderAddress}')"; return(SqlServer.NotQuery(sqlStr)); }
public bool AddOrder(orderInfo vip) { return(orderDal.AddOrder(vip) > 0); }
//функция отправки заявки на удаление на биржу public bool sendOrderDel(orderInfo ord) { try { this.parent.parent.logMsg("FUT Del: Отправка заявки на удаление id " + ord.id.ToString() + " №:" + ord.order_id.ToString()); this.m_futOrderDel.set_Field("P2_Type", 2); //////////////////// this.m_futOrderDel.set_Field("broker_code", ord.broker_code); ////////////// this.m_futOrderDel.set_Field("order_id", ord.order_id); this.m_futOrderDel.set_Field("P2_From", "ukrnt"); // отправляем асинхронно заявку и подключаем callback функцию // ,????? сдесь я поставил ожидание 2000 милисекунд (2 сек), но достаточно ли такое значение this.m_futOrderDel.SendAsync2(this.parent.m_con, 10000, this.asyncReceiverDel, ord.id); return true; } catch (Exception e) { this.parent.parent.logMsg("FUT Del: Ошибка выставления заявки на удаление id: " + ord.id.ToString() + " №:" + ord.order_id.ToString() + " Err: " + e.Message,1); return false; } }
//функция отправки заявки на добавление на биржу public bool sendOrderAdd(orderInfo ord) { try { this.parent.parent.logMsg("Change Money: Выставление заявки Id:" + ord.id.ToString()); this.m_futChangeClientMoney.set_Field("P2_Type", 4); this.m_futChangeClientMoney.set_Field("P2_From", "ukrnt");// parent.sender); this.m_futChangeClientMoney.set_Field("broker_code", ord.broker_code); // если Установить лимиты денежных средств, залоговых средств и лимит на покупки спотов this.m_futChangeClientMoney.set_Field("mode", ord.mode); this.m_futChangeClientMoney.set_Field("code", ord.code); if (ord.mode == "12") { this.m_futChangeClientMoney.set_Field("limit_money", ord.limit_money); this.m_futChangeClientMoney.set_Field("limit_pledge",ord.limit_pledge); this.m_futChangeClientMoney.set_Field("coeff_go", ord.coeff_go); } else if (ord.mode == "13") { this.m_futChangeClientMoney.set_Field("limit_money", "0"); this.m_futChangeClientMoney.set_Field("limit_pledge", "0"); this.m_futChangeClientMoney.set_Field("coeff_go", ord.coeff_go); } this.parent.parent.logMsg("Change Money: Отправка асинхронной заявки Id:" + ord.id.ToString()+" mode:"+ord.mode+""); // отправляем асинхронно заявку и подключаем callback функцию // ,????? сдесь я поставил ожидание 2000 милисекунд (2 сек), но достаточно ли такое значение this.m_futChangeClientMoney.SendAsync2(this.parent.m_con, 10000, this.asyncReceiver, ord.id); return true; } catch (Exception e) { //если ошибка, то удаляем заявку с очереди и обновляем статус this.parent.parent.logMsg("Change Money: Ошибка выставления заявки на добавление id: " +ord.id.ToString(),1); return false; } }
// функция выборки с таблици fut_orders_add записей для отправки public bool getOrders() { bool res = true; NpgsqlDataReader rd; try { this.parent.parent.logMsg("Начало получения заявок по ордерам на експирацию опциона"); rd = cmdOrders_Select.ExecuteReader(); this.parent.parent.logMsg("ExecutedReader"); //на всякий случай блокируем очередь lock (this.parent.xQueueMsgLock) { while (rd.Read()) { try { long rowId = Convert.ToInt64(rd["_id"]); string rowType = "cm"; //если очередь не содержит такую заявку if (!this.parent.queueMsg.Contains(rowId)) { try { //если очередь не содержит такую заявку if (!this.mQueue.Contains(Convert.ToInt64(rd["_id"]))) { this.parent.parent.logMsg("Opt Expiration: Выставление заявки на экспирацию опциона Id:" + rd["_id"].ToString()); orderInfo ord = new orderInfo(rowId, rowType); if ((Convert.ToInt32(rd["type"])==7) ||(Convert.ToInt32(rd["type"])==8)) ord.mode="12"; else ord.mode="11"; ord.isin = rd["isin"].ToString(); ord.amount = rd["amount"].ToString().Replace(",", "."); ord.client_code = rd["client_code"].ToString(); ord.type = Convert.ToInt32(rd["type"]); ord.ext_id = Convert.ToInt32(rd["ext_id"]); ord.order_id = Convert.ToInt32(rd["order_id"]); this.parent.queueMsg.Add(rowId, ord); } } catch (Exception e) { this.parent.parent.logMsg("Opt Expiration (Reader next): Ошибка при добавлении в очередь отправки на биржу заявки с id " + rowId.ToString() + "." + e.Message + e.HelpLink + " " + e.TargetSite + " " + e.Data); res = false; } } } catch (Exception ee) { this.parent.parent.logMsg("Opt Expiration (Reader): Ошибка при добавлении в очередь отправки на биржу заявки ." + ee.Message + ee.HelpLink + " " + ee.TargetSite + " " + ee.Data); res = false; } } } rd.Close(); } catch (Exception e) { this.parent.parent.logMsg("Opt Expiration: Ошибка выборки заявок для добавлениия в очередь отправки." + e.Message + e.HelpLink + " " + e.TargetSite + " " + e.Data); res = false; } return res; }