public async System.Threading.Tasks.Task <IHttpActionResult> PostAsync(string id_order) { try { var order = _context.Orders.Find(id_order); if (order == null) { return(NotFound()); } 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; var trans = _context.Transactions.Where(x => x.id_order == id_order).ToList(); if (trans.Count != 0) { return(Ok(trans)); } byte[] buffer = Guid.NewGuid().ToByteArray(); var trans_id = BitConverter.ToInt64(buffer, 0).ToString(); if (trans.Count == 0) { _context.Transactions.Add(new Transaction { id_transaction = trans_id, id_order = id_order, money = order.total_amount, created_time = DateTime.Now, }); _context.SaveChanges(); return(Ok(trans)); } } if (rs == false) { return(NotFound()); } return(Ok()); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Post(OrderVM model) { JWTManagement jwtObject = new JWTManagement(); var _token = jwtObject.getToken(); try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (model == null) { return(NotFound()); } var address_market = _context.Addresses.FirstOrDefault(x => x.id_address == model.id_address); var address_customer = _context.Addresses.FirstOrDefault(s => s.id_address == model.customer_address_id); GeoCoordinate sCoor = new GeoCoordinate(address_market.lat ?? 0, address_market.@long ?? 0); GeoCoordinate cCoor = new GeoCoordinate(address_customer.lat ?? 0, address_customer.@long ?? 0); var distance_s_to_m = sCoor.GetDistanceTo(cCoor); double ship_cost = 0; double _point = 0; if (distance_s_to_m > 1000) { ship_cost = distance_s_to_m * 10; } else { ship_cost = 10000; } var stime = new TimeSpan(17, 00, 00); var etime = new TimeSpan(19, 00, 00); if ((stime.CompareTo(model.time_to_ship ?? new TimeSpan(00, 00, 00)) < 0) && (etime.CompareTo(model.time_to_ship ?? new TimeSpan(00, 00, 00)) > 0)) { ship_cost = ship_cost + 10000; _point += 2; } byte[] buffer = Guid.NewGuid().ToByteArray(); var order_code = BitConverter.ToInt64(buffer, 0).ToString().Substring(9); if (distance_s_to_m > 1000) { _point += distance_s_to_m / 100; } else { _point += 10; } ship_cost = (int)ship_cost; int nguyen = (int)ship_cost / 1000; int du = (int)ship_cost % 1000; if (du < 500 && du > 0) { ship_cost = (nguyen * 1000) + 500; } else { ship_cost = (nguyen * 1000) + 1000; } distance_s_to_m = distance_s_to_m / 1000; distance_s_to_m = double.Parse(distance_s_to_m.ToString("0.0")); var list_order_details = model.OrderDetails.ToList(); double total = 0; foreach (var item in list_order_details) { total += item.price * item.quanlity ?? 0; } total = total + ship_cost + 10000; DateTime dt = DateTime.Now; var order = _context.Orders.Add(new Models.Order { id_order = model.id_order, created_date = dt, id_customer = model.id_customer, id_shipper = model.id_shipper, state = 0, id_group_image = model.id_group_image, dis_cus_to_market = distance_s_to_m, id_address = model.id_address, point = (int)_point, shipping_cost = ship_cost, time_to_ship = model.time_to_ship.Value, customer_address_id = model.customer_address_id, phone = model.phone, name = model.name, taking_time = null, done_time = null, order_code = order_code, customer_comment = model.customer_comment, system_cost = 10000, total_amount = total, token = _token, OrderDetails = model.OrderDetails.Select(x => new OrderDetail { id_orderdetail = x.id_orderdetail, id_order = x.id_order, id_product = x.id_product, id_market = x.id_market, price = x.price, quanlity = x.quanlity, priority = x.priority }).ToList() }); _context.SaveChanges(); return(Ok(order)); } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult PostCost(CalculateVM model) { JWTManagement jwtObject = new JWTManagement(); var _token = jwtObject.getToken(); try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (model == null) { return(NotFound()); } var address_market = _context.Addresses.FirstOrDefault(x => x.id_address == model.id_address); var address_customer = _context.Addresses.FirstOrDefault(s => s.id_address == model.customer_address_id); GeoCoordinate sCoor = new GeoCoordinate(address_market.lat ?? 0, address_market.@long ?? 0); GeoCoordinate cCoor = new GeoCoordinate(address_customer.lat ?? 0, address_customer.@long ?? 0); var distance_s_to_m = sCoor.GetDistanceTo(cCoor); double ship_cost = 0; double _point = 0; if (distance_s_to_m > 1000) { ship_cost = distance_s_to_m * 10; } else { ship_cost = 10000; } var stime = new TimeSpan(17, 00, 00); var etime = new TimeSpan(19, 00, 00); if ((stime.CompareTo(model.time_to_ship ?? new TimeSpan(00, 00, 00)) < 0) && (etime.CompareTo(model.time_to_ship ?? new TimeSpan(00, 00, 00)) > 0)) { ship_cost = ship_cost + 10000; _point += 2; } byte[] buffer = Guid.NewGuid().ToByteArray(); var order_code = BitConverter.ToInt64(buffer, 0).ToString().Substring(9); if (distance_s_to_m > 1000) { _point += distance_s_to_m / 100; } else { _point += 10; } ship_cost = (int)ship_cost; int nguyen = (int)ship_cost / 1000; int du = (int)ship_cost % 1000; if (du < 500 && du > 0) { ship_cost = (nguyen * 1000) + 500; } else { ship_cost = (nguyen * 1000) + 1000; } distance_s_to_m = distance_s_to_m / 1000; distance_s_to_m = double.Parse(distance_s_to_m.ToString("0.0")); var list_order_details = model.OrderDetails.ToList(); double total = 0; foreach (var item in list_order_details) { total += item.price * item.quanlity ?? 0; } double total_amount = 0; total_amount = total + ship_cost + 10000; DateTime dt = DateTime.Now; var CostObject = new { shippingcost = ship_cost, system_cost = 10000, total = total, total_amount_all = total_amount, }; return(Ok(CostObject)); } 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 HttpResult Login([FromBody] User user) { try { //Kiểm tra thông tin đầu vào if (string.IsNullOrWhiteSpace(user.Email)) { return new HttpResult { MessageCode = Entities.Enum.Enums.MessageCode.Error, Message = "Email is null" } } ; if (string.IsNullOrWhiteSpace(user.Password)) { return new HttpResult { MessageCode = Entities.Enum.Enums.MessageCode.Error, Message = "Password is null" } } ; //Kiểm tra User var checkuser = UnitOfWork.User.CheckInfoUser(user); if (!checkuser) { return new HttpResult { MessageCode = Entities.Enum.Enums.MessageCode.Error, Message = "User does not exists." } } ; //Kiểm tra token còn hạn hay không var getToken = UnitOfWork.Token.GetTokenByUser(user.Email); if (getToken.Rows.Count != 0) { return(new HttpResult { MessageCode = Entities.Enum.Enums.MessageCode.Success, Content = new Token { Email = user.Email, TokenId = getToken.Rows[0]["TokenId"].ToString(), expiredin = (DateTime)(getToken.Rows[0]["ExpiredTime"]), User_Type = getToken.Rows[0]["User_Type"].ToString() } }); } //Tạo mới token DateTime expiredDate = DateTime.Now.AddDays(3); string tokenvalue = JWTManagement.GenerateToken(user.Email, expiredDate); Token token = new Token { Email = user.Email, TokenId = tokenvalue, expiredin = expiredDate }; //Lưu Token vào DB var SaveToken = UnitOfWork.Token.SaveToken(token); //Trả kết quả if (SaveToken.Rows.Count == 0) { return(new HttpResult { MessageCode = Entities.Enum.Enums.MessageCode.Error, Message = "Cannot save token." }); } token.User_Type = SaveToken.Rows[0]["User_Type"].ToString(); return(new HttpResult { MessageCode = Entities.Enum.Enums.MessageCode.Success, Content = token }); } catch (Exception ex) { return(new HttpResult { MessageCode = Entities.Enum.Enums.MessageCode.Exception, Message = ex.Message }); } }