/// <summary>
        /// Get list of exchange rates history entities for specific period (from model) for specific currency
        /// </summary>
        /// <param name="statisticsModel">Data Model</param>
        /// <param name="currencyCode">Currency Code</param>
        /// <returns></returns>
        private List<ExchangeRatesHistory> GetExchangeRatesForCurrency(ExchangeRatesStatisticsModel statisticsModel, string currencyCode)
        {
            List<ExchangeRatesHistory> ratesHistory = new List<ExchangeRatesHistory>();
            try
            {
                using (ExchangeRatesDataModelContainer dbModel = new ExchangeRatesDataModelContainer())
                {
                    //Extract existing data from database
                    ratesHistory = dbModel.ExchangeRatesHistories
                        .Where(r =>
                            r.Date >= statisticsModel.StartDate &&
                            r.Date <= statisticsModel.EndDate &&
                            (r.Currency.ServiceCode == currencyCode))
                        .ToList();
                }
            }
            catch (Exception e)
            {
                throw new ApplicationException("Unable to get rates history from Database", e);
            }

            for (DateTime currentDate = statisticsModel.StartDate; currentDate <= statisticsModel.EndDate; currentDate = currentDate.AddDays(1))
            {
                List<ExchangeRatesHistory> existingRate = ratesHistory
                    .Where(rh => rh.Date == currentDate).ToList();

                if (existingRate.Count == 0)
                {
                    List<ExchangeRatesHistory> ratesFromService = GetExchangeRatesFromService(currentDate)
                        .Where(r => r.Currency.ServiceCode == currencyCode).ToList();
                    AddRatesToDb(ratesFromService);
                    ratesHistory.AddRange(ratesFromService);
                }
            }
            return ratesHistory;
        }
 /// <summary>
 /// Add new exchange rates history entries to database
 /// </summary>
 /// <param name="rates">list of entities to add</param>
 private void AddRatesToDb(List<ExchangeRatesHistory> rates)
 {
     try
     {
         using (ExchangeRatesDataModelContainer dbModel = new ExchangeRatesDataModelContainer())
         {
             foreach (var rate in rates)
             {
                 rate.Currency = dbModel.Currencies.Where(c => c.ServiceCode == rate.Currency.ServiceCode).First();
                 dbModel.ExchangeRatesHistories.AddObject(rate);
             }
             dbModel.SaveChanges();
         }
     }
     catch (Exception e)
     {
         throw new ApplicationException("Unable to add rates history to Database", e);
     }
 }