Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            DbContextOptionsBuilder dbContextOptionsBuilder = new DbContextOptionsBuilder();
            var connection = dbContextOptionsBuilder
                             .UseSqlServer("Server=(localdb)\\MSSQLLocalDB;Database=SpaceWeb;Trusted_Connection=True");

            SpaceDbContext spaceDbContext = new SpaceDbContext(connection.Options);
            ExchangeRateToUsdCurrentRepository exchangeRateToUsdCurrentRepository =
                new ExchangeRateToUsdCurrentRepository(spaceDbContext);
            ExchangeAccountHistoryRepository exchangeAccountHistoryRepository =
                new ExchangeAccountHistoryRepository(spaceDbContext);
            ExchangeRateToUsdHistoryRepository exchangeRateToUsdHistoryRepository =
                new ExchangeRateToUsdHistoryRepository(spaceDbContext);

            var configExpression    = new MapperConfigurationExpression();
            var mapperConfiguration = new MapperConfiguration(configExpression);
            var mapper = new Mapper(mapperConfiguration);

            var contextAccessor = new HttpContextAccessor();

            TransactionBankRepository transactionBankRepository = new TransactionBankRepository(spaceDbContext);
            var          bankAccountRepository = new BankAccountRepository(spaceDbContext, mapper, contextAccessor, transactionBankRepository);
            var          userRepository        = new UserRepository(spaceDbContext, bankAccountRepository);
            IUserService userService           = new UserService(userRepository, contextAccessor);



            var currencyService =
                new CurrencyService(userService,
                                    exchangeRateToUsdCurrentRepository,
                                    exchangeAccountHistoryRepository,
                                    exchangeRateToUsdHistoryRepository,
                                    mapper);

            var currentDate = DateTime.Now;

            while (true)
            {
                if ((currentDate.Minute % 3) == 0)
                {
                    currencyService.MoveCurrentExchangesDbToHistoryDb(exchangeRateToUsdCurrentRepository, exchangeRateToUsdHistoryRepository, mapper);
                    currencyService.DeleteCurrentExchRatesFromDb(exchangeRateToUsdCurrentRepository);
                    currencyService.PutCurrentExchangeRatesToDb(
                        exchangeRateToUsdCurrentRepository,
                        currencyService.GetExchangeRates());
                    Console.Write($"Current exchanges update for History DB at {currentDate}");
                    Thread.Sleep(3 * 59 * 1000); //  59 - because updating exchanges takes ~ 1 second and timer gets a displacement.
                }
                currentDate = DateTime.Now;
                currentDate = currentDate.AddSeconds(-currentDate.Second);
            }
        }