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); }
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); }
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); }
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); }
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()); }
/// <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() }); }