public void SendOrder(long id) { string query = String.Format(@"SELECT FIRST 1 SKIP 0 DISTINCT * FROM DLV_ORDERS o INNER JOIN DLV_RESTAURANTS rest ON o.RESTAURANT_ID = rest.RESTAURANT_ID INNER JOIN DLV_ADDRESSES addr ON o.ADDRESS_ID = addr.ADDRESS_ID INNER JOIN DLV_STREETS s ON addr.STREET_ID = s.STREET_ID INNER JOIN DLV_TOWNS t ON s.TOWN_ID = t.TOWN_ID INNER JOIN dlv_clients c ON o.guest_id = c.client_id INNER JOIN dlv_client_phones p ON o.guest_id = p.client_id WHERE o.WORK_TIME >= '{0}' AND o.DLV_TYPE = 0 AND o.STATUS IN (1, 2) AND o.ORDER_ID NOT IN (SELECT DISTINCT ORDER_ID FROM BRINGO_DLV) AND o.RESTAURANT_ID IN ({1}) AND o.order_id = {2}", DateTime.Today.ToShortDateString(), RestIDs, id); FbConnection con = new FbConnection(connectionString); FbCommand cmd = new FbCommand(query, con); con.Open(); FbDataReader rdr = cmd.ExecuteReader(); foreach (var r in rdr) { long order_id = Convert.ToInt64(rdr["ORDER_ID"]); string RK7GUID = rdr["RK7GUID"].ToString(); string adv_info = ""; if (rdr["adv_info"] != DBNull.Value) adv_info = Encoding.GetEncoding(1251).GetString((byte[])rdr["adv_info"]); Restaurant rest = rests.Find(p => p.id == Convert.ToInt64(rdr["RESTAURANT_ID"])); _DeliveryOrder delivery = new _DeliveryOrder(); delivery.delivery.order_id = order_id; delivery.delivery.external_id = RK7GUID; delivery.delivery.title = "Заказ " + order_id.ToString() + ". Токио Доставка. (" + rdr["ORDER_NUM"] + ")"; delivery.delivery.description = adv_info; delivery.delivery.value = Convert.ToDecimal(rdr["SUMM_WCD"]); delivery.delivery.weight = 1; delivery.delivery.tds_pay_type = (int)TdsPayType.Payed; delivery.delivery.partial_buy_out = 0; //delivery.delivery.goods_price_transit = Convert.ToDecimal(rdr["SUMM_WCD"]); delivery.delivery.client_price = 0; delivery.delivery.content_pay_type = (int)ContentPayType.Recipient; delivery.delivery.pay_type = (int)PayType.Account; delivery.delivery.is_draft = false; delivery.delivery.calculate_pup = 0; //Отправитель delivery.points[0].name = rdr["RESTAURANT_NAME"].ToString(); delivery.points[0].order = 1; delivery.points[0].phone_number = rest.phone; delivery.points[0].description = rdr["RESTAURANT_NAME"].ToString(); delivery.points[0].address.address_string = rest.Address; delivery.points[0].time.start_utc = (Int32)(((DateTime)rdr["work_time"]).AddHours(-10).AddMinutes(15).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; delivery.points[0].time.end_utc = (Int32)(((DateTime)rdr["work_time"]).AddHours(-10).AddMinutes(60).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; //Получатель delivery.points[1].name = rdr["F_NAME"].ToString(); delivery.points[1].order = 2; //Номер телефона полный! delivery.points[1].phone_number = "+7" + rdr["phone_number"].ToString(); delivery.points[1].description = adv_info + " \r\n, кв " + rdr["FLAT"]; delivery.points[1].address.address_string = "000000, г " + rdr["TOWN_NAME"].ToString() + ", " + rdr["STREET_NAME"].ToString() + ", д " + rdr["HOUSE"].ToString(); delivery.points[1].time.start_utc = (Int32)(((DateTime)rdr["work_time"]).AddHours(-10).AddMinutes(60).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; delivery.points[1].time.end_utc = (Int32)(((DateTime)rdr["work_time"]).AddHours(-10).AddMinutes(90).Subtract(new DateTime(1970, 1, 1))).TotalSeconds; //_DeliveryOrderResponse response = BatchCreate(delivery); _DeliveryOrderResponse response = new _DeliveryOrderResponse(); response.success = new _DeliveryOrderResponse.Success(); response.success.id = 1234568; response.success.status_id = 20; Orders.Add(new OrderInfo() { Order = delivery, Response = response }); } rdr.Close(); con.Close(); /*for (int i = 0; i < Orders.Count; i++) { if (Orders[i].Response != null && Orders[i].Response.success != null) { string q = "INSERT INTO BRINGO_DLV VALUES(" + Orders[i].Order.delivery.order_id + ", " + Orders[i].Response.success.id.ToString() + ", '" + Orders[i].Response.external_id + "', null)"; FbCommand com = new FbCommand(q, con); con.Open(); com.ExecuteNonQuery(); con.Close(); } else { string q = "INSERT INTO BRINGO_DLV VALUES(" + Orders[i].Order.delivery.order_id + ", null, '" + Orders[i].Order.delivery.external_id + "', '" + Orders[i].Response.errors.message + "')"; FbCommand com = new FbCommand(q, con); con.Open(); com.ExecuteNonQuery(); con.Close(); } }*/ }
public _DeliveryOrderResponse BatchCreate(_DeliveryOrder delivery) { _DeliveryOrderResponse[] response = new _DeliveryOrderResponse[1]; string action = WebConfigurationManager.AppSettings["CreateAction"].ToString(); MemoryStream stream1 = new MemoryStream(); DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(_DeliveryOrder)); ser.WriteObject(stream1, delivery); stream1.Position = 0; StreamReader sr = new StreamReader(stream1); string s = sr.ReadToEnd(); if (action == "delivery/batch-create") { s = "[" + s + "]"; } var result = POST(s, action); s = result.Content.ReadAsStringAsync().Result; if (action == "delivery/batch-create") { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(_DeliveryOrderResponse[])); MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(s)); response = (_DeliveryOrderResponse[])serializer.ReadObject(stream); } else { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(_DeliveryOrderResponse)); MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(s)); response[0] = (_DeliveryOrderResponse)serializer.ReadObject(stream); } return response[0]; }