Beispiel #1
0
        static void Main(string[] args)
        {
            IServiceCollection services = new ServiceCollection();
            // Startup.cs finally :)
            Startup startup = new Startup();

            startup.ConfigureServices(services);
            IServiceProvider serviceProvider = services.BuildServiceProvider();

            startup.GetConfigs();
            dataRepository = serviceProvider.GetService <IDataServices>();

            imapper = serviceProvider.GetService <IMapper>();

            ///////////Task 1
            DateTime startdate = new DateTime(2019, 10, 01);
            DateTime endDate   = new DateTime(2019, 10, 31);

            List <RootViewModel> Rates = new List <RootViewModel>();

            foreach (DateTime day in Helpers.EachDay(startdate, endDate))
            {
                RootViewModel rate = imapper.Map <Root, RootViewModel>(dataRepository.GetRate(day, "EUR"));
                Rates.Add(rate);
            }


            /////////Task 2
            Console.WriteLine("API Accessed");
            List <ExcelEntity> DataMerge = new List <ExcelEntity>();

            DataMerge.AddRange(dataRepository.GetData(ConfigurationHelper.BasePath + "\\Data\\data1.csv"));
            DataMerge.AddRange(dataRepository.GetData(ConfigurationHelper.BasePath + "\\Data\\data2.csv"));
            DataMerge.AddRange(dataRepository.GetData(ConfigurationHelper.BasePath + "\\Data\\data3.csv"));

            ////////Task 3
            var DataRatesJoin = (from rates in Rates
                                 join data in DataMerge
                                 on rates.Date equals data.date into dm
                                 from subData in dm.DefaultIfEmpty()

                                 select new
            {
                Date = rates.Date,
                Country = subData.country,
                currency = subData.currency,
                amount = subData.amount,
                rate = rates.Rates[subData.currency]
            }).ToList();

            ////////Task 4

            var DataRatesAddEur =
                (from rates in DataRatesJoin
                 select new
            {
                Date = rates.Date,
                Country = rates.Country,
                Currency = rates.currency,
                Amount = rates.amount,
                Rate = rates.rate,
                amount_eur = rates.amount * rates.rate
            }).ToList();

            ////////Task 5
            List <DataRates> DataRatesAddEur2 = DataRatesAddEur.Select(e => new DataRates
            {
                Date          = e.Date,
                Country       = e.Country,
                Currency      = e.Currency,
                Amount        = e.Amount,
                Rate          = e.Rate,
                amount_eur    = e.amount_eur,
                country_group =
                    e.Country == "Austria" || e.Country == "Italy" || e.Country == "Belgium" || e.Country == "Latvia" ? "EUR" :
                    e.Country == "Chile" || e.Country == "Qatar" || e.Country == "United Arab Emirates" || e.Country == "United States of America" ? "ROW" :
                    e.Country == "United Kingdom" || e.Country == "Australia" || e.Country == "South Africa" ? e.Country : "N/A"
            }).ToList();

            ////////Task 6
            var result = DataRatesAddEur2.GroupBy(a => a.country_group)
                         .Select(a => new CountryTotal {
                TotalAmount = a.Sum(b => b.amount_eur), Country = a.Key
            })
                         .OrderByDescending(a => a.TotalAmount)
                         .ToList();
        }