Esempio n. 1
0
        public async Task <string> InsertItemAsync(ShipperVM oShipper)
        {
            string rc = "";

            try
            {
                string sUrl     = urlServer + "/api/Shipper/Insert";
                string jsonData = JsonSerializer.Serialize <ShipperVM>(oShipper);

                HttpClient          http     = new HttpClient();
                HttpContent         content  = new StringContent(jsonData, Encoding.UTF8, "application/json");
                HttpResponseMessage response = await http.PostAsync(sUrl, content);

                if (response.IsSuccessStatusCode)
                {
                    string jRlt = await response.Content.ReadAsStringAsync();

                    JsonRltInfo oRlt = JsonSerializer.Deserialize <JsonRltInfo>(jRlt);
                    if (oRlt.rltCode == 0)
                    {
                        rc = oRlt.rltMsg;
                    }
                    else
                    {
                        throw new Exception(oRlt.rltMsg);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return(rc);
        }
        public ActionResult UpdateShipper(int id)
        {
            ShipperVM svm = new ShipperVM
            {
                Shipper = sRep.Find(id)
            };

            return(View(svm));
        }
        public ActionResult ShipperList(int?page, int?shipperID)
        {
            ShipperVM svm = new ShipperVM
            {
                PagedOrders = shipperID == null?oRep.GetAll().ToPagedList(page ?? 1, 15) : oRep.Where(x => x.ShipperID == shipperID).ToPagedList(page ?? 1, 15),
                                  Shippers = sRep.GetAll()
            };

            if (shipperID != null)
            {
                TempData["shipID"] = shipperID;
            }
            return(View(svm));
        }
Esempio n. 4
0
        public IActionResult GetAllShippers()
        {
            IEnumerable <Shipper> shippers = _unitOfWork.ShipperRepository.Get();

            if (shippers == null)
            {
                return(NotFound());
            }
            List <ShipperVM> shippersVM = new List <ShipperVM>();

            foreach (var shipper in shippers)
            {
                ShipperVM shipperVM = _mapper.Map <ShipperVM>(shipper);
                shippersVM.Add(shipperVM);
            }
            return(Ok(shippers));
        }
Esempio n. 5
0
        public ActionResult UpdateShipper(ShipperVM model)
        {
            var _shipper = _shipperService.GetShipper(model.Id);

            if (_shipper == null)
            {
                return(NotFound());
            }
            if (_shipperService.GetShippers(s => s.Phone == model.Phone).Count() > 0)
            {
                return(BadRequest("Phone Number Has Been Exist"));
            }
            Shipper newShipper = model.Adapt(_shipper);

            _shipperService.UpdateShipper(newShipper);
            _shipperService.Save();
            return(Ok(201));
        }
Esempio n. 6
0
        public async Task <ShipperVM> GetShipperAsync(int ShipperID)
        {
            ShipperVM oShipper = new ShipperVM();

            try
            {
                HttpClient client = new HttpClient();
                string     sUrl   = urlServer + "/api/Shipper/" + ShipperID.ToString();;

                HttpResponseMessage response = await client.GetAsync(sUrl);

                string jData = await response.Content.ReadAsStringAsync();

                oShipper = JsonSerializer.Deserialize <ShipperVM>(jData);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return(oShipper);
        }
Esempio n. 7
0
        public IHttpActionResult Get(string query, string transaction_info, string order_code, string price, string payment_id, string payment_type, string error_text, string secure_code, [FromUri] double longtitude, [FromUri] double latitude, string id_shipper = null)
        {
            //Get URL from Ngan luong
            //var uri = new Uri(url);
            //var query = HttpUtility.ParseQueryString(uri.Query);
            //var transaction_info = query.Get("transaction_info");
            //var order_code = query.Get("order_code");
            //var price = query.Get("price");
            //var payment_id = query.Get("payment_id");
            //var payment_type = query.Get("payment_type");
            //var error_text = query.Get("error_text");
            //var secure_code = query.Get("secure_code");
            //var return_url = query.Get("return_url");

            //Customer from order
            var customer = _context.Orders.Select(x => x.Account);

            //Shipper from order
            var shipper = _context.Orders.Select(x => x.Account1);

            //order từ order_code
            var order_fcm = _context.Orders.Find(order_code);


            try
            {
                NL_Checkout checkOut = new NL_Checkout();
                bool        rs       = checkOut.verifyPaymentUrl(transaction_info, order_code, price, payment_id, payment_type, error_text, secure_code);
                byte[]      buffer   = Guid.NewGuid().ToByteArray();
                var         trans_id = BitConverter.ToInt64(buffer, 0).ToString();
                rs = true;
                #region rs:OK Shipper:tìm thấy
                if (rs)
                {
                    _context.Transactions.Add(new Transaction
                    {
                        id_transaction = trans_id,
                        id_order       = order_code,
                        money          = double.Parse(price),
                        created_time   = DateTime.Today
                    });
                    _context.SaveChanges();
                    try
                    {
                        var sCoord  = new GeoCoordinate(latitude, longtitude);
                        var address = _context.Accounts.AsEnumerable().Where(x => x.id_role == "1").Select(x => new ShipperVM
                        {
                            id          = x.id_account,
                            username    = x.username,
                            lat         = x.GroupAddress.Addresses.FirstOrDefault().lat,
                            @long       = x.GroupAddress.Addresses.FirstOrDefault().@long,
                            levels      = x.Levels.Select(xx => xx.point).FirstOrDefault(),
                            fcm_token   = x.fcm_token,
                            id_order    = order_code,
                            getDistance = sCoord.GetDistanceTo(new GeoCoordinate(x.GroupAddress.Addresses.FirstOrDefault().lat ?? 0, x.GroupAddress.Addresses.FirstOrDefault().@long ?? 0))
                        }).ToList().OrderBy(x => x.getDistance);

                        var list  = new List <ShipperVM>();
                        var list1 = new List <ShipperVM>();
                        var list2 = new List <ShipperVM>();
                        foreach (var item in address)
                        {
                            if (item.getDistance <= 3000)
                            {
                                list.Add(item);
                            }
                        }

                        foreach (var item in list.OrderBy(x => x.levels).Take(5))
                        {
                            list1.Add(item);
                        }
                        list1.Reverse();

                        if (list.Count == 0)
                        {
                            WebRequest ftRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
                            ftRequest.Method = "post";
                            //serverKey - Key from Firebase cloud messaging server
                            ftRequest.Headers.Add(string.Format("Authorization: key={0}", "AIzaSyDN6yImcd7eWPRiN86cn1C7iecVNaF945M"));
                            //Sender Id - From firebase project setting
                            ftRequest.Headers.Add(string.Format("Sender: id={0}", "462404511537"));
                            ftRequest.ContentType = "application/json";

                            var fcm_ss = "eg8nUQs-lbQ:APA91bHPgVKmMy8d0vnpt-u0UMJPivSvU9kaGPyttY1-ZP-gcu6qkt7VuJ9MG-uDPOPCIkDxpgWJ0TfdP_axotwn-mZEcBOpkEXpn1QfD_HeueUMt-myWeS3ZATw_R11s5D2-N83Sq6U";

                            Account _customer = _context.Accounts.Find(order_fcm.id_customer);
                            fcm_ss = _context.Accounts.AsEnumerable().Where(x => x.id_role == "2" && x.id_account == _customer.id_account).Select(x => x.fcm_token).FirstOrDefault();
                            var payload2 = new
                            {
                                //to = customer.Select(x => x.fcm_token).FirstOrDefault().ToString(),
                                to                = fcm_ss,
                                priority          = "high",
                                content_available = true,
                                notification      = new
                                {
                                    body  = "Không tìm thấy Shipper gần Market!",
                                    title = "Test",
                                    badge = 1
                                },
                            };

                            string postbody2  = JsonConvert.SerializeObject(payload2).ToString();
                            Byte[] byteArray2 = Encoding.UTF8.GetBytes(postbody2);
                            ftRequest.ContentLength = byteArray2.Length;
                            using (Stream dataStream = ftRequest.GetRequestStream())
                            {
                                dataStream.Write(byteArray2, 0, byteArray2.Length);
                                using (WebResponse tResponse = ftRequest.GetResponse())
                                {
                                    using (Stream dataStreamResponse = tResponse.GetResponseStream())
                                    {
                                        if (dataStreamResponse != null)
                                        {
                                            using (StreamReader tReader = new StreamReader(dataStreamResponse))
                                            {
                                                String sResponseFromServer = tReader.ReadToEnd();
                                                //result.Response = sResponseFromServer;
                                            }
                                        }
                                    }
                                }
                            }
                            return(NotFound());
                        }


                        WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
                        tRequest.Method = "post";
                        //serverKey - Key from Firebase cloud messaging server
                        tRequest.Headers.Add(string.Format("Authorization: key={0}", "AIzaSyDN6yImcd7eWPRiN86cn1C7iecVNaF945M"));
                        //Sender Id - From firebase project setting
                        tRequest.Headers.Add(string.Format("Sender: id={0}", "462404511537"));
                        tRequest.ContentType = "application/json";



                        var fcm_s = "eg8nUQs-lbQ:APA91bHPgVKmMy8d0vnpt-u0UMJPivSvU9kaGPyttY1-ZP-gcu6qkt7VuJ9MG-uDPOPCIkDxpgWJ0TfdP_axotwn-mZEcBOpkEXpn1QfD_HeueUMt-myWeS3ZATw_R11s5D2-N83Sq6U";

                        ShipperVM shipperr = list1.First();
                        fcm_s = _context.Accounts.AsEnumerable().Where(x => x.id_role == "1" && x.id_account == shipperr.id).Select(x => x.fcm_token).FirstOrDefault();

                        var payload = new
                        {
                            //Bỏ vô để test cho vui chứ chưa có FCM token nó trả ra lỗi BAD request(400) từ firebase server
                            to                = "eg8nUQs-lbQ:APA91bHPgVKmMy8d0vnpt-u0UMJPivSvU9kaGPyttY1-ZP-gcu6qkt7VuJ9MG-uDPOPCIkDxpgWJ0TfdP_axotwn-mZEcBOpkEXpn1QfD_HeueUMt-myWeS3ZATw_R11s5D2-N83Sq6U",
                            priority          = "high",
                            content_available = true,
                            notification      = new
                            {
                                body  = "Bạn có một đơn hàng!",
                                title = "Test",
                                badge = 1
                            },
                        };

                        string postbody  = JsonConvert.SerializeObject(payload).ToString();
                        Byte[] byteArray = Encoding.UTF8.GetBytes(postbody);
                        tRequest.ContentLength = byteArray.Length;
                        using (Stream dataStream = tRequest.GetRequestStream())
                        {
                            dataStream.Write(byteArray, 0, byteArray.Length);
                            using (WebResponse tResponse = tRequest.GetResponse())
                            {
                                using (Stream dataStreamResponse = tResponse.GetResponseStream())
                                {
                                    if (dataStreamResponse != null)
                                    {
                                        using (StreamReader tReader = new StreamReader(dataStreamResponse))
                                        {
                                            String sResponseFromServer = tReader.ReadToEnd();
                                            //result.Response = sResponseFromServer;
                                        }
                                    }
                                }
                            }
                        }

                        if (list1.Count > 0)
                        {
                            order_fcm.id_shipper = list1.First().id;
                            _context.SaveChanges();
                            return(Ok(list1));
                        }
                        #endregion

                        #region rs:OK Shipper: không tìm thấy

                        return(NotFound());
                    }
                    catch (Exception ex)
                    {
                        return(InternalServerError(ex));
                    }
                }

                #endregion

                #region rs:không thành công
                else
                {
                    WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
                    tRequest.Method = "post";
                    //serverKey - Key from Firebase cloud messaging server
                    tRequest.Headers.Add(string.Format("Authorization: key={0}", "AIzaSyDN6yImcd7eWPRiN86cn1C7iecVNaF945M"));
                    //Sender Id - From firebase project setting
                    tRequest.Headers.Add(string.Format("Sender: id={0}", "462404511537"));
                    tRequest.ContentType = "application/json";

                    var fcm_ss = "eg8nUQs-lbQ:APA91bHPgVKmMy8d0vnpt-u0UMJPivSvU9kaGPyttY1-ZP-gcu6qkt7VuJ9MG-uDPOPCIkDxpgWJ0TfdP_axotwn-mZEcBOpkEXpn1QfD_HeueUMt-myWeS3ZATw_R11s5D2-N83Sq6U";

                    Account _customer = _context.Accounts.FirstOrDefault(x => x.id_account == order_fcm.id_customer);
                    fcm_ss = _context.Accounts.AsEnumerable().Where(x => x.id_role == "2" && x.id_account == _customer.id_account).Select(x => x.fcm_token).FirstOrDefault();

                    var payload3 = new
                    {
                        // to
                        to                = fcm_ss,
                        priority          = "high",
                        content_available = true,
                        notification      = new
                        {
                            body  = "Giao dịch thất bại!",
                            title = "Test",
                            badge = 1
                        },
                    };

                    string postbody3  = JsonConvert.SerializeObject(payload3).ToString();
                    Byte[] byteArray3 = Encoding.UTF8.GetBytes(postbody3);
                    tRequest.ContentLength = byteArray3.Length;
                    using (Stream dataStream = tRequest.GetRequestStream())
                    {
                        dataStream.Write(byteArray3, 0, byteArray3.Length);
                        using (WebResponse tResponse = tRequest.GetResponse())
                        {
                            using (Stream dataStreamResponse = tResponse.GetResponseStream())
                            {
                                if (dataStreamResponse != null)
                                {
                                    using (StreamReader tReader = new StreamReader(dataStreamResponse))
                                    {
                                        String sResponseFromServer = tReader.ReadToEnd();
                                        //result.Response = sResponseFromServer;
                                    }
                                }
                            }
                        }
                    }
                    return(NotFound());
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }

            #endregion
        }
Esempio n. 8
0
        public async System.Threading.Tasks.Task <IHttpActionResult> GetAsync(int count, [FromUri] double latitude, [FromUri] double longtitude, string id_order, string id_shipper)
        {
            var accoutShipper = _context.Accounts.Find(id_shipper);

            accoutShipper.state      = 0;
            accoutShipper.isSelected = 0;
            _context.SaveChanges();
            count += 1;
            if (count == 3)
            {
                HubConnection hubConnection = new HubConnection("http://localhost:44333");

                IHubProxy hubProxy = hubConnection.CreateHubProxy("NotifyHub");

                var __order     = _context.Orders.Find(id_order);
                var json_object = new
                {
                    msg      = "Không tìm thấy Shipper!",
                    id_order = id_order,
                };

                JavaScriptSerializer serializer = new JavaScriptSerializer();
                var     Json_str         = serializer.Serialize(json_object);
                string  msg              = Json_str;
                Account _customer        = _context.Accounts.Find(__order.id_customer);
                var     connectionID_cus = _customer.connection_id;
                await hubConnection.Start();

                var change        = hubConnection.State;
                var connection_id = hubConnection.ConnectionId;
                await hubProxy.Invoke("NotifyCustomer", connectionID_cus, msg);

                return(NotFound());
            }
            try
            {
                //var order = _context.Orders.Find(id_order);
                var          sCoord            = new GeoCoordinate(latitude, longtitude);
                List <Order> list_order_true   = new List <Order>();
                var          order_has_shipper = _context.Orders.Where(x => x.id_shipper != null).ToList();
                foreach (var item in order_has_shipper)
                {
                    if (CheckShipper_has_Order(item.id_order, id_order, latitude, longtitude) == true)
                    {
                        list_order_true.Add(item);
                    }
                }

                var list_shipper_has_order_true = new List <ShipperVM>();
                foreach (var item in list_order_true)
                {
                    list_shipper_has_order_true = _context.Accounts.AsEnumerable().Where(x => x.id_account == item.id_shipper && x.isSelected == 0 && x.connection_id != "0" && x.state == 0).Select(x => new ShipperVM
                    {
                        id        = x.id_account,
                        username  = x.username,
                        lat       = x.GroupAddress.Addresses.FirstOrDefault().lat,
                        @long     = x.GroupAddress.Addresses.FirstOrDefault().@long,
                        levels    = x.Levels.Select(xx => xx.point).FirstOrDefault(),
                        fcm_token = x.fcm_token,
                    }).ToList();
                }

                var list_shipper_has_order = list_shipper_has_order_true.GroupBy(x => x.id).Select(y => y.First());

                var address = _context.Accounts.AsEnumerable().Where(x => x.id_role == "1" && x.isSelected == 0 && x.connection_id != "0" && x.state == 0).Select(x => new ShipperVM
                {
                    id          = x.id_account,
                    username    = x.username,
                    lat         = x.GroupAddress.Addresses.FirstOrDefault().lat,
                    @long       = x.GroupAddress.Addresses.FirstOrDefault().@long,
                    levels      = x.Levels.Select(xx => xx.point).FirstOrDefault(),
                    fcm_token   = x.fcm_token,
                    id_order    = id_order,
                    getDistance = sCoord.GetDistanceTo(new GeoCoordinate(x.GroupAddress.Addresses.FirstOrDefault().lat ?? 0, x.GroupAddress.Addresses.FirstOrDefault().@long ?? 0))
                }).ToList().OrderBy(x => x.getDistance);

                var list  = new List <ShipperVM>();
                var list1 = new List <ShipperVM>();
                var list2 = new List <ShipperVM>();
                foreach (var item in address)
                {
                    if (item.getDistance <= 10000)
                    {
                        list.Add(item);
                    }
                }

                foreach (var item in list_shipper_has_order)
                {
                    if (list.Contains(item) != true)
                    {
                        list.Add(item);
                    }
                }

                foreach (var item in list.OrderBy(x => x.levels).Take(5))
                {
                    list1.Add(item);
                }


                if (id_shipper != null)
                {
                    var temp = list1.FirstOrDefault(x => x.id == id_shipper);
                    if (temp != null)
                    {
                        list1.Remove(temp);
                    }
                }



                //if (id_shipper != null)
                //{
                //    var s = _context.Accounts.FirstOrDefault(x => x.id_account == id_shipper);
                //    var _shipper = new ShipperVM
                //    {
                //        id = s.id_account,
                //        username = s.username,
                //        lat = s.GroupAddress.Addresses.FirstOrDefault().lat,
                //        @long = s.GroupAddress.Addresses.FirstOrDefault().@long,
                //        id_order = id_order,
                //        levels = s.Levels.FirstOrDefault().point,
                //        getDistance = sCoord.GetDistanceTo(new GeoCoordinate(s.GroupAddress.Addresses.FirstOrDefault().@long ?? 0, s.GroupAddress.Addresses.FirstOrDefault().lat ?? 0))
                //    };

                //}
                if (list1.Count == 0)
                {
                    var           orrder        = _context.Orders.Find(id_order);
                    HubConnection hubConnection = new HubConnection("http://localhost:44333");

                    IHubProxy hubProxy = hubConnection.CreateHubProxy("NotifyHub");


                    var json_object = new
                    {
                        msg      = "Không tìm thấy Shipper!",
                        id_order = id_order,
                    };

                    JavaScriptSerializer serializer = new JavaScriptSerializer();
                    var     Json_str         = serializer.Serialize(json_object);
                    string  msg              = Json_str;
                    Account _customer        = _context.Accounts.Find(orrder.id_customer);
                    var     connectionID_cus = _customer.connection_id;
                    await hubConnection.Start();

                    var change        = hubConnection.State;
                    var connection_id = hubConnection.ConnectionId;
                    await hubProxy.Invoke("NotifyCustomer", connectionID_cus, msg);
                }
                else
                {
                    list1.Reverse();
                    HubConnection hubConnection = new HubConnection("http://localhost:44333");

                    IHubProxy hubProxy = hubConnection.CreateHubProxy("NotifyHub");

                    string msg = "Bạn có một đơn hàng!";

                    ShipperVM shipper = list1.First();
                    var       connectionID_shipper = _context.Accounts.AsEnumerable().Where(x => x.id_role == "1" && x.id_account == shipper.id).Select(x => x.connection_id).FirstOrDefault();
                    await hubConnection.Start();

                    var change        = hubConnection.State;
                    var connection_id = hubConnection.ConnectionId;
                    //while (hubConnection.ConnectionId == "" || hubConnection.ConnectionId == null) { }
                    //var conn_id = hubProxy.Invoke("getConnectionId");
                    await hubProxy.Invoke("NotifyShipper", connectionID_shipper, id_order, count, msg, shipper.id, latitude, longtitude);


                    //WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
                    //tRequest.Method = "post";
                    ////serverKey - Key from Firebase cloud messaging server
                    //tRequest.Headers.Add(string.Format("Authorization: key={0}", "AIzaSyDN6yImcd7eWPRiN86cn1C7iecVNaF945M"));
                    ////Sender Id - From firebase project setting
                    //tRequest.Headers.Add(string.Format("Sender: id={0}", "462404511537"));
                    //tRequest.ContentType = "application/json";


                    //var fcm_s = "eg8nUQs-lbQ:APA91bHPgVKmMy8d0vnpt-u0UMJPivSvU9kaGPyttY1-ZP-gcu6qkt7VuJ9MG-uDPOPCIkDxpgWJ0TfdP_axotwn-mZEcBOpkEXpn1QfD_HeueUMt-myWeS3ZATw_R11s5D2-N83Sq6U";

                    //ShipperVM shipper = list1.First();

                    //fcm_s = _context.Accounts.AsEnumerable().Where(x => x.id_role == "1" && x.id_account == shipper.id).Select(x => x.fcm_token).FirstOrDefault();
                    //var payload = new
                    //{
                    //    to = fcm_s,
                    //    priority = "high",
                    //    content_available = true,
                    //    notification = new
                    //    {
                    //        body = "Test",
                    //        title = "Test",
                    //        badge = 1
                    //    },

                    //};

                    //string postbody = JsonConvert.SerializeObject(payload).ToString();
                    //Byte[] byteArray = Encoding.UTF8.GetBytes(postbody);
                    //tRequest.ContentLength = byteArray.Length;
                    //using (Stream dataStream = tRequest.GetRequestStream())
                    //{
                    //    dataStream.Write(byteArray, 0, byteArray.Length);
                    //    using (WebResponse tResponse = tRequest.GetResponse())
                    //    {
                    //        using (Stream dataStreamResponse = tResponse.GetResponseStream())
                    //        {
                    //            if (dataStreamResponse != null) using (StreamReader tReader = new StreamReader(dataStreamResponse))
                    //                {
                    //                    String sResponseFromServer = tReader.ReadToEnd();
                    //                    //result.Response = sResponseFromServer;
                    //                }
                    //        }
                    //    }
                    //}
                    var a = "OK";
                    return(Ok(a));
                }

                return(NotFound());
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Esempio n. 9
0
        public async System.Threading.Tasks.Task <IHttpActionResult> GetAsync(string created_at, string id, string mrc_order_id, string stat, string total_amount, string txn_id, string updated_at, string checksum)
        {
            Redirect("smarket://market/");
            //if(stat=="p")
            //{
            //    return Redirect("smarket://market");
            //}
            //Customer from order
            var customer = _context.Orders.Select(x => x.Account);

            ////Shipper from order
            //var shipper = _context.Orders.Select(x => x.Account1);

            //order từ order_code
            var order_fcm = _context.Orders.Find(mrc_order_id);

            var    __order     = _context.Orders.Find(mrc_order_id);
            double latitude    = _context.Addresses.Find(__order.id_address).lat ?? 0;
            double longtitude  = _context.Addresses.Find(__order.id_address).@long ?? 0;
            var    order_total = __order.total_amount ?? 0;

            try
            {
                Redirect("smarket://market/");
                JWTManagement checkOut = new JWTManagement();
                bool          rs       = checkOut.verifyPaymentUrl(id, mrc_order_id, txn_id, total_amount, stat, created_at, updated_at, checksum);
                byte[]        buffer   = Guid.NewGuid().ToByteArray();
                var           trans_id = BitConverter.ToInt64(buffer, 0).ToString();
                //rs = true;
                //if(order_total != double.Parse(total_amount))
                //{
                //    rs = false;
                //    //Notify Customer
                //    Console.WriteLine("false");
                //    HubConnection hubConnection = new HubConnection("https://localhost:44333");

                //    IHubProxy hubProxy = hubConnection.CreateHubProxy("NotifyHub");


                //    string msg = "Thanh toán thất bại!";
                //    int count = 1;
                //    Account _customer = _context.Accounts.Find(__order.id_customer);
                //    var connectionID_cus = _customer.connection_id;
                //    await hubConnection.Start();

                //    var change = hubConnection.State;
                //    var connection_id = hubConnection.ConnectionId;
                //    await hubProxy.Invoke("NotifyCustomer", connectionID_cus, msg);

                //    return Redirect("smarket://market");

                //}
                //rs = true;
                if (rs == true)
                {
                    //HubConnection hubConnection = new HubConnection("https://localhost:44333");

                    //IHubProxy hubProxy = hubConnection.CreateHubProxy("NotifyHub");
                    //var json_object = new
                    //{
                    //    msg = "Thanh toán thành công!",
                    //    id_order = mrc_order_id,
                    //};

                    //JavaScriptSerializer serializer = new JavaScriptSerializer();
                    //var Json_str  = serializer.Serialize(json_object);


                    //string msg = Json_str;
                    //Account _customer = _context.Accounts.Find(__order.id_customer);
                    //var connectionID_cus = _customer.connection_id;
                    //await hubConnection.Start();

                    //var change = hubConnection.State;
                    //var connection_id = hubConnection.ConnectionId;

                    //await hubProxy.Invoke("NotifyCustomer", connectionID_cus, msg);

                    Redirect("smarket://market/" + mrc_order_id);
                }

                if (rs == false)
                {
                    Console.WriteLine("false");
                    HubConnection hubConnection = new HubConnection("http://localhost:44333");

                    IHubProxy hubProxy = hubConnection.CreateHubProxy("NotifyHub");

                    var json_object = new
                    {
                        msg      = "Thanh toán thất bại!",
                        id_order = mrc_order_id,
                    };

                    JavaScriptSerializer serializer = new JavaScriptSerializer();
                    var    Json_str = serializer.Serialize(json_object);
                    string msg      = Json_str;

                    Account _customer        = _context.Accounts.Find(__order.id_customer);
                    var     connectionID_cus = _customer.connection_id;
                    await hubConnection.Start();

                    var change        = hubConnection.State;
                    var connection_id = hubConnection.ConnectionId;
                    await hubProxy.Invoke("NotifyCustomer", connectionID_cus, msg);

                    return(Redirect("smarket://market/" + mrc_order_id));
                }


                __order.state = 1;
                _context.Transactions.Add(new Transaction
                {
                    id_transaction = trans_id,
                    id_order       = mrc_order_id,
                    money          = double.Parse(total_amount),
                    created_time   = DateTime.Now
                });
                _context.SaveChanges();



                //var order = _context.Orders.Find(id_order);
                var          sCoord          = new GeoCoordinate(latitude, longtitude);
                List <Order> list_order_true = new List <Order>();

                var order_has_shipper = _context.Orders.Where(x => x.id_shipper != null).ToList();
                foreach (var item in order_has_shipper)
                {
                    var id_or = item.id_order;
                    if (CheckShipper_has_Order(id_or, mrc_order_id, latitude, longtitude) == true)
                    {
                        list_order_true.Add(item);
                    }
                }

                var list_id_shipper_in_order = order_has_shipper.Select(x => x.id_shipper).ToList();

                var _shipper = new List <ShipperVM>();
                foreach (var item in list_order_true)
                {
                    _shipper = _context.Accounts.AsEnumerable().Where(x => x.id_account == item.id_shipper && x.isSelected == 0 && x.connection_id != "0" && x.state == 0).Select(x => new ShipperVM

                    {
                        id          = x.id_account,
                        username    = x.username,
                        lat         = x.GroupAddress.Addresses.FirstOrDefault().lat,
                        @long       = x.GroupAddress.Addresses.FirstOrDefault().@long,
                        levels      = x.Levels.Select(xx => xx.point).FirstOrDefault(),
                        fcm_token   = x.fcm_token,
                        isSelected  = x.isSelected ?? 0,
                        getDistance = sCoord.GetDistanceTo(new GeoCoordinate(x.GroupAddress.Addresses.FirstOrDefault().lat ?? 0, x.GroupAddress.Addresses.FirstOrDefault().@long ?? 0))
                    }).ToList();
                }

                var list_shipper_has_order = _shipper.GroupBy(x => x.id).Select(y => y.First());
                var list_shipper_no_order  = _context.Accounts.AsEnumerable().Where(x => x.id_role == "1" && x.isSelected == 0 && x.connection_id != "0" && x.state == 0).Select(x => new ShipperVM
                {
                    id          = x.id_account,
                    username    = x.username,
                    lat         = x.GroupAddress.Addresses.FirstOrDefault().lat,
                    @long       = x.GroupAddress.Addresses.FirstOrDefault().@long,
                    levels      = x.Levels.Select(xx => xx.point).FirstOrDefault(),
                    fcm_token   = x.fcm_token,
                    id_order    = mrc_order_id,
                    isSelected  = x.isSelected ?? 0,
                    getDistance = sCoord.GetDistanceTo(new GeoCoordinate(x.GroupAddress.Addresses.FirstOrDefault().lat ?? 0, x.GroupAddress.Addresses.FirstOrDefault().@long ?? 0))
                }).ToList() ?? null;
                //if (_shipper.Count > 0)
                //{
                //    foreach (var item in list_shipper_no_order.AsEnumerable())
                //    {
                //        foreach (var item1 in _shipper)
                //        {
                //            if (item.id == item1.id && list_id_shipper_in_order.Count >0)
                //            {
                //                list_shipper_no_order.Remove(item);
                //            }
                //        }
                //    }
                //}



                //var address = _context.Accounts.AsEnumerable().Where(x => x.id_role == "1" && x.isSelected != 0).Select(x => new ShipperVM
                //{
                //    id = x.id_account,
                //    username = x.username,
                //    lat = x.GroupAddress.Addresses.FirstOrDefault().lat,
                //    @long = x.GroupAddress.Addresses.FirstOrDefault().@long,
                //    levels = x.Levels.Select(xx => xx.point).FirstOrDefault(),
                //    fcm_token = x.fcm_token,
                //    id_order = mrc_order_id,
                //    getDistance = sCoord.GetDistanceTo(new GeoCoordinate(x.GroupAddress.Addresses.FirstOrDefault().lat ?? 0, x.GroupAddress.Addresses.FirstOrDefault().@long ?? 0))
                //}).ToList().OrderBy(x => x.getDistance);

                var list  = new List <ShipperVM>();
                var list1 = new List <ShipperVM>();
                var list2 = new List <ShipperVM>();


                foreach (var item in list_shipper_no_order)
                {
                    if (item.getDistance <= 10000)
                    {
                        list.Add(item);
                    }
                }

                foreach (var item in list_shipper_has_order)
                {
                    if (!list.Any(s => s.id == item.id))
                    {
                        list.Add(item);
                    }
                }


                foreach (var item in list.OrderBy(x => x.levels).Reverse().Take(5))
                {
                    list1.Add(item);
                }
                //if(id_shipper != null)
                //{
                //    var temp = list1.FirstOrDefault(x => x.id == id_shipper);
                //    if (temp != null)
                //    {
                //        list1.Remove(temp);
                //    }
                //}


                if (list1.Count == 0)
                {
                    //Redirect("smarket://market");

                    Console.WriteLine("false");
                    HubConnection hubConnection = new HubConnection("https://localhost:44333");

                    IHubProxy hubProxy = hubConnection.CreateHubProxy("NotifyHub");


                    var json_object = new
                    {
                        msg      = "Không tìm thấy shipper",
                        id_order = mrc_order_id,
                    };

                    JavaScriptSerializer serializer = new JavaScriptSerializer();
                    var     Json_str         = serializer.Serialize(json_object);
                    string  msg              = Json_str;
                    Account _customer        = _context.Accounts.Find(__order.id_customer);
                    var     connectionID_cus = _customer.connection_id;
                    await hubConnection.Start();

                    var change        = hubConnection.State;
                    var connection_id = hubConnection.ConnectionId;
                    await hubProxy.Invoke("NotifyCustomer", connectionID_cus, msg);

                    return(Redirect("smarket://market/" + mrc_order_id));
                }
                else
                {
                    var accoutShipper = _context.Accounts.Find(list1.First().id);
                    accoutShipper.isSelected = 1;
                    _context.SaveChanges();
                    //list1.Reverse();
                    HubConnection hubConnection = new HubConnection("https://localhost:44333");
                    IHubProxy     hubProxy      = hubConnection.CreateHubProxy("NotifyHub");

                    string    msg                  = "Bạn có một đơn hàng!";
                    int       count                = 1;
                    ShipperVM shipper_             = list1.First();
                    var       connectionID_shipper = _context.Accounts.Where(x => x.id_role == "1" && x.id_account == shipper_.id).Select(x => x.connection_id).FirstOrDefault();
                    await hubConnection.Start();

                    var change        = hubConnection.State;
                    var connection_id = hubConnection.ConnectionId;
                    //while (hubConnection.ConnectionId == "" || hubConnection.ConnectionId == null) { }
                    //var conn_id = hubProxy.Invoke("getConnectionId");
                    await hubProxy.Invoke("NotifyShipper", connectionID_shipper, mrc_order_id, count, msg, shipper_.id, latitude, longtitude);

                    return(Redirect("smarket://market/" + mrc_order_id));
                    //return Ok(list1);

                    //WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
                    //tRequest.Method = "post";
                    ////serverKey - Key from Firebase cloud messaging server
                    //tRequest.Headers.Add(string.Format("Authorization: key={0}", "AIzaSyDN6yImcd7eWPRiN86cn1C7iecVNaF945M"));
                    ////Sender Id - From firebase project setting
                    //tRequest.Headers.Add(string.Format("Sender: id={0}", "462404511537"));
                    //tRequest.ContentType = "application/json";


                    //var fcm_s = "eg8nUQs-lbQ:APA91bHPgVKmMy8d0vnpt-u0UMJPivSvU9kaGPyttY1-ZP-gcu6qkt7VuJ9MG-uDPOPCIkDxpgWJ0TfdP_axotwn-mZEcBOpkEXpn1QfD_HeueUMt-myWeS3ZATw_R11s5D2-N83Sq6U";

                    //ShipperVM shipper = list1.First();

                    //fcm_s = _context.Accounts.AsEnumerable().Where(x => x.id_role == "1" && x.id_account == shipper.id).Select(x => x.fcm_token).FirstOrDefault();
                    //var payload = new
                    //{
                    //    to = fcm_s,
                    //    priority = "high",
                    //    content_available = true,
                    //    notification = new
                    //    {
                    //        body = "Test",
                    //        title = "Test",
                    //        badge = 1
                    //    },

                    //};

                    //string postbody = JsonConvert.SerializeObject(payload).ToString();
                    //Byte[] byteArray = Encoding.UTF8.GetBytes(postbody);
                    //tRequest.ContentLength = byteArray.Length;
                    //using (Stream dataStream = tRequest.GetRequestStream())
                    //{
                    //    dataStream.Write(byteArray, 0, byteArray.Length);
                    //    using (WebResponse tResponse = tRequest.GetResponse())
                    //    {
                    //        using (Stream dataStreamResponse = tResponse.GetResponseStream())
                    //        {
                    //            if (dataStreamResponse != null) using (StreamReader tReader = new StreamReader(dataStreamResponse))
                    //                {
                    //                    String sResponseFromServer = tReader.ReadToEnd();
                    //                    //result.Response = sResponseFromServer;
                    //                }
                    //        }
                    //    }
                    //}
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Esempio n. 10
0
        public IHttpActionResult Get(int count, [FromUri] double latitude, [FromUri] double longtitude, string id_order, string id_shipper = null)
        {
            count++;
            if (count == 4)
            {
                return(NotFound());
            }
            try
            {
                //var order = _context.Orders.Find(id_order);
                var sCoord = new GeoCoordinate(latitude, longtitude);

                var address = _context.Accounts.AsEnumerable().Where(x => x.id_role == "1").Select(x => new ShipperVM
                {
                    id          = x.id_account,
                    username    = x.username,
                    lat         = x.GroupAddress.Addresses.FirstOrDefault().lat,
                    @long       = x.GroupAddress.Addresses.FirstOrDefault().@long,
                    levels      = x.Levels.Select(xx => xx.point).FirstOrDefault(),
                    fcm_token   = x.fcm_token,
                    id_order    = id_order,
                    getDistance = sCoord.GetDistanceTo(new GeoCoordinate(x.GroupAddress.Addresses.FirstOrDefault().lat ?? 0, x.GroupAddress.Addresses.FirstOrDefault().@long ?? 0))
                }).ToList().OrderBy(x => x.getDistance);

                var list  = new List <ShipperVM>();
                var list1 = new List <ShipperVM>();
                var list2 = new List <ShipperVM>();
                foreach (var item in address)
                {
                    if (item.getDistance <= 3000)
                    {
                        list.Add(item);
                    }
                }

                foreach (var item in list.OrderBy(x => x.levels).Take(5))
                {
                    list1.Add(item);
                }
                if (id_shipper != null)
                {
                    var temp = list1.FirstOrDefault(x => x.id == id_shipper);
                    if (temp != null)
                    {
                        list1.Remove(temp);
                    }
                }

                //if (id_shipper != null)
                //{
                //    var s = _context.Accounts.FirstOrDefault(x => x.id_account == id_shipper);
                //    var _shipper = new ShipperVM
                //    {
                //        id = s.id_account,
                //        username = s.username,
                //        lat = s.GroupAddress.Addresses.FirstOrDefault().lat,
                //        @long = s.GroupAddress.Addresses.FirstOrDefault().@long,
                //        id_order = id_order,
                //        levels = s.Levels.FirstOrDefault().point,
                //        getDistance = sCoord.GetDistanceTo(new GeoCoordinate(s.GroupAddress.Addresses.FirstOrDefault().@long ?? 0, s.GroupAddress.Addresses.FirstOrDefault().lat ?? 0))
                //    };

                //}
                if (list1.Count == 0)
                {
                    return(NotFound());
                }
                else
                {
                    WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
                    tRequest.Method = "post";
                    //serverKey - Key from Firebase cloud messaging server
                    tRequest.Headers.Add(string.Format("Authorization: key={0}", "AIzaSyDN6yImcd7eWPRiN86cn1C7iecVNaF945M"));
                    //Sender Id - From firebase project setting
                    tRequest.Headers.Add(string.Format("Sender: id={0}", "462404511537"));
                    tRequest.ContentType = "application/json";


                    var fcm_s = "eg8nUQs-lbQ:APA91bHPgVKmMy8d0vnpt-u0UMJPivSvU9kaGPyttY1-ZP-gcu6qkt7VuJ9MG-uDPOPCIkDxpgWJ0TfdP_axotwn-mZEcBOpkEXpn1QfD_HeueUMt-myWeS3ZATw_R11s5D2-N83Sq6U";

                    ShipperVM shipper = list1.First();

                    fcm_s = _context.Accounts.AsEnumerable().Where(x => x.id_role == "1" && x.id_account == shipper.id).Select(x => x.fcm_token).FirstOrDefault();
                    var payload = new
                    {
                        to                = fcm_s,
                        priority          = "high",
                        content_available = true,
                        notification      = new
                        {
                            body  = "Test",
                            title = "Test",
                            badge = 1
                        },
                    };

                    string postbody  = JsonConvert.SerializeObject(payload).ToString();
                    Byte[] byteArray = Encoding.UTF8.GetBytes(postbody);
                    tRequest.ContentLength = byteArray.Length;
                    using (Stream dataStream = tRequest.GetRequestStream())
                    {
                        dataStream.Write(byteArray, 0, byteArray.Length);
                        using (WebResponse tResponse = tRequest.GetResponse())
                        {
                            using (Stream dataStreamResponse = tResponse.GetResponseStream())
                            {
                                if (dataStreamResponse != null)
                                {
                                    using (StreamReader tReader = new StreamReader(dataStreamResponse))
                                    {
                                        String sResponseFromServer = tReader.ReadToEnd();
                                        //result.Response = sResponseFromServer;
                                    }
                                }
                            }
                        }
                    }
                }
                if (list1.Count > 0)
                {
                    var order_fcm = _context.Orders.Find(id_order);
                    order_fcm.id_shipper = list1[0].id;
                    _context.SaveChanges();
                    return(Ok(list1));
                }

                return(NotFound());
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Esempio n. 11
0
        public async Task <IHttpActionResult> GetAsync(string id_order, string stat)
        {
            //JWTManagement jwtObject = new JWTManagement();
            //var token = jwtObject.getToken();
            //string uri = "https://sandbox-api.baokim.vn/payment/api/v4/order/detail?mrc_order_id=" +id_order+ "&jwt=" + token;

            //HttpClient client = new HttpClient();
            //HttpResponseMessage response = await client.GetAsync(uri);
            //HttpContent content = response.Content;
            //string data = await content.ReadAsStringAsync();
            //dynamic d = JObject.Parse(data);
            //var stat = d.stat;

            //bool rs = false;
            //if(stat == "c")
            //{
            //    rs = true;
            // check exist transaction
            // yes - thôi
            // no thì create
            //}


            //if(rs == false)
            //{
            //    return NotFound();
            //}



            var    __order    = _context.Orders.Find(id_order);
            double latitude   = _context.Addresses.Find(__order.id_address).lat ?? 0;
            double longtitude = _context.Addresses.Find(__order.id_address).@long ?? 0;

            try
            {
                //var order = _context.Orders.Find(id_order);
                var          sCoord            = new GeoCoordinate(latitude, longtitude);
                List <Order> list_order_true   = new List <Order>();
                var          order_has_shipper = _context.Orders.Where(x => x.id_shipper != null).ToList();
                foreach (var item in order_has_shipper)
                {
                    if (CheckShipper_has_Order(item.id_order, id_order, latitude, longtitude) == true)
                    {
                        list_order_true.Add(item);
                    }
                }



                var _shipper = new List <ShipperVM>();
                foreach (var item in list_order_true)
                {
                    _shipper = _context.Accounts.AsEnumerable().Where(x => x.id_account == item.id_shipper).Select(x => new ShipperVM
                    {
                        id        = x.id_account,
                        username  = x.username,
                        lat       = x.GroupAddress.Addresses.FirstOrDefault().lat,
                        @long     = x.GroupAddress.Addresses.FirstOrDefault().@long,
                        levels    = x.Levels.Select(xx => xx.point).FirstOrDefault(),
                        fcm_token = x.fcm_token,
                    }).ToList();
                }

                var list_shipper_has_order = _shipper.GroupBy(x => x.id).Select(y => y.First());

                var address = _context.Accounts.AsEnumerable().Where(x => x.id_role == "1").Select(x => new ShipperVM
                {
                    id          = x.id_account,
                    username    = x.username,
                    lat         = x.GroupAddress.Addresses.FirstOrDefault().lat,
                    @long       = x.GroupAddress.Addresses.FirstOrDefault().@long,
                    levels      = x.Levels.Select(xx => xx.point).FirstOrDefault(),
                    fcm_token   = x.fcm_token,
                    id_order    = id_order,
                    getDistance = sCoord.GetDistanceTo(new GeoCoordinate(x.GroupAddress.Addresses.FirstOrDefault().lat ?? 0, x.GroupAddress.Addresses.FirstOrDefault().@long ?? 0))
                }).ToList().OrderBy(x => x.getDistance);

                var list  = new List <ShipperVM>();
                var list1 = new List <ShipperVM>();
                var list2 = new List <ShipperVM>();
                foreach (var item in address)
                {
                    if (item.getDistance <= 10000)
                    {
                        list.Add(item);
                    }
                }

                foreach (var item in list_shipper_has_order)
                {
                    if (list.Contains(item) != true)
                    {
                        list.Add(item);
                    }
                }


                foreach (var item in list.OrderBy(x => x.levels).Take(5))
                {
                    list1.Add(item);
                }
                //if(id_shipper != null)
                //{
                //    var temp = list1.FirstOrDefault(x => x.id == id_shipper);
                //    if (temp != null)
                //    {
                //        list1.Remove(temp);
                //    }
                //}


                //if (id_shipper != null)
                //{
                //    var s = _context.Accounts.FirstOrDefault(x => x.id_account == id_shipper);
                //    var _shipper = new ShipperVM
                //    {
                //        id = s.id_account,
                //        username = s.username,
                //        lat = s.GroupAddress.Addresses.FirstOrDefault().lat,
                //        @long = s.GroupAddress.Addresses.FirstOrDefault().@long,
                //        id_order = id_order,
                //        levels = s.Levels.FirstOrDefault().point,
                //        getDistance = sCoord.GetDistanceTo(new GeoCoordinate(s.GroupAddress.Addresses.FirstOrDefault().@long ?? 0, s.GroupAddress.Addresses.FirstOrDefault().lat ?? 0))
                //    };

                //}
                if (list1.Count == 0)
                {
                    list1.Add(new ShipperVM());
                    return(NotFound());
                }
                else
                {
                    list1.Reverse();
                    HubConnection hubConnection = new HubConnection("https://localhost:44333");

                    IHubProxy hubProxy = hubConnection.CreateHubProxy("NotifyHub");

                    string    msg     = "Bạn có một đơn hàng!";
                    int       count   = 1;
                    ShipperVM shipper = list1.First();
                    var       connectionID_shipper = _context.Accounts.AsEnumerable().Where(x => x.id_role == "1" && x.id_account == shipper.id).Select(x => x.connection_id).FirstOrDefault();
                    await hubConnection.Start();

                    var change        = hubConnection.State;
                    var connection_id = hubConnection.ConnectionId;
                    //while (hubConnection.ConnectionId == "" || hubConnection.ConnectionId == null) { }
                    //var conn_id = hubProxy.Invoke("getConnectionId");
                    await hubProxy.Invoke("NotifyShipper", connectionID_shipper, id_order, count, msg, shipper.id, latitude, longtitude);


                    //WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
                    //tRequest.Method = "post";
                    ////serverKey - Key from Firebase cloud messaging server
                    //tRequest.Headers.Add(string.Format("Authorization: key={0}", "AIzaSyDN6yImcd7eWPRiN86cn1C7iecVNaF945M"));
                    ////Sender Id - From firebase project setting
                    //tRequest.Headers.Add(string.Format("Sender: id={0}", "462404511537"));
                    //tRequest.ContentType = "application/json";


                    //var fcm_s = "eg8nUQs-lbQ:APA91bHPgVKmMy8d0vnpt-u0UMJPivSvU9kaGPyttY1-ZP-gcu6qkt7VuJ9MG-uDPOPCIkDxpgWJ0TfdP_axotwn-mZEcBOpkEXpn1QfD_HeueUMt-myWeS3ZATw_R11s5D2-N83Sq6U";

                    //ShipperVM shipper = list1.First();

                    //fcm_s = _context.Accounts.AsEnumerable().Where(x => x.id_role == "1" && x.id_account == shipper.id).Select(x => x.fcm_token).FirstOrDefault();
                    //var payload = new
                    //{
                    //    to = fcm_s,
                    //    priority = "high",
                    //    content_available = true,
                    //    notification = new
                    //    {
                    //        body = "Test",
                    //        title = "Test",
                    //        badge = 1
                    //    },

                    //};

                    //string postbody = JsonConvert.SerializeObject(payload).ToString();
                    //Byte[] byteArray = Encoding.UTF8.GetBytes(postbody);
                    //tRequest.ContentLength = byteArray.Length;
                    //using (Stream dataStream = tRequest.GetRequestStream())
                    //{
                    //    dataStream.Write(byteArray, 0, byteArray.Length);
                    //    using (WebResponse tResponse = tRequest.GetResponse())
                    //    {
                    //        using (Stream dataStreamResponse = tResponse.GetResponseStream())
                    //        {
                    //            if (dataStreamResponse != null) using (StreamReader tReader = new StreamReader(dataStreamResponse))
                    //                {
                    //                    String sResponseFromServer = tReader.ReadToEnd();
                    //                    //result.Response = sResponseFromServer;
                    //                }
                    //        }
                    //    }
                    //}
                }
                if (list1.Count > 0)
                {
                    //var order_fcm = _context.Orders.Find(id_order);
                    //order_fcm.id_shipper = list1[0].id;
                    //_context.SaveChanges();
                    return(Ok(list1));
                }

                return(NotFound());
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }