public string Add(SaveCurrencyExchangeData model) { string message; if (_queries.GetCurrencyExchanges().Any(c => c.Brand.Id == model.BrandId && c.IsBaseCurrency && c.Brand.BaseCurrencyCode == model.Currency)) { throw new RegoException("Base currency can't set as Currency To"); } if (_queries.GetCurrencyExchanges().Any(c => c.BrandId == model.BrandId && !c.IsBaseCurrency && c.CurrencyToCode == model.Currency)) { throw new RegoException("Currency Exchange Rate already exists"); } using (var scope = CustomTransactionScope.GetTransactionScope()) { var currencyExchange = new CurrencyExchange { BrandId = model.BrandId, CurrencyToCode = model.Currency, CurrentRate = model.CurrentRate, CreatedBy = _actorInfoProvider.Actor.UserName, DateCreated = DateTimeOffset.UtcNow, }; _paymentRepository.CurrencyExchanges.Add(currencyExchange); _paymentRepository.SaveChanges(); scope.Complete(); message = "app:currencies.created"; } return(message); }
public async Task UpdateExchangeRatesAsync() { if (await _currencyExchangeRepository.ExistsAsync(exchange => exchange.Created.Date == DateTime.Now.Date)) { return; } var client = _clientFactory.CreateClient(); var currencies = await _currencyRepository.GetAllAsync(); var urlBuilder = new UriBuilder(_configuration.GetSection("openExchangeRates")["Url"]); var query = HttpUtility.ParseQueryString(urlBuilder.Query); query["app_id"] = _configuration.GetSection("openExchangeRates")["AppId"]; query["base"] = currencies.First().CurrencySymbol; query["symbols"] = string.Join(",", currencies.Select(currency => currency.CurrencySymbol)); urlBuilder.Query = query.ToString(); var url = urlBuilder.ToString(); var response = await client.GetAsync(url); var responseObject = JsonConvert.DeserializeObject <Response>(await response.Content.ReadAsStringAsync()); var systemUser = await _userRepository.GetFirstAsync(user => user.Username == "system"); if (systemUser == null) { throw new ServerFailException("System user not exist"); } var exchangeRates = new List <CurrencyRate>(); foreach (var key in responseObject.Rates.Keys) { var currency = currencies.FirstOrDefault(c => c.CurrencySymbol.Equals(key, StringComparison.InvariantCultureIgnoreCase)); if (currency == null) { continue; } exchangeRates.Add(new CurrencyRate { CreatedBy = systemUser.Id, Currency = currency, Rate = responseObject.Rates[key] }); } var exchangeRate = new CurrencyExchange { CreatedBy = systemUser.Id, CurrencyRates = exchangeRates }; await _currencyExchangeRepository.InsertAsync(exchangeRate); }
public ServiceEventArgs <CurrencyExchange> Invoke() { var newCurrencyExchange = new CurrencyExchange() { ContributedCurrency = ContributedCurrency, TargetCurrency = TargetCurrency, DateId = _kernel.Get <UnitOfWork>().Dates.GetList().Last().DateId, Rate = Rate }; var newCurrencyExchangeReversed = new CurrencyExchange() { ContributedCurrency = TargetCurrency, TargetCurrency = ContributedCurrency, DateId = _kernel.Get <UnitOfWork>().Dates.GetList().Last().DateId, Rate = decimal.Round(1 / Rate, 4) }; _kernel.Get <UnitOfWork>().CurrencyExchanges.Create(newCurrencyExchange); _kernel.Get <UnitOfWork>().CurrencyExchanges.Create(newCurrencyExchangeReversed); _kernel.Get <UnitOfWork>().Save(); return(new ServiceEventArgs <CurrencyExchange>() { Status = true, Message = "Successful.", Result = new List <CurrencyExchange>() { newCurrencyExchange, newCurrencyExchangeReversed } }); }
public async Task <IActionResult> Edit(int id, [Bind("id,currency_id,purchase_value,sale_value,assigned_time")] CurrencyExchange currencyExchange) { if (id != currencyExchange.id) { return(NotFound()); } if (ModelState.IsValid) { try { await _currenncyExchangeService.Update(currencyExchange); } catch (DbUpdateConcurrencyException) { if (!CurrencyExchangeExists(currencyExchange.id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(currencyExchange)); }
public void ValidateDifferentFromAndTo() { var penCurrency = new Currency() { Code = "PEN", Name = "" }; var usdCurrency = new Currency() { Code = "USD", Name = "" }; var rate = (decimal)2.62; var currencyExchange = new CurrencyExchange() { ToCurrency = usdCurrency, FromCurrency = usdCurrency, Rate = rate }; var amount = 100; repoMock.Setup(x => x.Find("PEN", "USD")).Returns(currencyExchange); var result = service.CalculateChangeExchange("PEN", "USD", amount); Assert.AreEqual(0, currencyRepoMock.Invocations.Count); Assert.AreEqual(amount * rate, result.ConvertResult); }
public override double CalculatePrice(int reductionCode, string policyName, int listPrice, int numberOfTickets, CurrencyExchange.Contract.Currencies? currency) { LoggingManager.Logger.Log(LoggingCategory.Info, "VIP Pricing"); // Just call the base and give another 10% discount return 0.9 * base.CalculatePrice(reductionCode,policyName,listPrice,numberOfTickets,currency); }
public ActionResult DeleteConfirmed(int id) { CurrencyExchange currencyexchange = db.CurrencyExchanges.Find(id); db.CurrencyExchanges.Remove(currencyexchange); db.SaveChanges(); return(RedirectToAction("Index")); }
public async Task <IActionResult> Create([Bind("id,currency_id,purchase_value,sale_value,assigned_time")] CurrencyExchange currencyExchange) { if (ModelState.IsValid) { await _currenncyExchangeService.AddAndSave(currencyExchange); } return(View(currencyExchange)); }
public void TestCurrencyExchange_Constructor_CurrenciesNull_Exception() { //arrange List <string> currencies = null; //act, assert Assert.ThrowsException <ArgumentException>(() => { CurrencyExchange exchange = new CurrencyExchange(currencies); }); }
public ActionResult Edit(CurrencyExchange currencyexchange) { if (ModelState.IsValid) { db.Entry(currencyexchange).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(currencyexchange)); }
// // GET: /CurrencyExchange/Delete/5 public ActionResult Delete(int id = 0) { CurrencyExchange currencyexchange = db.CurrencyExchanges.Find(id); if (currencyexchange == null) { return(HttpNotFound()); } return(View(currencyexchange)); }
public void TestCurrencyExchange_ExchangeRateCurrencyCrossDoesNotExist_Exception() { //arrange CurrencyExchange exchange = new CurrencyExchange(new List <string> { "AAA", "BBB", "CCC" }); //act, assert Assert.ThrowsException <ArgumentException>(() => exchange.SpecifyExchangeRate("AAADDD", 3.45)); }
public void TestCurrencyExchange_ExchangeRateNegativeRate_Exception() { //arrange CurrencyExchange exchange = new CurrencyExchange(new List <string> { "AAA", "BBB", "CCC" }); //act, assert Assert.ThrowsException <ArgumentException>(() => exchange.SpecifyExchangeRate("AAABBB", -5.50)); }
/// <summary> /// Obtem a cotação das principais moedas referidas no sistema. /// </summary> /// <returns></returns> public CurrencyExchange GetCurrencyExchange() { CurrencyExchange cotacao = new CurrencyExchange(); using (var ctx = new CambioContext()) { DateTime data = DateTime.Now.ToDateZerada(); if (data.DayOfWeek == DayOfWeek.Saturday) { data = data.AddDays(-1); } else if (data.DayOfWeek == DayOfWeek.Sunday) { data = data.AddDays(-2); } //localize as cotações do dia var cotExist = ctx.CotacaoMonetariaDao .Where(c => c.DataCotacao.ToDateZerada() == data) .ToList(); if (cotExist.Count >= 9) { //localizei primeiro a cotação no banco //isso aqui eh mais rapido q obter da internet cotacao.Cotacoes.AddRange(cotExist); } else { var moedas = ctx.MoedaDao.FindAll(); foreach (var m in moedas) { try { //obtem do webservice mesmo //persiste a cotação CotacaoMonetaria cotNew = getCotacao((TypeCodigoBacen)m.CodigoWSCompra, (TypeCodigoBacen)m.CodigoWSVenda); //sempre add cotacao.AddCurrencyExchange(cotNew); SaveCotacaoMonetaria(ctx, cotNew); } catch (Exception ex) { LoggerUtilIts.GenerateLogs(ex, "Falha no WSBacenCambio", "Falha na cotação cambial."); } } } } return(cotacao); }
public ActionResult Create(CurrencyExchange currencyexchange) { if (ModelState.IsValid) { db.CurrencyExchanges.Add(currencyexchange); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(currencyexchange)); }
public async Task CurerncyConverterTest() { const string filePathInput = @"C:\yuvalprojects\C#\CurrencyConverter\currency.txt"; double[] expected = new double[] { 6.8169, 10.22535, 13.6338 }; IUIService UIService = new ConsoleUI(); ICurrencyExchange currencyExchange = new CurrencyExchange(UIService, filePathInput); double[] actual = await currencyExchange.CalculateCurrencyConvertionAsync(); CollectionAssert.AreEqual(expected, actual); }
private void SetDestinationCurrency() { SelectInputForm form = new SelectInputForm(Currency.Load()); if (DialogResult.OK == form.ShowDialog()) { Currency item = form.Selected as Currency; CurrencyExchange entity = Datos.Current as CurrencyExchange; entity.ToCurrencyIso = item.ISOCode; } }
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 TestCurrencyExchange_Constructor_CurrenciesInvalidLength_Exception() { //arrange List <string> currencies = new List <string>(); currencies.Add("AAA"); currencies.Add("BBB"); currencies.Add("CCCC"); currencies.Add("DDD"); //act, assert Assert.ThrowsException <ArgumentException>(() => { CurrencyExchange exchange = new CurrencyExchange(currencies); }); }
public void TestCurrencyExchange_CalculateExchangedRateAmountNotPositive_Exception() { //arrange CurrencyExchange exchange = new CurrencyExchange(new List <string> { "AAA", "BBB", "CCC" }); //act exchange.SpecifyExchangeRate("AAABBB", 6.50); //assert Assert.ThrowsException <ArgumentException>(() => exchange.CalculateExchangedRate("AAABBB", "AAA", -200)); }
public void TestGetCurrencyExchange() { var bancoProvinciaProxyService = new Mock <IBancoProvinciaProxyService>(); var exchange = new CurrencyExchange(1, 1, ""); bancoProvinciaProxyService.Setup(x => x.GetDollarExchange()).Returns(Task.FromResult(exchange)); var sut = new DollarCurrencyService(bancoProvinciaProxyService.Object); var result = sut.GetCurrencyExchange(); Assert.AreSame(exchange, result); }
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); }
private async Task <string> GetExchange(string currencySymbol, int carPrice) { double?dblExRateValue = await CurrencyExchange.GetCurrencyRateAsync(currencySymbol); if (dblExRateValue == null) { return(string.Format("Your currency symbol cannot be found. Please give us a valid one, e.g USD, CAD, JPY, etc.")); // \"{0}\" CurrencySymbol } else { dblExRateValue *= carPrice; return(string.Format("We estimated that you need to pay ${0:0.##}{1} per day. Please contact a bank for more information.", dblExRateValue, currencySymbol.ToUpper())); } }
public void TestGetExchange() { var serviceProvider = new Mock <IServiceProvider>(); var exchangeService = new Mock <ICurrencyExchangeService>(); var exchange = new CurrencyExchange(1, 1, ""); serviceProvider.Setup(x => x.GetService(It.IsAny <Type>())).Returns(exchangeService.Object); exchangeService.Setup(x => x.GetCurrencyExchange()).Returns(exchange); var sut = new CurrenciesExchangeService(serviceProvider.Object); var result = sut.GetExchange("USD"); Assert.AreSame(exchange, result); }
public async Task <IActionResult> DollarExchangeByCurrency(string iso) { if (iso == null) { return(BadRequest("No currency ISO specified")); } CurrencyExchange ce = new CurrencyExchange(); var result = await ce.calculateExchange(iso); if (result.success) { return(Ok(result.response)); } return(BadRequest(result.errorMessage)); }
public void TestCurrencyExchange_ExchangeRateChange() { //arrange CurrencyExchange exchange = new CurrencyExchange(new List <string> { "AAA", "BBB", "CCC" }); double expectedResult = 2.50; //act exchange.SpecifyExchangeRate("AAABBB", 6.50); exchange.SpecifyExchangeRate("AAABBB", 2.50); double actualResult = exchange.ExchangeRates["AAABBB"]; //assert Assert.AreEqual(expectedResult, actualResult); }
public void TestCurrencyExchange_CurrencyCrosses_GetOnce() { //arrange CurrencyExchange exchange = new CurrencyExchange(new List <string> { "AAA", "BBB", "CCC" }); List <string> expectedResult = new List <string> { "AAABBB", "AAACCC", "BBBCCC" }; //act List <string> actualResult = exchange.CurrencyCrosses; //assert CollectionAssert.AreEqual(expectedResult, actualResult); }
public void TestCurrencyExchange_CalculateExchangedRate_CheckOne() { //arrange CurrencyExchange exchange = new CurrencyExchange(new List <string> { "AAA", "BBB", "CCC" }); Dictionary <string, double> expectedResult = new Dictionary <string, double>(); expectedResult.Add("AAABBB", 6.50); //act exchange.SpecifyExchangeRate("AAABBB", 6.50); Dictionary <string, double> actualResult = exchange.ExchangeRates; //assert CollectionAssert.AreEqual(expectedResult, actualResult); }
public async Task InitializeAsync() { _cts?.Cancel(); _cts = new CancellationTokenSource(); var token = _cts.Token; try { var newsTask = News.InitializeAsync(token); var currencyExchange = CurrencyExchange.InitializeAsync(token); await Tools.WhenAll(newsTask, currencyExchange); } catch (Exception e) when(!token.IsCancellationRequested) { Debug.WriteLine(e); } }
private void AddADataRow(int AIndex, String AAccountCode, string ACurrencyValue, decimal AExchangeRate, DateTime AdateEffectiveFrom, Boolean ADoRevaluation) { CurrencyExchange ce = new CurrencyExchange(AAccountCode, ACurrencyValue, AExchangeRate, AdateEffectiveFrom, ADoRevaluation); FcurrencyExchangeList.Add(ce); FBoundList = new DevAge.ComponentModel.BoundList <CurrencyExchange> (FcurrencyExchangeList); grdDetails.DataSource = FBoundList; FBoundList.AllowNew = false; FBoundList.AllowDelete = false; FlinkController.SetDataList(FcurrencyExchangeList); }
private void AddADataRow(int AIndex, string ACurrencyValue, decimal AExchangeRate) { CurrencyExchange ce = new CurrencyExchange(ACurrencyValue, AExchangeRate); FcurrencyExchangeList.Add(ce); FBoundList = new DevAge.ComponentModel.BoundList <CurrencyExchange> (FcurrencyExchangeList); grdDetails.DataSource = FBoundList; FBoundList.AllowNew = false; FBoundList.AllowDelete = false; for (Int32 column = 1; column <= 3; column++) { grdDetails.Columns[column].GetDataCell(AIndex).Editor.EnableEdit = false; } linkClickDelete.SetDataList(FcurrencyExchangeList); }