public async Task <IActionResult> BuyTokensAsync(PayPalTransactionRequest model, [FromServices] IPayPalService payPal, CancellationToken token) { var userId = _userManager.GetLongUserId(User); var result = await payPal.GetPaymentAsync(model.Id, token); var amount = result.ReferenceId switch { "points_1" => 100, "points_2" => 500, "points_3" => 1000, _ => throw new ArgumentException(message: "invalid value") }; var command = new TransferMoneyToPointsCommand(userId, amount, model.Id); await _commandBus.DispatchAsync(command, token); return(Ok()); } #endregion }
//public async Task<ActionResult> Datatable(PayPalTransactionRequest request) public ActionResult Datatable3(PayPalTransactionRequest request) { #region 自定义动作 //if (!string.IsNullOrEmpty(request.customActionType)) //{ // string[] id_Array = Request.Params.GetValues("id[]"); // List<int> ids = new List<int>(); // foreach (string i in id_Array) // { // ids.Add(int.Parse(i)); // } // switch (request.customActionType) // { // case "group_action": // switch (request.customActionName) // { // case "delete": // // DeleteImageFile(id_Array); // DeleteImageFileIO(ids); // this.ImsService.DeleteProduct(ids); // break; // } // break; // case "delete": // // DeleteImageFile(id_Array); // DeleteImageFileIO(ids); // this.ImsService.DeleteProduct(ids); // break; // } //} #endregion // var allTransaction = await this.ImsService.GetPayPalTransactionListAsync(null); var allTransaction = this.ImsService.GetPayPalTransactionList(null); IEnumerable <PayPalTransaction> filterTransaction = allTransaction; #region 搜索 if (!string.IsNullOrEmpty(request.search)) { var isNameSearchable = Convert.ToBoolean(Request["columns[1][searchable]"]); } else if (request.action == "filter") { var OrderTimeFromFilter = Convert.ToString(Request["ordertime_from"]).Trim().ToLower(); var OrderTimeToFilter = Convert.ToString(Request["ordertime_to"]).Trim().ToLower(); // var SkuFilter = Convert.ToString(Request["sku"]).Trim().ToLower(); //var PackingWeightFilter = Convert.ToString(Request["packingweight"]).Trim().ToLower(); var isNameSearchable = Convert.ToBoolean(Request["columns[1][searchable]"].ToString()); if (isNameSearchable) { filterTransaction = filterTransaction. Where(c => c.PaymentDate <= DateTime.Parse(OrderTimeToFilter) && c.PaymentDate >= DateTime.Parse(OrderTimeFromFilter) ); } //var isSkuSearchable = Convert.ToBoolean(Request["columns[2][searchable]"].ToString()); //if (isSkuSearchable) //{ // filterProduct = filterProduct.Where(c => c.Sku.ToLower().Contains(SkuFilter)); //} //var isPackingWeightSearchable = Convert.ToBoolean(Request["columns[3][searchable]"].ToString()); //if (isPackingWeightSearchable && !string.IsNullOrEmpty(PackingWeightFilter)) //{ // filterProduct = filterProduct.Where(c => c.PackWeight == PackingWeightFilter.ToInt()); //} } else if (request.action == "filter_cancel") { filterTransaction = allTransaction; } else { filterTransaction = allTransaction; } #endregion #region 排序 var isOrderTimeSortable = Convert.ToBoolean(Request["columns[1][orderable]"]); var isTransactionIDSortable = Convert.ToBoolean(Request["columns[2][orderable]"]); //var isBuyerIDSortable = Convert.ToBoolean(Request["columns[3][orderable]"]); var sortColumnIndex = Convert.ToInt32(Request["order[0][column]"]); Func <PayPalTransaction, string> orderingFunction = (c => sortColumnIndex == 1 && isOrderTimeSortable ? DateTime.Parse(c.PaymentDate.ToString()).ToCnDataString() : sortColumnIndex == 2 && isTransactionIDSortable ? c.TransactionId : ""); var sortDirection = Request["order[0][dir]"]; // asc or desc if (sortDirection == "asc") { filterTransaction = filterTransaction.OrderBy(orderingFunction); } if (sortDirection == "desc") { filterTransaction = filterTransaction.OrderByDescending(orderingFunction); } #endregion var displayedTransaction = filterTransaction.Skip(request.start).Take(request.length); var result = from c in displayedTransaction select new[] { Convert.ToString(c.ID) , DateTime.Parse(c.PaymentDate.ToString()).ToCnDataString() //c.OrderTime.ToCnDataString() , c.TransactionId //c.TransactionID , c.BuyerID //c.BuyerID , c.PayerCountryName //c.ShipToCountryCode , c.GrossAmount.ToPrice() + " " + c.CurrencyCode , c.Agent.ToString() , c.Express , Convert.ToString(c.ID) }; return(Json(new { draw = request.draw, //param.sEcho, recordsTotal = allTransaction.Count(), //alltransactions.Count(), recordsFiltered = filterTransaction.Count(), data = result }, JsonRequestBehavior.AllowGet)); }
public ActionResult Datatable(PayPalTransactionRequest request) // public async Task<ActionResult> Datatable(PayPalTransactionRequest request) { #region 自定义动作 //if (!string.IsNullOrEmpty(request.customActionType)) //{ // string[] id_Array = Request.Params.GetValues("id[]"); // List<int> ids = new List<int>(); // foreach (string i in id_Array) // { // ids.Add(int.Parse(i)); // } // switch (request.customActionType) // { // case "group_action": // switch (request.customActionName) // { // case "delete": // // DeleteImageFile(id_Array); // DeleteImageFileIO(ids); // this.ImsService.DeleteProduct(ids); // break; // } // break; // case "delete": // // DeleteImageFile(id_Array); // DeleteImageFileIO(ids); // this.ImsService.DeleteProduct(ids); // break; // } //} #endregion var allTransaction = this.ImsService.GetPayPalTransactionList(null); // var allTransaction = await this.ImsService.GetPayPalTransactionListAsync2(null); IEnumerable <PayPalTransaction> filterTransaction = allTransaction; #region 搜索 switch (request.action) { case "filter": Func <PayPalTransaction, bool> Filter = ( c => { bool flag = true; if (Convert.ToBoolean(Request["columns[1][searchable]"].ToString()) && !string.IsNullOrEmpty(request.OrderDateRange)) { flag = flag && c.PaymentDate <= DateTime.Parse(request.OrderDateRange.Split('-')[1]) && c.PaymentDate >= DateTime.Parse(request.OrderDateRange.Split('-')[0]); } if (Convert.ToBoolean(Request["columns[2][searchable]"].ToString()) && !string.IsNullOrEmpty(request.TransactionId)) { flag = flag && c.TransactionId.Contains(request.TransactionId.Trim().ToUpper()); } return(flag); } ); filterTransaction = filterTransaction.Where(Filter); break; case "filter_cancel": filterTransaction = allTransaction; break; default: filterTransaction = allTransaction; break; } #endregion #region 排序 var isOrderTimeSortable = Convert.ToBoolean(Request["columns[1][orderable]"]); var isTransactionIDSortable = Convert.ToBoolean(Request["columns[2][orderable]"]); var sortColumnIndex = Convert.ToInt32(Request["order[0][column]"]); Func <PayPalTransaction, string> orderingFunction = (c => sortColumnIndex == 1 && isOrderTimeSortable ? DateTime.Parse(c.PaymentDate.ToString()).ToCnDataString() : sortColumnIndex == 2 && isTransactionIDSortable ? c.TransactionId : ""); var sortDirection = Request["order[0][dir]"]; switch (sortDirection) { case "asc": filterTransaction = filterTransaction.OrderBy(orderingFunction); break; case "desc": filterTransaction = filterTransaction.OrderByDescending(orderingFunction); break; default: filterTransaction = filterTransaction.OrderBy(orderingFunction); break; } #endregion var displayedTransaction = filterTransaction.Skip(request.start).Take(request.length); var result = from c in displayedTransaction select new[] { Convert.ToString(c.ID) , DateTime.Parse(c.PaymentDate.ToString()).ToCnDataString() , c.TransactionId , c.BuyerID , c.PayerCountryName , c.GrossAmount.ToPrice() + " " + c.CurrencyCode , c.Agent.ToString() , c.Express , Convert.ToString(c.ID) }; return(Json(new { draw = request.draw, recordsTotal = allTransaction.Count(), recordsFiltered = filterTransaction.Count(), data = result }, JsonRequestBehavior.AllowGet)); }