public async Task <IActionResult> Pin(int pin)
        {
            var pinAttempts = _sessionManager.GetPinAttempts(HttpContext);

            _sessionManager.SetPinAttempts(HttpContext, ++pinAttempts);

            int cardId = _sessionManager.GetSessionCardId(HttpContext).Value;

            int maxAttempts = 4;

            if (pinAttempts >= maxAttempts)
            {
                //Bloquear tarjeta
                var card = await _atmService.BlockCardAsync(cardId);

                return(RedirectToAction(nameof(CardBlocked)));
            }

            bool isValid = await _atmService.IsValidCardCombinationAsync(cardId, pin);

            if (isValid)
            {
                _sessionManager.Authorize(HttpContext);
                return(RedirectToAction(nameof(Menu)));
            }

            _sessionManager.SetPinAttempts(HttpContext, ++pinAttempts);

            //return RedirectToAction(nameof(Pin));
            return(RedirectToAction(nameof(Pin), new { @retry = true }));
        }
Example #2
0
        public async Task <IActionResult> Pin(int pin)
        {
            int  cardId  = _sessionManager.GetSessionCardId(HttpContext).Value;
            bool isValid = await _terminalService.IsValidCardCombinationAsync(cardId, pin);

            if (isValid)
            {
                _sessionManager.Authorize(HttpContext);
                return(RedirectToAction(nameof(Menu)));
            }
            else
            {
                throw new InvalidOperationException("No valid card found with this number-pin combination");
            }
        }