예제 #1
0
        public static ProgressTrackerManager Load(IProgressStorage progressStorage)
        {
            var serialized       = progressStorage.Load();
            var progressTrackers = JsonSerializer.Deserialize <List <ProgressTracker> >(serialized);
            var keyValuePairs    = progressTrackers.Select(pt => new KeyValuePair <int, ProgressTracker>(pt.Id, pt));
            var dictionary       = new Dictionary <int, ProgressTracker>(keyValuePairs);

            return(new ProgressTrackerManager(dictionary));
        }
예제 #2
0
 public QuestionAccessor(
     IOptions <DirectoryOptions> options,
     MediaInfoLocalFileProvider mediaInfoLocalFileProvider,
     IProgressStorage progressStorage)
 {
     _domainFacade = new DomainFacade(
         options.Value.QuestionFullPath,
         mediaInfoLocalFileProvider,
         progressStorage
         );
 }
예제 #3
0
        public DomainFacade(string questionFile, MediaInfoBaseProvider mediaInfoBaseProvider, IProgressStorage progressStorage)
        {
            _progressStorage = progressStorage;

            _kernel = new StandardKernel();
            _kernel.Bind <MediaInfoBaseProvider>()
            .ToConstant(mediaInfoBaseProvider);

            _progressTrackerManager = _progressStorage.HasSave
                ? ProgressTrackerManager.Load(_progressStorage)
                : _kernel.Get <ProgressTrackerManager>();

            _kernel.Bind <ProgressTrackerManager>()
            .ToConstant(_progressTrackerManager);

            _questionManager = _kernel.Get <QuestionManager>();
            _questionManager.LoadQuestionsFromFile(questionFile);
        }
예제 #4
0
        public void Save(IProgressStorage progressStorage)
        {
            var serialized = JsonSerializer.Serialize(_progressTrackers.Values.ToArray());

            progressStorage.Save(serialized);
        }