/// <inheritdoc />
        public IEnumerable <CustomModelError> ValidateTransferDto(TransactionPostDto transaction)
        {
            var result = new List <CustomModelError>();

            result
            .AddError(() =>
                      transaction.From.ToNormalizedCardNumber() ==
                      transaction.To.ToNormalizedCardNumber(),
                      "from",
                      "From card and to card is Equal",
                      "Нельзя перевести на ту же карту",
                      TypeCriticalException.CARD)
            .AddError(() => !_cardChecker.CheckCardEmitter(transaction.From),
                      "from",
                      "Card number is invalid",
                      "Номер карты неверный",
                      TypeCriticalException.CARD)
            .AddError(() => !_cardChecker.CheckCardEmitter(transaction.To),
                      "to",
                      "Card number is invalid",
                      "Номер карты неверный",
                      TypeCriticalException.CARD)
            .AddError(() => transaction.Sum <= 0,
                      "sum",
                      "Sum must be greater then 0",
                      "Сумма должна быть больше 0");

            return(result);
        }
Exemplo n.º 2
0
        public void CheckCardEmitted_CardWasNotEmittedByAlfabank_ReturnFalse(string value)
        {
            // Act
            var cardWasEmittedByAlfabank = _cardChecker.CheckCardEmitter(value);

            // Assert
            Assert.False(cardWasEmittedByAlfabank);
        }
        public void GenerateNewCardNumber_CorrectCardType_ReturnCorrectCardNumber(CardType type)
        {
            // Act
            var cardNumber       = _cardNumberGenerator.GenerateNewCardNumber(type);
            var validationResult = _cardChecker.CheckCardEmitter(cardNumber);

            // Assert
            Assert.True(validationResult);
        }
        public ActionResult <CardGetDto> Get([CreditCard] string number)
        {
            // Validate
            if (!_cardChecker.CheckCardEmitter(number))
            {
                ModelState.AddModelError("number", "This card number is invalid");
            }

            if (!ModelState.IsValid)
            {
                _logger.LogStateWarning("This card number is invalid.", ModelState);
                return(BadRequest(ModelState));
            }

            // Select
            var user = _userRepository.GetUser(User.Identity.Name);

            if (user == null)
            {
                return(Forbid());
            }

            var card = _cardRepository.GetWithTransactions(user, number, true);

            if (card == null)
            {
                _logger.LogWarning("This card number was not found. {number}", number);
                return(NotFound());
            }

            // Mapping
            var dto = _dtoFactory.Map(card, TryValidateModel);

            // Validate
            if (dto != null)
            {
                return(Ok(dto));
            }

            _logger.LogWarning("This card number was not found. {number}", number);
            return(NotFound());
        }
        public ActionResult <IEnumerable <TransactionGetDto> > Get(
            [Required][CreditCard] string number,
            [FromQuery][Range(1, 1000)] int skip = 0)
        {
            // Validate
            if (!_cardChecker.CheckCardEmitter(number))
            {
                ModelState.AddModelError("number", "This card number is invalid");
            }

            if (!ModelState.IsValid)
            {
                _logger.LogStateWarning("This model is invalid.", ModelState);
                return(BadRequest(ModelState));
            }

            // Select
            var user = _userRepository.GetUser(User.Identity.Name);

            if (user == null)
            {
                return(Forbid());
            }

            var transactions = _transactionRepository.Get(
                user,
                number,
                skip,
                10);

            // Mapping
            var transactionsDto = _dtoFactory.Map(transactions, TryValidateModel);

            // Return
            return(Ok(transactionsDto));
        }