public ExchangeRateDetail AddReverseExchangeRateAfterManipulation(GenerateExchangeRateModel GenerateExchangeRate, string userId) { ExchangeRateDetail exchangeRate = new ExchangeRateDetail(); exchangeRate.CreatedById = userId; exchangeRate.CreatedDate = DateTime.UtcNow; exchangeRate.Date = GenerateExchangeRate.Date; exchangeRate.ToCurrency = GenerateExchangeRate.FromCurrencyId; exchangeRate.FromCurrency = GenerateExchangeRate.ToCurrencyId; exchangeRate.Rate = 1 / (decimal)GenerateExchangeRate.Rate; exchangeRate.IsDeleted = false; return(exchangeRate); }
public void GetSystemGeneratedExchangeRates(List <GenerateExchangeRateModel> exchangeRateList, ref List <ExchangeRateDetail> exchangeRateDetails, List <CurrencyDetails> currencyDetails, string userId) { try { int baseCurrenyId = exchangeRateList.FirstOrDefault().FromCurrencyId; foreach (GenerateExchangeRateModel item in exchangeRateList) { exchangeRateDetails.Add(AddExchangeRateAfterManipulation(item, userId)); if (item.ToCurrencyId != baseCurrenyId) { exchangeRateDetails.Add(AddReverseExchangeRateAfterManipulation(item, userId)); } } if (currencyDetails.Any()) { //to currency for (int i = 0; i < currencyDetails.Count; i++) { //from currency for (int j = 0; j < currencyDetails.Count; j++) { //skipping base currency from conversion present in fromcurrency and tocurrency if (currencyDetails[i].CurrencyId != baseCurrenyId && currencyDetails[j].CurrencyId != baseCurrenyId) { GenerateExchangeRateModel generateExchangeRate = new GenerateExchangeRateModel(); generateExchangeRate.ToCurrencyId = currencyDetails[i].CurrencyId; generateExchangeRate.FromCurrencyId = currencyDetails[j].CurrencyId; generateExchangeRate.Date = exchangeRateList.FirstOrDefault().Date; generateExchangeRate.Rate = (double)(exchangeRateDetails.FirstOrDefault(x => x.ToCurrency == generateExchangeRate.ToCurrencyId && x.FromCurrency == baseCurrenyId).Rate / exchangeRateDetails.FirstOrDefault(y => y.FromCurrency == baseCurrenyId && y.ToCurrency == generateExchangeRate.FromCurrencyId).Rate); exchangeRateDetails.Add(AddExchangeRateAfterManipulation(generateExchangeRate, userId)); } } } } } catch (Exception exception) { throw new Exception(exception.Message); } }