Ejemplo n.º 1
0
        public PartialViewResult CurrencyConvertorTool(CurrencyToolViewModel model)
        {
            model.OutputAmount = _currencyService.Convert(model.InputAmount, model.CurrencyTypeFrom, model.CurrencyTypeTo);
            var rates = _currencyService.GetCurrencyConversions().Where(c => c.CurrencyTypeTo != c.CurrencyTypeFrom);

            model.CurrencyTypesList = new SelectList(rates, "CurrencyTypeTo", "CurrencyTypeTo");
            return(PartialView("_CurrencyConvertorTool", model));
        }
Ejemplo n.º 2
0
        public RecipeCostSummary Resolve(Recipe source, object dest, RecipeCostSummary destMember, ResolutionContext context)
        {
            RecipeIngredient[] validRecipeIngredients = source.RecipeIngredients
                                                        .Where(x => x.Amount.HasValue &&
                                                               x.Ingredient.Price.HasValue &&
                                                               ((x.Ingredient.ProductSizeIsOneUnit && x.Unit == null) || (!x.Ingredient.ProductSizeIsOneUnit && x.Unit != null)))
                                                        .ToArray();

            var costSummary = new RecipeCostSummary();
            var currency    = (string)context.Items["Currency"];

            foreach (var recipeIngredient in validRecipeIngredients)
            {
                costSummary.IngredientIds.Add(recipeIngredient.Ingredient.Id);

                short  productSize          = recipeIngredient.Ingredient.ProductSize;
                bool   productSizeIsOneUnit = recipeIngredient.Ingredient.ProductSizeIsOneUnit;
                float  amount = recipeIngredient.Amount.Value;
                string unit   = recipeIngredient.Unit;

                decimal price = _currencyService.Convert(recipeIngredient.Ingredient.Price.Value, recipeIngredient.Ingredient.Currency, currency, DateTime.UtcNow.Date);

                costSummary.Cost = AddPricePerAmount(costSummary.Cost, price, productSize, productSizeIsOneUnit, amount, unit);
            }

            if (costSummary.Cost.HasValue)
            {
                costSummary.IsSet          = true;
                costSummary.CostPerServing = costSummary.Cost.Value / source.Servings;
            }

            return(costSummary);
        }
Ejemplo n.º 3
0
        public async Task <TipsOrderEntity> GetTipsOrder(string sku, string currency)
        {
            var transactions = await transactionsRepository.GetTransactionsBySku(sku).ConfigureAwait(false);

            if (!transactions.Any())
            {
                return(null);
            }

            var rates = await ratesRepository.GetRates().ConfigureAwait(false);

            var transactionsResult = currencyService.Convert(currency, transactions, rates);

            var tipsTransactions = transactionsResult.Select(transactionEntity => new TipsTransactionEntity
            {
                Sku      = transactionEntity.Sku,
                Amount   = Math.Round(transactionEntity.Amount, 2),
                Currency = transactionEntity.Currency,
                Tip      = Math.Round(transactionEntity.Amount * TIP_PORCENTAGE, 2)
            }).ToList();

            var result = new TipsOrderEntity
            {
                Currency       = Currencies.Euro,
                TotalTipAmount = Math.Round(transactionsResult.Sum(t => t.Amount) * TIP_PORCENTAGE, 2),
                Transactions   = tipsTransactions
            };

            return(result);
        }
Ejemplo n.º 4
0
        public BaseResponse MoveMoney(MoveMoneyParameter param)
        {
            var result = new BaseResponse();

            try
            {
                result = MinusMoney(new MoneyParameter()
                {
                    Money = param.From, User = param.User
                });
                if (!result.IsError)
                {
                    param.From.Amount   = cr.Convert(param.From.Currency, param.ToCurrency, param.From.Amount);
                    param.From.Currency = param.ToCurrency;
                    result = PlusMoney(new MoneyParameter()
                    {
                        Money = param.From, User = param.User
                    });
                }
            }
            catch (Exception e)
            {
                result.IsError      = true;
                result.ErrorMessage = e.Message;
            }
            return(result);
        }
Ejemplo n.º 5
0
 private async Task <CatalogItemViewModel> CreateCatalogItemViewModel(CatalogItem catalogItem, CancellationToken cancellationToken = default(CancellationToken))
 {
     return(new CatalogItemViewModel()
     {
         Id = catalogItem.Id,
         Name = catalogItem.Name,
         PictureUri = catalogItem.PictureUri,
         Price = await _currencyService.Convert(catalogItem.Price, default_price_unit, user_price_unit, cancellationToken),
         ShowPrice = catalogItem.ShowPrice,
         PriceUnit = user_price_unit,
         PriceSymbol = CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol
     });
 }
        public async Task <IActionResult> CreateInternal(InternalMoneyTransferViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model.Accounts =
                    (List <Core.Entities.Account>) await _accountService.GetAccountsAsync(
                        Guid.Parse(GetCurrentUserId()));

                return(View(model));
            }

            var fromAccount = await _accountService.GetAccountAsync(model.AccountId.Value, true);

            var toAccount = await _accountService.GetAccountAsync(model.ToAccountId.Value, true);

            var currency = await _currencyService.Convert(fromAccount.Currency.Code, toAccount.Currency.Code, model.Amount);

            await _transactionService.CreateTransactionAsync(fromAccount, toAccount, currency.Rate, model.Amount,
                                                             model.Description, fromAccount.Currency.Code, toAccount.Currency.Code);

            return(RedirectToHome());
        }
        public async Task <IActionResult> Index(CurrencyInputModel model)
        {
            if (model.GbpValue == null)
            {
                return(Content("You should provide valid input!"));
            }
            if (model.FromCurrency == model.ToCurrency)
            {
                return(Content("You should select different currencies!"));
            }
            var result = await _currencyService.Convert(model.UserName, model.GbpValue.Value, model.FromCurrency, model.ToCurrency);

            model.Result = result;
            return(Content($"Your converted value is : {model.Result}"));
        }
        private async Task <CatalogItemViewModel> CreateCatalogItemViewModel(CatalogItem catalogItem, bool convertPrice, CancellationToken cancellationToken = default(CancellationToken))
        {
            var price = await(convertPrice?_currencyService.Convert(catalogItem.Price, default_price_unit, user_price_unit, cancellationToken):Task.FromResult(catalogItem.Price));

            return(new CatalogItemViewModel()
            {
                Id = catalogItem.Id,
                Name = catalogItem.Name,
                PictureUri = catalogItem.PictureUri,
                Price = Math.Round(price, 2),
                ShowPrice = catalogItem.ShowPrice,
                PriceUnit = user_price_unit,
                PriceSymbol = CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol
            });
        }
 /// <summary>
 /// Create a catalog item view model from a catalog item data model
 /// </summary>
 /// <param name="catalogItem">Catalog item</param>
 /// <returns>CatalogItemViewModel</returns>
 private async Task <CatalogItemViewModel> CreateCatalogItemViewModelAsync(CatalogItem catalogItem, bool convertPrice = true, CancellationToken cancellationToken = default(CancellationToken))
 {
     return(new CatalogItemViewModel()
     {
         Id = catalogItem.Id,
         Name = catalogItem.Name,
         StoreName = catalogItem.StoreName,
         Stock = catalogItem.Stock,
         PictureUri = catalogItem.PictureUri,
         Price = await(convertPrice
                 ? _currencyService.Convert(catalogItem.Price, default_price_unit, user_price_unit, cancellationToken)
                 : Task.FromResult(catalogItem.Price)),
         ShowPrice = catalogItem.ShowPrice,
         PriceUnit = user_price_unit
     });
 }
 /// <summary>
 /// Create a catalog item view model from a catalog item data model
 /// </summary>
 /// <param name="catalogItem">Catalog item</param>
 /// <returns>CatalogItemViewModel</returns>
 private async Task <CatalogItemViewModel> CreateCatalogItemViewModelAsync(
     CatalogItem catalogItem,
     bool convertPrice = true,
     CancellationToken cancellationToken = default(CancellationToken))
 {
     return(new CatalogItemViewModel()
     {
         Id = catalogItem.Id,
         Name = catalogItem.Name,
         PictureUri = catalogItem.PictureUri,
         Price = await(convertPrice
                 ? _currencyService.Convert(catalogItem.Price, DEFAULT_PRICE_UNIT, USER_PRICE_UNIT, cancellationToken)
                 : Task.FromResult(catalogItem.Price)),
         ShowPrice = catalogItem.ShowPrice,
         PriceUnit = USER_PRICE_UNIT
     });
 }
Ejemplo n.º 11
0
        /// <summary>
        /// Create a catalog item view model from a catalog item data model
        /// </summary>
        /// <param name="catalogItem">Catalog item</param>
        /// <param name="cancellationToken">Cancellation Token</param>
        /// <returns>CatalogItemViewModel</returns>
        private async Task <CatalogItemViewModel> CreateCatalogItemViewModel(CatalogItem catalogItem, bool convertPrice = true, CancellationToken cancellationToken = default(CancellationToken))
        {
            Enum.TryParse(new RegionInfo(CultureInfo.CurrentCulture.Name).ISOCurrencySymbol, true, out userPriceUnit);

            return(new CatalogItemViewModel()
            {
                Id = catalogItem.Id,
                Name = catalogItem.Name,
                PictureUri = catalogItem.PictureUri,
                Price = await(convertPrice ? _currencyService.Convert(catalogItem.Price, DEFAULT_PRICE_UNIT, userPriceUnit, cancellationToken) : Task.FromResult(catalogItem.Price)),
                ShowPrice = catalogItem.ShowPrice,
                CatalogBrandId = catalogItem.CatalogBrandId,
                CatalogTypeId = catalogItem.CatalogTypeId,
                PriceUnit = userPriceUnit
                            // Stocks = catalogItem.StockPerStore
            });
        }
 /// <summary>
 /// Create a catalog item view model from a catalog item data model
 /// </summary>
 /// <param name="catalogItem">Catalog item</param>
 /// <returns>CatalogItemViewModel</returns>
 private async Task <CatalogItemViewModel> CreateCatalogItemViewModelAsync(
     CatalogItem catalogItem,
     bool convertPrice = true,
     CancellationToken cancellationToken = default(CancellationToken))
 {
     return(new CatalogItemViewModel()
     {
         Id = catalogItem.Id,
         Name = catalogItem.Name,
         PictureUri = catalogItem.PictureUri,
         Price = await(convertPrice
                 ? _currencyService.Convert(catalogItem.Price, DEFAULT_PRICE_UNIT, USER_PRICE_UNIT, cancellationToken)
                 : Task.FromResult(catalogItem.Price)),
         ShowPrice = catalogItem.ShowPrice,
         PriceUnit = USER_PRICE_UNIT
                     // ,
                     // Stocks = catalogItem.Stocks.Select(cis => new StockInStore {
                     //     StoreName = cis.Store.Name,
                     //     Stock = cis.Stock}).ToList()
     });
 }
Ejemplo n.º 13
0
        public async Task <WalletApiResponse> Transfer(int userId, [FromBody] TransferRequest convertMoneyRequest)
        {
            try
            {
                if (convertMoneyRequest.Sum <= 0)
                {
                    return(new WalletApiErrorResponse("Нельзя создать перевод с суммой меньшей или равной нулю"));
                }
                if (convertMoneyRequest.SourceWalletId == convertMoneyRequest.TargetWalletId)
                {
                    return(new WalletApiErrorResponse("Нельзя создать перевод в этот же кошлек"));
                }
                using (var trans = _context.Database.BeginTransaction())
                {
                    var sourceWallet = await _context.Wallets.FirstOrDefaultAsync(x => x.UserId == userId && x.Id == convertMoneyRequest.SourceWalletId);

                    if (sourceWallet == null)
                    {
                        return(new WalletApiErrorResponse($"Не существует кошелька с Id = {convertMoneyRequest.SourceWalletId}"));
                    }

                    var targetWallet = await _context.Wallets.FirstOrDefaultAsync(x => x.Id == convertMoneyRequest.TargetWalletId);

                    if (targetWallet == null)
                    {
                        return(new WalletApiErrorResponse($"Не существует кошелька с Id = {convertMoneyRequest.TargetWalletId}"));
                    }

                    var convertedSum    = _currencyService.Convert(convertMoneyRequest.Sum, sourceWallet.Currency, targetWallet.Currency);
                    var transactionDate = DateTime.Now;

                    sourceWallet.CacheSum -= convertMoneyRequest.Sum;
                    if (sourceWallet.CacheSum < 0)
                    {
                        return(new WalletApiErrorResponse("Не хватает денег"));
                    }

                    sourceWallet.Operations.Add(new WalletOperation()
                    {
                        Mov        = -convertMoneyRequest.Sum,
                        CreateDate = transactionDate,
                        Comment    = $"Перевод на кошелек {targetWallet.Id}"
                    });

                    targetWallet.CacheSum += convertedSum;
                    targetWallet.Operations.Add(new WalletOperation()
                    {
                        Mov        = convertedSum,
                        CreateDate = transactionDate,
                        Comment    = $"Перевод с кошелька {sourceWallet.Id}"
                    });

                    await _context.SaveChangesAsync();

                    await trans.CommitAsync();

                    return(new TransferResponse(sourceWallet, targetWallet));
                }
            }
            catch (DbUpdateConcurrencyException)
            {
                return(new WalletApiErrorResponse("Ошибка операции, состояние кошелька было изменено, во время операции"));
            }
            catch (Exception ex)
            {
                return(new WalletApiErrorResponse(ex));
            }
        }
Ejemplo n.º 14
0
 public async Task <ActionResult <decimal> > CheckCurrency(string from, string to, decimal ammount)
 {
     return(Ok(await _currencyService.Convert(ammount, from, to)));
 }
Ejemplo n.º 15
0
        public Dinero Sumar(Dinero aSumar)
        {
            var monedaLocal = !Moneda.Equals(aSumar.Moneda) ? _convertCurrencyService.Convert(aSumar, Moneda) : aSumar;

            return(new Dinero(Moneda, Monto + monedaLocal.Monto));
        }
        public async Task ConvertTest()
        {
            var result = await currencyService.Convert("U", 1, "GBP", "USD");

            Assert.Equal(1.27m, result);
        }