コード例 #1
0
        public void GetInterestRatesTest()
        {
            FXEntities.FXEntities fxEntities = new FXEntities.FXEntities();
            InterestRateAdapter target = new InterestRateAdapter(fxEntities); 
            string currencyCode = "USD"; 
            var actual = target.GetInterestRates(currencyCode);

        }
コード例 #2
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="filePath"></param>
        public static void UploadInterestRateExcel(string filePath)
        {
            FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);

            //1. Reading from a binary Excel file ('97-2003 format; *.xls)
            //IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
            //...
            //2. Reading from a OpenXml Excel file (2007 format; *.xlsx)
            using (IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream))
            {
                Dictionary<int, string> currencyPosition = new Dictionary<int, string>(){
                    {1, "EUR"},{2, "USD"},{3, "JPY"},{4, "GBP"},{5,"CHF"},
                    {6, "AUD"}, {7, "CAD"},{8, "SEK"},{9, "NOK"},{10,"NZD"}
                };
                //...
                //3. DataSet - The result of each spreadsheet will be created in the result.Tables
                // DataSet result = excelReader.AsDataSet();
                //...
                //4. DataSet - Create column names from first row
                excelReader.IsFirstRowAsColumnNames = true;
                DataSet result = excelReader.AsDataSet();

                DataTable dt = result.Tables[0];

                DateTime datetime;
                using (FXEntities.FXEntities fxEntities = new FXEntities.FXEntities())
                {
                    foreach (DataRow dr in dt.Rows)
                    {

                        datetime = FromExcelSerialDate(Convert.ToInt32(dr[0]));
                        foreach (DataColumn dc in dt.Columns)
                        {
                            if (dt.Columns.IndexOf(dc) != 0)
                            {
                                fxEntities.AddToInterestRates(new FXEntities.InterestRate()
                                {
                                    CurrencyCode = currencyPosition[dt.Columns.IndexOf(dc)],
                                    Date = datetime,
                                    Value = Convert.ToDecimal( Convert.ToDouble(dr[dc.ColumnName]))
                                });
                            }
                        }
                    }

                    fxEntities.SaveChanges();
                }

            }

            stream.Close();
        }
コード例 #3
0
 public void GetInterestRatesTest1()
 {
     FXEntities.FXEntities fxEntities = new FXEntities.FXEntities();
     InterestRateAdapter target = new InterestRateAdapter(fxEntities); // TODO: Initialize to an appropriate value
     string currencyCode = "NZD"; // TODO: Initialize to an appropriate value
     var actual = target.GetInterestRates(currencyCode);
     Assert.IsTrue(actual.Count() > 0);
 }
コード例 #4
0
        public static void UploadExchangeBidAskRateExcel(string filePath)
        {
            FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);

            //1. Reading from a binary Excel file ('97-2003 format; *.xls)
            //IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
            //...
            //2. Reading from a OpenXml Excel file (2007 format; *.xlsx)
            using (IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream))
            {
                //...
                //3. DataSet - The result of each spreadsheet will be created in the result.Tables
                // DataSet result = excelReader.AsDataSet();
                //...
                //4. DataSet - Create column names from first row
                
                const int TOTAL_NUM_CURRENCY = 9;

                excelReader.IsFirstRowAsColumnNames = false;
                DataSet result = excelReader.AsDataSet();

                DataTable dt = result.Tables[0];

                DateTime datetime;
                string baseCurrency;
                string variableCurrency;
                int targetFirstColumn;

              
              
                    List<ExchangeRate> exchangeRateList = new List<ExchangeRate>();
                    for(int i = 0; i < TOTAL_NUM_CURRENCY; i++){
                        targetFirstColumn = i * 4;

                        string currencyPair = dt.Rows[0][targetFirstColumn].ToString().Split(' ')[0];
                        baseCurrency = currencyPair.Substring(0, 3);
                        variableCurrency = currencyPair.Substring(3, 3);

                        foreach (DataRow dr in dt.Rows)
                        {
                            if (dt.Rows.IndexOf(dr) == 0 || dt.Rows.IndexOf(dr) == 1)
                                continue;

                            datetime = FromExcelSerialDate(Convert.ToInt32(dr[targetFirstColumn]));


                            exchangeRateList.Add(new FXEntities.ExchangeRate()
                            {
                                BaseCurrencyCode = baseCurrency,
                                VariableCurrencyCode = variableCurrency,
                                Date = datetime,
                                BidPrice = Convert.ToDecimal(Convert.ToDouble(dr[targetFirstColumn + 1])),
                                AskPrice = Convert.ToDecimal(Convert.ToDouble(dr[targetFirstColumn + 2]))
                            });

                        }
                    }

                    DateTime minDate = exchangeRateList.Select(e => e.Date).Min();
                    DateTime maxDate = exchangeRateList.Select(e => e.Date).Max();
                    var availableDates = Util.DateTimeHelper.GetWeekdaysDate(
                            minDate, maxDate   );

                    foreach (var currency in exchangeRateList.Select(e => e.VariableCurrencyCode).Distinct().Where(c => c != "EUR").ToList())
                    {
                        var insertedDates = exchangeRateList
                            .Where(e => e.VariableCurrencyCode == currency).Select(e => e.Date);

                        var leftDays = availableDates.Except(insertedDates);

                        foreach (var leftDay in leftDays)
                        {
                            if (leftDay == minDate)
                                continue;

                            var lastRecordBeforeLeftDay = exchangeRateList
                                                            .Where(e => e.VariableCurrencyCode == currency &&
                                                                e.Date == insertedDates.Where(d => d < leftDay).Max()).FirstOrDefault();

                            if (lastRecordBeforeLeftDay == null)
                                throw new Exception("Cannot find record to replace");
                            else
                            {
                                ExchangeRate newExchangeRate = new ExchangeRate()
                                {
                                    BaseCurrencyCode = lastRecordBeforeLeftDay.BaseCurrencyCode,
                                    VariableCurrencyCode = lastRecordBeforeLeftDay.VariableCurrencyCode,
                                    BidPrice = lastRecordBeforeLeftDay.BidPrice,
                                    AskPrice = lastRecordBeforeLeftDay.AskPrice,
                                    Date = leftDay
                                };

                                exchangeRateList.Add(newExchangeRate);
                                
                            }

                        }
                    }
                    using (FXEntities.FXEntities fxEntities = new FXEntities.FXEntities())
                    {
                        exchangeRateList.ForEach(e => fxEntities.AddToExchangeRates(e));
                      fxEntities.SaveChanges();
                      }

            }

            stream.Close();
        }