Esempio n. 1
0
        public static void ImportFromBorsaItaliana(string startFrom)
        {
            List <string> tickers = getTickers(startFrom);

            int index = 0;
            var borsaItalianaService = new BorsaItalianaService();

            foreach (var ticker in tickers)
            {
                var quote = borsaItalianaService.GetDailyQuotesLastThreeMonths(ticker);
                quote = GetEndOfMonthQuotes(quote);

                if (quote.Any())
                {
                    using (var context = new TradingContext())
                    {
                        var quoteEsistenti = context.Quote.Where(q => q.Ticker == ticker).ToList();

                        foreach (var quota in quote)
                        {
                            var quotaEsistente = quoteEsistenti.SingleOrDefault(q => q.Data.ToString("MMyyyy") == quota.Data.ToString("MMyyyy"));

                            if (quotaEsistente == null)
                            {
                                context.Quote.Add(quota);
                            }
                            else if (quotaEsistente.Chiusura != quota.Chiusura || quotaEsistente.Volumi != quota.Volumi)
                            {
                                context.Update(quotaEsistente);
                                quotaEsistente.Chiusura = quota.Chiusura;
                                quotaEsistente.Volumi   = quota.Volumi;
                            }
                        }

                        var records = context.SaveChanges();
                        Console.WriteLine($"{++index}  {ticker}: {records} record(s) affected");
                    }
                }
                else
                {
                    Console.WriteLine($"{++index}  {ticker}: ERROR no data returned from web service");
                }
            }

            using (var context = new TradingContext())
            {
                var etfService = new EtfService(null, new EtfRepository(context));
                var counter    = etfService.AggiornaQuoteMeseSuccessivo();
                Console.WriteLine($"Quote mese successivo: {counter} record(s) affected");

                var portfolioService = new PortfolioService(borsaItalianaService, null, null, new PortfolioRepository(context));
                counter = portfolioService.AggiornaQuotePortfolio();
                Console.WriteLine($"Quote portafoglio: {counter} record(s) affected");
            }
            Console.WriteLine("Done!");
        }