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")); }