コード例 #1
0
        public void PayTicketWithMoneyTest()
        {
            Mock <ModelStateDictionary> modelStateDictionaryMock = new Mock <ModelStateDictionary>();
            PayTicketRequest            request = new PayTicketRequest()
            {
                DateTime = DateTime.Now,
                Card     = 20,
                Code     = 1,
                Name     = "Request1"
            };

            var user = new ClaimsPrincipal(new ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, "name"),
                new Claim(ClaimTypes.Role, "role")
            }, "mock"));

            cart.ControllerContext = new ControllerContext()
            {
                HttpContext = new DefaultHttpContext()
                {
                    User = user
                }
            };

            IActionResult payTicketWithMoney = cart.PayTicketWithMoney(request);

            Assert.IsType <RedirectToActionResult>(payTicketWithMoney);
        }
コード例 #2
0
        public IActionResult PayTicketWithMoney(PayTicketRequest request)
        {
            if (ModelState.IsValid)
            {
                var user = UserManager.FindByNameAsync(User.Identity.Name).Result;
                var res  = CartRepository.GetCartByUserId(user.Id);
                if (User.IsInRole(Roles.Partner))
                {
                    CartRepository.UdateAddPointsPartner(user.Id, res.Count * 5);
                }
                string hashValue = HasherCard.Hash(request.Card.ToString());

                double payed = 0;
                foreach (var item in res)
                {
                    if (item.DiscountsByShow.DiscountId != "ninguno")
                    {
                        var discount = CartRepository.GetDiscountById(item.DiscountsByShow.DiscountId);
                        payed += item.DiscountsByShow.Show.Price - (item.DiscountsByShow.Show.Price * discount.Percent / 100);
                    }
                    else
                    {
                        payed += item.DiscountsByShow.Show.Price;
                    }
                }
                //descontar de la tarjeta del usuario
                var payCart = new PayCart
                {
                    DateTime    = DateTime.Now,
                    UserId      = user.Id,
                    CardHash    = hashValue,
                    User        = user,
                    PayCartId   = Guid.NewGuid().ToString(),
                    PayedMoney  = payed,
                    PayedPoints = 0
                };
                CartRepository.AddPayCart(payCart);
                foreach (var item in res)
                {
                    var armChairByRoom     = CartRepository.GetArmChairByRoomById(item.ArmChairId, item.DiscountsByShow.ShowId);
                    var userBoughtArmChair = CartRepository.GetUserBoughtArmChair(item.DiscountsByShow.ShowId, user.Id, armChairByRoom.ArmChairByRoomId);
                    var pay = new Pay
                    {
                        PayId                = Guid.NewGuid().ToString(),
                        PayCart              = payCart,
                        PayCartId            = payCart.PayCartId,
                        DiscountId           = item.DiscountsByShow.DiscountId,
                        UserBoughtArmChair   = userBoughtArmChair,
                        UserBougthArmChairId = userBoughtArmChair.UserBoughtArmChairId
                    };
                    CartRepository.AddPay(pay);
                    CartRepository.DeleteCartById(item.CartId);
                }
                Logger.LogInformation("Pay with money.");
                return(RedirectToAction("Index"));
            }
            foreach (var error in ModelState.Values)
            {
                foreach (var item in error.Errors)
                {
                    Logger.LogError(item.ErrorMessage);
                }
            }
            return(RedirectToAction("Index"));
        }