Exemplo n.º 1
0
        public static List <string> ValidateCurrencyExchange(CurrencyExchangeDto currencyExchangeDto, List <Currency> currencies)
        {
            List <string> errors = new List <string>();

            var currentDate = DateTime.Now.Date;

            if (currentDate < currencyExchangeDto.Date)
            {
                errors.Add(string.Format(ErrorMessage.INVALID_DATE));
            }

            var baseCurrency = currencies.FirstOrDefault(c => c.Code == currencyExchangeDto.BaseCurrencyCode);

            if (baseCurrency == null)
            {
                errors.Add(string.Format(ErrorMessage.INVALID_FIELD_ERROR, "Base Currency"));
            }

            var currency = currencies.FirstOrDefault(c => c.Code == currencyExchangeDto.BaseCurrencyCode);

            if (currency == null)
            {
                errors.Add(string.Format(ErrorMessage.INVALID_FIELD_ERROR, "Currency"));
            }

            return(errors);
        }
Exemplo n.º 2
0
        public static CurrencyExchange ToDomain(CurrencyExchangeDto currencyExchangeDto, List <Currency> currencies)
        {
            var currencyExchange = new CurrencyExchange()
            {
                Date         = currencyExchangeDto.Date,
                BaseCurrency = currencies.First(c => c.Code == currencyExchangeDto.BaseCurrencyCode),
                Currency     = currencies.First(c => c.Code == currencyExchangeDto.CurrencyCode),
                BuyRate      = currencyExchangeDto.BuyRate,
                SellRate     = currencyExchangeDto.SellRate
            };

            return(currencyExchange);
        }
Exemplo n.º 3
0
        public void SetUp()
        {
            _currencyExchange    = new CurrencyExchange();
            _currencyExchangeDto = new CurrencyExchangeDto();

            _currencyRepositoryMock = new Mock <IAsyncRepository <Currency> >();
            _currencyRepositoryMock.Setup(c => c.ListAllAsync()).Returns(Task.FromResult(CurrencyData.GetCurrencies()));

            _currencyExcahngeRepositoryMock = new Mock <IAsyncRepository <CurrencyExchange> >();
            _currencyExcahngeRepositoryMock.Setup(c => c.AddAsync(It.IsAny <CurrencyExchange>())).Returns(Task.FromResult(_currencyExchange));

            _currencyExchangeDto        = new CurrencyExchangeDto();
            _addCurrencyExchangeCommand = new AddCurrencyExchangeCommand(_currencyRepositoryMock.Object, _currencyExcahngeRepositoryMock.Object);
        }
Exemplo n.º 4
0
 public async Task <bool> ExchangeMoney(CurrencyExchangeDto currencyExchangeDto, CancellationToken cancellationToken)
 {
     return(await repository.ExchangeMoney(new Transfer
     {
         Sending_Date = DateTime.Now,
         Execution_Date = DateTime.Now,
         Title = "Currency exchange",
         Receiver = "Myself",
         Description = "Currency exchange",
         Status = "executed",
         Amount = currencyExchangeDto.amount,
         Sender_Bank_Account = currencyExchangeDto.transferFrom,
         Receiver_Bank_Account = currencyExchangeDto.transferTo
     }, cancellationToken));
 }
        public async Task ExecuteAsync(CurrencyExchangeDto currencyExchangeDto)
        {
            _currencies = await _currencyRepository.ListAllAsync();

            var errors = CurrencyExchangeValidator.ValidateCurrencyExchange(currencyExchangeDto, _currencies);

            if (errors.Count > 0)
            {
                ErrorMessages.AddRange(errors);
                return;
            }

            var currencyExchange = CurrencyExchangeTranslator.ToDomain(currencyExchangeDto, _currencies);
            await _currencyExchangeRepository.AddAsync(currencyExchange);

            this.SuccessMessage = string.Format(SuccessMessages.CURRENCY_EXCHANGE_POST_SUCCESS);
        }
Exemplo n.º 6
0
        public async Task <IActionResult> ExchangeMoney([FromBody] CurrencyExchangeDto currencyExchangeDto,
                                                        CancellationToken cancellationToken = default)
        {
            string l = HttpContext.GetLoginFromClaims();

            var access = await validateUserFilter.ValidateUser(l, cancellationToken);

            if (access == "admin" || access == "null")
            {
                return(Unauthorized("ERROR, Access denied"));
            }

            var success = await transferService.ExchangeMoney(currencyExchangeDto, cancellationToken);

            if (!success)
            {
                return(UnprocessableEntity("ERROR, Transfer cannot be done"));
            }

            return(Ok());
        }
Exemplo n.º 7
0
        /// <summary>
        /// Posts a new currency exchange entry
        /// </summary>
        /// <param name="request"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override async Task <CurrencyReply> PostCurrencyExchange(CurrencyRequest request, ServerCallContext context)
        {
            var currencyExchanteDto = new CurrencyExchangeDto()
            {
                Date             = new DateTime(2019, 06, 15),
                BaseCurrencyCode = request.BaseCurrencyCode,
                CurrencyCode     = request.CurrencyCode,
                BuyRate          = (decimal)request.BuyRate,
                SellRate         = (decimal)request.SellRate,
            };

            await _currencyExchangeCommand.ExecuteAsync(currencyExchanteDto);

            if (_currencyExchangeCommand.GetErrorMessages().Count > 1)
            {
                return(new CurrencyReply {
                    Message = string.Join("\n", _currencyExchangeCommand.GetErrorMessages())
                });
            }

            return(new CurrencyReply {
                Message = _currencyExchangeCommand.GetSuccessMessage()
            });
        }