Esempio n. 1
0
        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));
        }