Exemplo n.º 1
0
 public abstract Task SearchAsync(IRepository <ServerFormula> repository, IFormulaCalculator formulaCalculator, IFormulaStatusManager statusManage);
Exemplo n.º 2
0
        public override async Task SearchAsync(IRepository <ServerFormula> repository, IFormulaCalculator formulaCalculator, IFormulaStatusManager statusManager)
        {
            this.repository        = repository;
            this.formulaCalculator = formulaCalculator;
            this.statusManager     = statusManager;

            var observerFormulas = await repository.GetAllAsync(f => f.Status == FormulaStatus.Waiting ||
                                                                f.Status == FormulaStatus.ErrorRequirements ||
                                                                f.Status == FormulaStatus.InProgress,
                                                                tracking : true,
                                                                withRequired : true);

            await ManageStatus(observerFormulas, FormulaStatus.InProgress); //Формулы теперь в самом процессе расчета
            await ProcessInProgress(observerFormulas);

            //Успешно завершаем формулы, которые не отпали с ошибками
            await ManageStatus(observerFormulas.Where(f => f.Status == FormulaStatus.InProgress), FormulaStatus.Success);
        }
Exemplo n.º 3
0
        public override async Task SearchAsync(IRepository <ServerFormula> repository, IFormulaCalculator formulaCalculator, IFormulaStatusManager statusManager)
        {
            this.repository        = repository;
            this.formulaCalculator = formulaCalculator;
            this.statusManager     = statusManager;

            var observerFormulas = await repository.GetAllAsync(f => f.Status == FormulaStatus.Updated,
                                                                tracking : true,
                                                                withEncapsulated : true,
                                                                withRequired : true);

            foreach (var formula in observerFormulas)
            {
                //Говорим, что всех зависимых тоже нужно будем пересчитать
                await ManageStatus(formula.Encapsulated, FormulaStatus.Updated);

                formula.Required.Clear();
            }

            await ManageStatus(observerFormulas, FormulaStatus.Waiting); // И ждем пересчета

            await repository.SaveAsync();
        }
Exemplo n.º 4
0
        public override async Task SearchAsync(IRepository <ServerFormula> repository, IFormulaCalculator formulaCalculator, IFormulaStatusManager statusManager)
        {
            this.repository        = repository;
            this.formulaCalculator = formulaCalculator;
            this.statusManager     = statusManager;

            var observerFormulas = await repository.GetAllAsync(f => f.Status == FormulaStatus.Deleted,
                                                                tracking : true,
                                                                withEncapsulated : true,
                                                                withRequired : true);

            foreach (var formula in observerFormulas)
            {
                //Всех зависящих теперь нужно пересчитывать
                await ManageStatus(formula.Encapsulated, FormulaStatus.ErrorRequirements);

                formula.Required.Clear();                        //Избавляемся от зависимостией
                await repository.DeleteAsync(formula.FormulaId); //И можно спокойно удаляться
            }

            await repository.SaveAsync();
        }
Exemplo n.º 5
0
 public FormulaRepository(CalculatorDbContext context, IFormulaValidator validator, IFormulaStatusManager statusManager)
 {
     db                 = context;
     Validator          = validator;
     this.statusManager = statusManager;
 }