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)); }
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)); }
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)); }
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); }
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 }
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)); } }
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)); } }
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)); } }
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)); } }