public async Task <TradeDto> CreateAsync(TradeModel tradeModel, decimal totalEnrichmentPercent) { var trade = new TradeDto() { SellingCurrency = tradeModel.SellingCurrency.ToEnum <Currency>(true), BuyingCurrency = tradeModel.BuyingCurrency.ToEnum <Currency>(true), SoldAmount = tradeModel.SoldAmount, ClientName = tradeModel.ClientName }; var latestRates = _rateService.GetLatestRates(); var rateBuyingCurrency = _rateService.GetBrokerRate(latestRates, trade.BuyingCurrency); var rateGBP = _rateService.GetBrokerRate(latestRates, Currency.GBP); trade.BrokerRate = _rateService.GetBrokerRate(latestRates, trade.SellingCurrency) / rateBuyingCurrency; trade.PurchasedAmount = trade.SoldAmount / (trade.BrokerRate / (1M + (totalEnrichmentPercent / 100))); trade.ProfitInBuyingCurrency = trade.PurchasedAmount - (trade.SoldAmount / trade.BrokerRate); trade.ProfitInGBP = trade.ProfitInBuyingCurrency / (rateBuyingCurrency / rateGBP); var result = _tradeService.AddOnDate(trade); await _tradeService.SaveChangesAsync(); return(result); }