Example #1
0
        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();
                }
            }*/
        }
Example #2
0
        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];
        }