Exemplo n.º 1
0
        public async Task <IActionResult> Pay(int buyForm, int payForm, string creditCard, string partnerCode)
        {
            if (buyForm == 1 && payForm == 0)
            {
                var        seats = _context.TicketPurchase.Where(m => m.Code == (string)TempData["codeSeats"]);
                BankTeller bank  = new BankTeller();
                if (!bank.Pay())
                {
                    foreach (var item in seats)
                    {
                        _context.TicketPurchase.Remove(item);
                    }
                    _context.SaveChanges();
                    return(RedirectToAction("PayError"));
                }

                foreach (var item in seats)
                {
                    ((OnlineTicketPurchase)item).CreditCard = creditCard;
                }
            }

            if (partnerCode != null)
            {
                var   user   = (await _cineUserManager.GetAllUsersBy("Member")).Where(c => c.Id == partnerCode).First();
                float points = float.Parse(await _cineUserManager.GetClaim(user.UserName, "Points"));
                if (payForm == 0)
                {
                    points += 5 * (int)TempData["len"];
                }
                else
                {
                    var batch = _context.Batch.Find((int)TempData["cinema"], (DateTime)TempData["start"], (DateTime)TempData["end"]);
                    points -= batch.TicketPoints * (int)TempData["len"];
                    var seats = _context.TicketPurchase.Where(m => m.Code == (string)TempData["codeSeats"]);
                    foreach (var item in seats)
                    {
                        item.PointsSpent = batch.TicketPoints;
                    }
                }
                await _cineUserManager.SetClaim(user.UserName, "Points", points);
            }

            var spots = _context.TicketPurchase.Where(m => m.Code == (string)TempData["codeSeats"]);

            foreach (var item in spots)
            {
                item.Paid = true;
            }

            _context.SaveChanges();
            return(RedirectToAction("ShowCode", "TicketPurchases"));
        }