public async Task ExecuteAsync(CancellationToken cancellationToken)
        {
            using (var scope = _scopeFactory.CreateScope())
            {
                await _adminConfig.LoadConfigFromFile(AdminConfig.path);

                var banlistUpdater            = scope.ServiceProvider.GetRequiredService <IBanlistDataToBanlistUpdater>();
                var cardsAndArchetypesUpdater = scope.ServiceProvider.GetRequiredService <ICardsDataToCardsAndArchetypesUpdater>();
                var betaToOfficialConverter   = scope.ServiceProvider.GetRequiredService <IBetaCardToOfficialConverter>();
                var adminConfig = scope.ServiceProvider.GetRequiredService <IAdminConfig>();
                var mediator    = scope.ServiceProvider.GetRequiredService <IMediator>();
                var db          = scope.ServiceProvider.GetRequiredService <YgoProAnalyticsDatabase>();

                using (var transaction = db.Database.BeginTransaction())
                {
                    await betaToOfficialConverter.UpdateCardsFromBetaToOfficial();

                    await cardsAndArchetypesUpdater.UpdateCardsAndArchetypes(adminConfig.CardApiURL);

                    var newBanlists = await banlistUpdater.UpdateBanlists(adminConfig.BanlistApiURL);

                    await mediator.Publish(new CardsRelatedUpdatesCompleted(newBanlists));

                    transaction.Commit();
                }
            }
        }
        public async Task LoadConfigFromFile_FileDoesntExists_CreateNewNotEmptyFile()
        {
            await _adminConfig.LoadConfigFromFile(Path);

            Assert.Multiple(() =>
            {
                Assert.IsTrue(File.Exists(Path));
                Assert.IsNotEmpty(File.ReadAllText(Path));
                Assert.AreEqual(JsonConvert.DeserializeObject <AdminConfig>(File.ReadAllText(Path)).MaxNumberOfResultsPerBrowserPage, _adminConfig.MaxNumberOfResultsPerBrowserPage);
            });
        }