/// <inheritdoc /> public async Task <OperationResult <CurrencyRate> > GetRate(CurrencyRequest request) { try { CurrencyDateCalculationResult currencyDateCalculationResult = this.currencyDateCalculator.Calculate(request); if (currencyDateCalculationResult == null) { return(OperationResult <CurrencyRate> .FromFail("Не удалось получить результат проверки запроса курса валюты")); } if (currencyDateCalculationResult.Success == false || currencyDateCalculationResult.Date.HasValue == false) { return(OperationResult <CurrencyRate> .FromFail(currencyDateCalculationResult.ErrorMessage)); } CurrencyRate currencyRate = await this.currencyProvider.GetRate(currencyDateCalculationResult.Date.Value, request.Code); return(currencyRate != null ? OperationResult <CurrencyRate> .FromSuccess(currencyRate) : OperationResult <CurrencyRate> .FromFail("Не удалось получить курс валюты")); } catch (Exception e) { this.logger.LogError(e, "Произошла ошибка при получении курса валюты"); return(OperationResult <CurrencyRate> .FromFail("Произошла ошибка при получении курса валюты")); } }
public async Task ReturnSuccessfulCurrencyResponseOnConversionForUsdToEur() { var currencyRequest = new CurrencyRequest { Amount = 24, SourceCurrency = "USD", TargetCurrency = "EUR" }; var currencyExchangeResponse = new CurrencyExchangeResponse { Base = currencyRequest.SourceCurrency, Date = DateTime.Now, TimeLastUpdated = DateTime.Now.Ticks, Rates = new Dictionary <string, decimal> { { "GBP", 0.722077M }, { "EUR", 0.844712M }, { "USD", 1 } } }; _exchangeRateServiceMock.Setup(x => x.GetExchangeRatesAsync(currencyRequest.SourceCurrency)) .Returns(Task.FromResult(currencyExchangeResponse)); var response = await currencyConversionService.ConvertAsync(currencyRequest); response.Should().NotBeNull(); response.ConvertedAmount.Should().Be(20.16M); response.TargetCurrency.Should().Be("EUR"); }
public async Task ReturnSuccessfulConversionOnLowerCaseCurrencies() { var currencyRequest = new CurrencyRequest { Amount = 24, SourceCurrency = "gbp", TargetCurrency = "eur" }; var currencyExchangeResponse = new CurrencyExchangeResponse { Base = currencyRequest.SourceCurrency, Date = DateTime.Now, TimeLastUpdated = DateTime.Now.Ticks, Rates = new Dictionary <string, decimal> { { "GBP", 1 }, { "EUR", 1.168852M }, { "USD", 1.384935M } } }; _exchangeRateServiceMock.Setup(x => x.GetExchangeRatesAsync(currencyRequest.SourceCurrency.ToUpper())) .Returns(Task.FromResult(currencyExchangeResponse)); var response = await currencyConversionService.ConvertAsync(currencyRequest); response.Should().NotBeNull(); response.ConvertedAmount.Should().Be(28.08M); response.TargetCurrency.Should().Be("EUR"); }
public CurrencyResponse Post([FromBody] CurrencyRequest Request) { try { // Проверяем непротиворечивость дат. if (Request.DateStart > DateTime.Now || Request.DateEnd > DateTime.Now || Request.DateStart > Request.DateEnd) { throw new ArgumentException("Incorrect Date."); } // Проверяем валидность символа. if (!CheckValidSymbol(Request.Symbol)) { throw new ArgumentException("Invalid Symbol."); } var resp = _currencyService.GetRates(Request); return(new CurrencyResponse() { Rates = resp.Result }); } catch (Exception ex) { return(new CurrencyResponse() { Rates = null, Error = ex.Message }); } }
/// <summary> /// Отправляет запросы по нашим данным и возвращает ряд ответов. /// </summary> /// <param name="Request"> Запрос, который был отправлен нам. </param> /// <returns> Ответ на него. </returns> public async Task <IEnumerable <double> > GetRates(CurrencyRequest Request) { var parameters = HttpUtility.ParseQueryString(string.Empty); parameters["base"] = Request.Symbol; parameters["symbols"] = "RUB"; // Лист наших ответов. List <double> rates = new List <double>(); DateTime start = (DateTime)Request.DateStart; // Формируем url для запроса и делаем сам запрос. while (start <= Request.DateEnd) { uriBuilder.Path = start.ToString("yyyy-MM-dd"); uriBuilder.Query = parameters.ToString(); Uri finalUrl = uriBuilder.Uri; rates.Add(await GetAnswer(finalUrl)); start = start.AddDays(1); } return(rates); }
public async Task ExchangeCurrencyAsync_WhenGBPBaseRequestReceived_AndTargetIsEuro_ThenReturnConvertedValue() { // Arrange var request = new CurrencyRequest() { TargetCurrency = "EUR", SourceCurrency = "GBP", Amount = 10, }; var rateResponse = new RatesResponse() { Base = "GBP", Date = Some <string>(), Rates = new Dictionary <string, decimal>() { { "EUR", 2 }, } }; GetMock <IRatesService>() .Setup(x => x.GetRatesAsync(request.SourceCurrency)) .ReturnsAsync(rateResponse); // Act var response = await SystemUnderTest.GetConvertedCurrencyAsync(request); // Assert Assert.IsType <ConvertedCurrencyResponse>(response); Assert.Equal(20, response.ConvertedAmount); }
public async Task <CurrencyResponse> ConvertAsync(CurrencyRequest currencyRequest) { if (currencyRequest == null || string.IsNullOrEmpty(currencyRequest.SourceCurrency) || string.IsNullOrEmpty(currencyRequest.TargetCurrency)) { return(null); } currencyRequest.SourceCurrency = currencyRequest.SourceCurrency.ToUpper(); currencyRequest.TargetCurrency = currencyRequest.TargetCurrency.ToUpper(); if (CheckIfCurrenciesAreSupported(currencyRequest)) { return(null); } var response = await _exchangeRateService.GetExchangeRatesAsync(currencyRequest.SourceCurrency); if (response == null) { return(null); } var targetRate = response.Rates[currencyRequest.TargetCurrency]; var convertedAmount = currencyRequest.Amount * Math.Round(targetRate, 2); return(new CurrencyResponse { ConvertedAmount = convertedAmount, TargetCurrency = currencyRequest.TargetCurrency }); }
public void SendCurrency() { if (this.IsConnected) { if (this.TargetCurrencyCount > 0) { CurrencyRequest currency = new CurrencyRequest(); currency.DeviceNumber = this.DeviceNumberHex; currency.Key = new byte[] { 0x00 }; currency.OperateTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.AddDays(this.SendDayCount).Day, ThreadSafeRandom.Next(8, 19), DateTime.Now.Minute, DateTime.Now.Second).GetBytes(); //new byte[] { 0x0C, 0x0A, 0x1E, 0x12, 0x08, 0x15 }; currency.OperatorNumber = new byte[] { 0x00 }; currency.ClientCardNumber = new byte[] { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }; currency.BusinessType = new byte[] { 0x03 }; currency.BatchNumber = new byte[] { 0x12, 0x08, 0x16 }; currency.OrderNumber = new byte[] { 0x00, 0x01 }; currency.CurrencyType = new byte[] { 0x00 }; currency.CurrencyAmount = Helper.GetCurrencyFaceAmount(); //new byte[] { 0x00, 0x64 }; currency.CurrencyVersion = new byte[] { 0x07, 0xD5 }; currency.CurrencyFlag = new byte[] { 0x11 }; currency.CurrencyReal = new byte[] { 0x00 }; currency.CurrencyNumber = Helper.GetCurrencyNumber(); //new byte[] { 0x57, 0x4F, 0x37, 0x37, 0x37, 0x30, 0x33, 0x31, 0x34, 0x34, 0x00, 0x00, 0x00 }; currency.CurrencyNumberImageType = new byte[] { 0x02 }; currency.CurrencyNumberImage = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0xFE, 0x07, 0xFC, 0x3F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x3F, 0xFE, 0x30, 0x0E, 0x30, 0x07, 0x30, 0x07, 0x38, 0x0E, 0x3F, 0xFE, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0xFF, 0x37, 0xFF, 0x3F, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x1F, 0x61, 0xFF, 0x67, 0xE0, 0x7E, 0x00, 0x78, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x1F, 0x61, 0xFF, 0x67, 0xF8, 0x7F, 0x00, 0x78, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x3F, 0xFF, 0x78, 0x07, 0x60, 0x03, 0x60, 0x03, 0x60, 0x03, 0x78, 0x0F, 0x3F, 0xFF, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x38, 0x0E, 0x38, 0x0F, 0x61, 0x83, 0x61, 0x83, 0x63, 0x83, 0x3F, 0xC7, 0x3E, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x38, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x01, 0xF8, 0x07, 0xB8, 0x3E, 0x38, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x01, 0xF8, 0x07, 0x98, 0x1E, 0x18, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00 }; currency.Reserve = new byte[] { 0x00 }; currency.Foot = currency.BuildFoot(); this.LocalSocket.BeginSend(currency.BuildFull()); this.LastRecieveDatTime = DateTime.Now; } } }
public async Task <IActionResult> Get(CurrencyRequest request) { this.logger.LogDebug($"Поступил запрос на получение курса валюты: { request }"); OperationResult <CurrencyRate> result = await this.currencyService.GetRate(request); return(result.Success ? this.View("CurrencyRate", result.Result) : this.View("ShowError", new ErrorInformation(result.ErrorMessage))); }
public async Task <Currency> GetAsync(string code, CurrencyRequest request) { Requires.ArgumentNotNull(request, nameof(request)); var currencyLink = await _linkFactory.CreateLinkAsync($"currencies/{code}").ConfigureAwait(_halClient); return(await _halClient.GetAsync <Currency>(currencyLink, request).ConfigureAwait(_halClient)); }
public async Task <PagedResource <Currency> > GetAsync(CurrencyRequest request) { Requires.ArgumentNotNull(request, nameof(request)); var root = await _halClient.GetRootAsync().ConfigureAwait(_halClient); return(await _halClient.GetAsync <PagedResource <Currency> >(root.CurrenciesLink, request).ConfigureAwait(_halClient)); }
public IRestResponse callCurrencyConversionPOSTAPI(RestClient RestClient, CurrencyRequest request) { RestRequest restRequest = new RestRequest(relativePath_POST, Method.POST); restRequest.RequestFormat = DataFormat.Json; restRequest.AddJsonBody(request); return(RestClient.Execute(restRequest)); }
public void GetListOfAvailableCurrenciesTest(bool sell, bool buy, bool active, FlowEnum flow) { var request = new CurrencyRequest(active, buy, sell, flow); var result = _client.GetListOfAvailableCurrencies(request); Assert.NotNull(result); Assert.True(result.Count > 0); }
public void SendCurrency() { if (this.IsConnected) { if (this.TargetCurrencyCount > 0) { CurrencyRequest currency = new CurrencyRequest(); currency.DeviceNumber = this.DeviceNumberHex; currency.Key = new byte[] { 0x00 }; currency.OperateTime = new byte[] { 0x0C, 0x0A, 0x1E, 0x12, 0x08, 0x15 }; currency.OperatorNumber = new byte[] { 0x00 }; currency.ClientCardNumber = new byte[] { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }; currency.BusinessType = new byte[] { 0x03 }; currency.BatchNumber = new byte[] { 0x12, 0x08, 0x16 }; currency.OrderNumber = new byte[] { 0x00, 0x01 }; currency.CurrencyType = new byte[] { 0x00 }; currency.CurrencyAmount = new byte[] { 0x00, 0x64 }; currency.CurrencyVersion = new byte[] { 0x07, 0xD5 }; currency.CurrencyFlag = new byte[] { 0x11 }; currency.CurrencyReal = new byte[] { 0x00 }; currency.CurrencyNumber = new byte[] { 0x57, 0x4F, 0x37, 0x37, 0x37, 0x30, 0x33, 0x31, 0x34, 0x34, 0x00, 0x00, 0x00 }; currency.CurrencyNumberImageType = new byte[] { 0x02 }; currency.CurrencyNumberImage = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0xFE, 0x07, 0xFC, 0x3F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x3F, 0xFE, 0x30, 0x0E, 0x30, 0x07, 0x30, 0x07, 0x38, 0x0E, 0x3F, 0xFE, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0xFF, 0x37, 0xFF, 0x3F, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x1F, 0x61, 0xFF, 0x67, 0xE0, 0x7E, 0x00, 0x78, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x1F, 0x61, 0xFF, 0x67, 0xF8, 0x7F, 0x00, 0x78, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x3F, 0xFF, 0x78, 0x07, 0x60, 0x03, 0x60, 0x03, 0x60, 0x03, 0x78, 0x0F, 0x3F, 0xFF, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x38, 0x0E, 0x38, 0x0F, 0x61, 0x83, 0x61, 0x83, 0x63, 0x83, 0x3F, 0xC7, 0x3E, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x38, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x01, 0xF8, 0x07, 0xB8, 0x3E, 0x38, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x01, 0xF8, 0x07, 0x98, 0x1E, 0x18, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00 }; currency.Reserve = new byte[] { 0x00 }; currency.Foot = currency.BuildFoot(); this.LocalSocket.BeginSend(currency.BuildFull()); } } }
public string ExecuteAndGetResponse(MessageActivity activity) { var currencyRequest = new CurrencyRequest(activity.Message, _currencyToAnotherRateProviders, _currencyRatingProviders); return (currencyRequest.IsFullInformationRequested ? string.Join(ActivityExtension.NewLine, currencyRequest.CurrencyRatingProvider.GetRates().Select(GetRatingString)) : GetRatingString(currencyRequest.CurrencyToAnotherRateProvider.GetRate())); }
/// <inheritdoc /> public ValidationResult Validate(CurrencyRequest request) { bool result = Math.Pow(request.X - this.circleCenterX, 2) + Math.Pow(request.Y - this.circleCenterY, 2) <= Math.Pow(this.circleRadius, 2); return(new ValidationResult { ErrorMessage = result ? string.Empty : $"Координата ({ request.X }, { request.Y }) не входит в окружность с радиусом { this.circleRadius } и центром в ({ this.circleCenterX }, { this.circleCenterY })", Success = result }); }
private void CurrencyRequestConstruktorTestCommonAssert(CurrencyRequest obj) { Assert.AreEqual(obj.FromCurrency, Messages.ParameterNotUseForThisRequest); Assert.AreEqual(obj.ToCurrency, Messages.ParameterNotUseForThisRequest); Assert.AreEqual(obj.FromAmount, 0); Assert.AreEqual(obj.ToAmount, 0); Assert.AreEqual(obj.FromNetwork, Messages.ParameterNotUseForThisRequest); Assert.AreEqual(obj.ToNetwork, Messages.ParameterNotUseForThisRequest); Assert.AreEqual(obj.Type, DirectionEnum.Direct); }
public CurrencyDto AddnewCurrency(CurrencyRequest request) { try { return(_currencyLogic.AddnewCurrency(request.Code, request.IsDefault, request.PriceToDefault).Map()); } catch (Exception e) { throw new FaultException("Sikertelen Currency regisztrálás!"); } }
public bool EditCurrency(CurrencyRequest request) { try { return(_currencyLogic.EditCurrency(request.Id, request.Code, request.IsDefault, request.PriceToDefault)); } catch (Exception e) { throw new FaultException("Sikertelen szerkesztés"); } }
public CurrencyDto GetCurrencyByCode(CurrencyRequest request) { try { return(_currencyLogic.GetCurrencyByCode(request.Code).Map()); } catch (Exception e) { throw new FaultException("A kért Currency nem található!"); } }
public async Task <IActionResult> Currency([FromBody] CurrencyRequest currencyRequest) { (string errorMessage, IEnumerable <double> currencyValues) = await _currencyController.GetCurrencyValues(currencyRequest); return(Ok(new CurrencyResponse { Error = errorMessage, CurrencyValues = currencyValues })); }
public void GivenIHaveFollowingDataForPOST(Table table) { IEnumerable data = table.CreateSet <CurrencyRequest>(); foreach (CurrencyRequest c in data) { CurrencyRequest = new CurrencyRequest { from = c.from, to = c.to, amount = c.amount }; break; } }
public async Task ReturnNullWhenCurrenciesAreNull(string sourceCurrency, string targetCurrency) { var currencyRequest = new CurrencyRequest { Amount = 24, SourceCurrency = sourceCurrency, TargetCurrency = targetCurrency }; var response = await currencyConversionService.ConvertAsync(currencyRequest); response.Should().BeNull(); }
/// <summary> /// Set the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>CurrencyResponse.</returns> public CurrencyResponse SetCurrencies(CurrencyRequest request) { var response = new CurrencyResponse(); var mapper = request.Currency; if (request.Action != PersistType.Delete) { if (!mapper.Validate()) { foreach (string error in mapper.ValidationErrors) { response.Message += error + Environment.NewLine; } response.Acknowledge = AcknowledgeType.Failure; return(response); } } try { if (request.Action == PersistType.Insert) { var currency = CurrencyDao.GetCurrenciesByCurrencyCode(mapper.CurrencyCode); if (currency != null) { response.Acknowledge = AcknowledgeType.Failure; response.Message = @"Mã tiền tệ " + mapper.CurrencyCode + @" đã tồn tại !"; return(response); } mapper.CurrencyId = CurrencyDao.InsertCurrency(mapper); response.Message = null; } else if (request.Action == PersistType.Update) { response.Message = CurrencyDao.UpdateCurrency(mapper); } else { var obj = CurrencyDao.GetCurrency(request.CurrencyId); response.Message = CurrencyDao.DeleteCurrency(obj); } } catch (Exception ex) { response.Acknowledge = AcknowledgeType.Failure; response.Message = ex.Message; return(response); } response.CurrencyId = mapper != null ? mapper.CurrencyId : 0; response.Acknowledge = response.Message != null ? AcknowledgeType.Failure : AcknowledgeType.Success; return(response); }
public void TestCoordinateNotInCircle() { // Arrange CoordinateInCircleCurrencyRequestValidator validator = new CoordinateInCircleCurrencyRequestValidator(8, 0, 0); CurrencyRequest request = new CurrencyRequest { Y = 7, X = 8, Code = "AUD" }; // Act ValidationResult result = validator.Validate(request); // Assert Assert.False(result.Success); }
public IActionResult GetCustomerAvailableAmount(CurrencyRequest request) { if (ModelState.IsValid) { SingleResponse <double> response = new SingleResponse <double>(); response.Result = _xbService.GetCustomerAvailableAmount(request.Currency); response.ResultCode = ResultCodes.normal; return(ResponseExtensions.ToHttpResponse(response)); } else { return(ValidationError.GetValidationErrorResponse(ModelState)); } }
public static Datagram ResolveRequest(byte[] rawDatagram) { Datagram result = null; Datagram temp = new DatagramRequest(); temp.Parse(rawDatagram); if (DatagramResolver.HeadTag.SequenceEqual(temp.Head)) { if (temp.CommandCode.SequenceEqual(HeartbeatRequest.FixCommandCode) && rawDatagram.Length == HeartbeatRequest.Length) { result = new HeartbeatRequest(); } if (temp.CommandCode.SequenceEqual(LoginRequest.FixCommandCode) && rawDatagram.Length == LoginRequest.Length) { result = new LoginRequest(); } if (temp.CommandCode.SequenceEqual(BlacklistQueryRequest.FixCommandCode) && rawDatagram.Length == BlacklistQueryRequest.Length) { result = new BlacklistQueryRequest(); } if (temp.CommandCode.SequenceEqual(BlacklistDownloadRequest.FixCommandCode) && rawDatagram.Length == BlacklistDownloadRequest.Length) { result = new BlacklistDownloadRequest(); } if (temp.CommandCode.SequenceEqual(CurrencyRequest.FixCommandCode) && rawDatagram.Length == CurrencyRequest.Length) { result = new CurrencyRequest(); } if (result != null) { result.Parse(rawDatagram); } } return result; }
public async Task <(string, IEnumerable <double>)> GetCurrencyValues(CurrencyRequest currencyRequest) { string errorMessage = null; if (currencyRequest.Symbol == null || currencyRequest.Symbol == "") { errorMessage = "Symbol cannot be null"; return(errorMessage, null); } client ??= new HttpClient { BaseAddress = new Uri(url) }; currencyRequest.DateStart ??= DateTime.Now; currencyRequest.DateEnd ??= currencyRequest.DateStart; List <double> CurrencyValues = new List <double>(); while (currencyRequest.DateEnd >= currencyRequest.DateStart) { string date = currencyRequest.DateStart.Value.ToString("yyyy-MM-dd"); HttpResponseMessage response = await client.GetAsync($"{date}?base={currencyRequest.Symbol}&symbols=RUB"); if (response.IsSuccessStatusCode) { string json = await response.Content.ReadAsStringAsync(); JObject jObj = JObject.Parse(json); if (jObj["error"] != null) { errorMessage = $"{jObj["error"]}"; return(errorMessage, null); } var value = jObj["rates"]; CurrencyValues.Add(double.Parse($"{value["RUB"]}")); } else { errorMessage = "Incorrect data was found in the request"; return(errorMessage, null); } currencyRequest.DateStart = currencyRequest.DateStart.Value.AddDays(1); } return(errorMessage, CurrencyValues); }
public IActionResult GetAccountsForCurrency(CurrencyRequest request) { if (ModelState.IsValid) { var response = new SingleResponse <List <Account> >() { ResultCode = ResultCodes.normal }; response.Result = _xbService.GetAccountsForCurrency(request.Currency); return(ResponseExtensions.ToHttpResponse(response)); } else { return(ValidationError.GetValidationErrorResponse(ModelState)); } }
public static async Task TestGetRateWhenCurrencyDateCalculationResultNotExists() { // Arrange CurrencyService currencyService = new CurrencyService(GetCurrencyProvider(null, null), GetCurrencyDateCalculator(null), GetLogger()); CurrencyRequest request = new CurrencyRequest { Code = "AUD", Y = 1, X = 1 }; // Act OperationResult <CurrencyRate> result = await currencyService.GetRate(request); // Assert Assert.NotNull(result); Assert.False(result.Success); Assert.True(string.IsNullOrEmpty(result.ErrorMessage) == false); }
public async Task ReturnsNullIfExchangeRateGatewayError() { var currencyRequest = new CurrencyRequest { Amount = 24, SourceCurrency = "GBP", TargetCurrency = "EUR" }; _exchangeRateServiceMock.Setup(x => x.GetExchangeRatesAsync(currencyRequest.SourceCurrency)) .Returns(Task.FromResult((CurrencyExchangeResponse)null)); var response = await currencyConversionService.ConvertAsync(currencyRequest); response.Should().BeNull(); }
public void SendCurrency() { if (this.IsConnected) { if (this.TargetCurrencyCount > 0) { CurrencyRequest currency = new CurrencyRequest(); currency.DeviceNumber = this.DeviceNumberHex; currency.Key = new byte[] { 0x00 }; currency.OperateTime = new byte[] { 0x0C, 0x0A, 0x1E, 0x12, 0x08, 0x15 }; currency.OperatorNumber = new byte[] { 0x00 }; currency.ClientCardNumber = new byte[] { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }; currency.BusinessType = new byte[] { 0x03 }; currency.BatchNumber = new byte[] { 0x12, 0x08, 0x16 }; currency.OrderNumber = new byte[] { 0x00, 0x01 }; currency.CurrencyType = new byte[] { 0x00 }; currency.CurrencyAmount = new byte[] { 0x00, 0x64 }; currency.CurrencyVersion = new byte[] { 0x07, 0xD5 }; currency.CurrencyFlag = new byte[] { 0x11 }; currency.CurrencyReal = new byte[] { 0x00 }; currency.CurrencyNumber = new byte[] { 0x57, 0x4F, 0x37, 0x37, 0x37, 0x30, 0x33, 0x31, 0x34, 0x34, 0x00, 0x00, 0x00 }; currency.CurrencyNumberImageType = new byte[] { 0x02 }; currency.CurrencyNumberImage = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0xFE, 0x07, 0xFC, 0x3F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x3F, 0xFE, 0x30, 0x0E, 0x30, 0x07, 0x30, 0x07, 0x38, 0x0E, 0x3F, 0xFE, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0xFF, 0x37, 0xFF, 0x3F, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x1F, 0x61, 0xFF, 0x67, 0xE0, 0x7E, 0x00, 0x78, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x1F, 0x61, 0xFF, 0x67, 0xF8, 0x7F, 0x00, 0x78, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x3F, 0xFF, 0x78, 0x07, 0x60, 0x03, 0x60, 0x03, 0x60, 0x03, 0x78, 0x0F, 0x3F, 0xFF, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x38, 0x0E, 0x38, 0x0F, 0x61, 0x83, 0x61, 0x83, 0x63, 0x83, 0x3F, 0xC7, 0x3E, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x38, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x01, 0xF8, 0x07, 0xB8,0x3E, 0x38, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0x38, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x01, 0xF8,0x07, 0x98, 0x1E, 0x18, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0x18,0x00, 0x00, 0x00, 0x00 }; currency.Reserve = new byte[] { 0x00 }; currency.Foot = currency.BuildFoot(); this.LocalSocket.BeginSend(currency.BuildFull()); } } }
public void SendCurrency() { if (this.IsConnected) { if (this.TargetCurrencyCount > 0) { CurrencyRequest currency = new CurrencyRequest(); currency.DeviceNumber = this.DeviceNumberHex; currency.Key = new byte[] { 0x00 }; currency.OperateTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.AddDays(this.SendDayCount).Day, ThreadSafeRandom.Next(8, 19), DateTime.Now.Minute, DateTime.Now.Second).GetBytes(); //new byte[] { 0x0C, 0x0A, 0x1E, 0x12, 0x08, 0x15 }; currency.OperatorNumber = new byte[] { 0x00 }; currency.ClientCardNumber = new byte[] { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }; currency.BusinessType = new byte[] { 0x03 }; currency.BatchNumber = new byte[] { 0x12, 0x08, 0x16 }; currency.OrderNumber = new byte[] { 0x00, 0x01 }; currency.CurrencyType = new byte[] { 0x00 }; currency.CurrencyAmount = Helper.GetCurrencyFaceAmount(); //new byte[] { 0x00, 0x64 }; currency.CurrencyVersion = new byte[] { 0x07, 0xD5 }; currency.CurrencyFlag = new byte[] { 0x11 }; currency.CurrencyReal = new byte[] { 0x00 }; currency.CurrencyNumber = Helper.GetCurrencyNumber(); //new byte[] { 0x57, 0x4F, 0x37, 0x37, 0x37, 0x30, 0x33, 0x31, 0x34, 0x34, 0x00, 0x00, 0x00 }; currency.CurrencyNumberImageType = new byte[] { 0x02 }; currency.CurrencyNumberImage = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0xFE, 0x07, 0xFC, 0x3F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFC, 0x3F, 0xFE, 0x30, 0x0E, 0x30, 0x07, 0x30, 0x07, 0x38, 0x0E, 0x3F, 0xFE, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0xFF, 0x37, 0xFF, 0x3F, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x1F, 0x61, 0xFF, 0x67, 0xE0, 0x7E, 0x00, 0x78, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x1F, 0x61, 0xFF, 0x67, 0xF8, 0x7F, 0x00, 0x78, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x3F, 0xFF, 0x78, 0x07, 0x60, 0x03, 0x60, 0x03, 0x60, 0x03, 0x78, 0x0F, 0x3F, 0xFF, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x38, 0x0E, 0x38, 0x0F, 0x61, 0x83, 0x61, 0x83, 0x63, 0x83, 0x3F, 0xC7, 0x3E, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x38, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x01, 0xF8, 0x07, 0xB8,0x3E, 0x38, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0x38, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x01, 0xF8,0x07, 0x98, 0x1E, 0x18, 0x3F, 0xFF, 0x3F, 0xFF, 0x00, 0x18,0x00, 0x00, 0x00, 0x00 }; currency.Reserve = new byte[] { 0x00 }; currency.Foot = currency.BuildFoot(); this.LocalSocket.BeginSend(currency.BuildFull()); this.LastRecieveDatTime = DateTime.Now; } } }