public async Task <IActionResult> OnPostAsync()
        {
            await Task.Run(async() =>
            {
                string username = userManager.GetUserName(User);
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        IEnumerable <Cart> cartitem = cartdb.GetByCartId(username);
                        var transactionOrder        = new Transac
                        {
                            Username  = username,
                            OrderDate = DateTime.Now
                        };
                        transactiondb.Add(transactionOrder);
                        await transactiondb.CommitAsync();
                        foreach (var r in cartitem)
                        {
                            var orderdetail = new OrderDetail
                            {
                                OrderId    = transactionOrder.OrderId,
                                GameId     = r.GameId,
                                PlatformId = r.PlatformId,
                                Quantity   = r.Quantity,
                            };
                            orderdetaildb.Add(orderdetail);
                            await orderdetaildb.CommitAsync();

                            //Generate code
                            for (var i = 0; i < orderdetail.Quantity; i++)
                            {
                                var codeidgenerated = Guid.NewGuid().ToString();
                                var code            = new Code
                                {
                                    CodeId     = codeidgenerated,
                                    OrderId    = orderdetail.OrderId,
                                    GameId     = orderdetail.GameId,
                                    PlatformId = orderdetail.PlatformId
                                };
                                codedb.Add(code);
                                await codedb.CommitAsync();
                            }
                        }

                        cartdb.DeleteItemInCart(username);
                        await cartdb.CommitAsync();

                        await transaction.CommitAsync();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                        await transaction.RollbackAsync();
                    }
                }
            });

            return(RedirectToPage("../u/Library"));
        }
Example #2
0
 public bool Add(E_Model.Code model)
 {
     return(dal.Add(model));
 }
Example #3
0
 /// <summary>
 /// 添加一条数据
 /// </summary>
 /// <param name="model">数据实体</param>
 /// <returns></returns>
 public int Add(Models.APP.Code model)
 {
     return(dal.Add(model));
 }