예제 #1
0
 protected override Result PerformAdditionalWork(MenologyRule found, DeleteRuleCommandBase <MenologyRule> command)
 {
     //удаляем только переходящие праздники
     return((!found.LeapDate.IsEmpty || !found.Date.IsEmpty)
         ? Result.Fail($"Удаление невозможно: Правило Минеи с Id={found.Id} не является Правлиом для переходящих праздников.")
         : Result.Ok());
 }
예제 #2
0
        protected Result Execute(DeleteRuleCommandBase <T> command)
        {
            var found = DbContext.Set <T>().FirstOrDefault(c => c.Id == command.Id);

            if (found == null)
            {
                return(Result.Fail($"Объект с Id {command.Id} не найден."));
            }

            var version = found.TypiconVersion;

            //можно редактировать только правила черновика
            if (!(version.BDate == null && version.EDate == null))
            {
                return(Result.Fail($"Операция удаления невозможна. Правило относится к Версии Устава, находящейся не в статусе Черновика."));
            }

            var addWorkResult = PerformAdditionalWork(found, command);

            if (addWorkResult.Success)
            {
                DbContext.Set <T>().Remove(found);

                version.IsModified = true;

                //await DbContext.SaveChangesAsync();
            }

            return(addWorkResult);
        }
예제 #3
0
        protected override Result PerformAdditionalWork(TypiconVariable found, DeleteRuleCommandBase <TypiconVariable> command)
        {
            var c = command as DefineTypiconVariableCommand;

            StringBuilder errBuilder = new StringBuilder();

            //проходимся по всем Links и заменяем Переменную на значение
            ReplaceVariable(found.CommonRuleLinks, found.GetShortCode(), c.Value)
            .OnFailure(err =>
            {
                errBuilder.AppendLine(err);
            });

            ReplaceVariable(found.ExplicitAddRuleLinks, found.GetShortCode(), c.Value)
            .OnFailure(err =>
            {
                errBuilder.AppendLine(err);
            });

            ReplaceModVariable(found.SignLinks, found.GetShortCode(), c.Value)
            .OnFailure(err =>
            {
                errBuilder.AppendLine(err);
            });

            ReplaceModVariable(found.MenologyRuleLinks, found.GetShortCode(), c.Value)
            .OnFailure(err =>
            {
                errBuilder.AppendLine(err);
            });

            ReplaceModVariable(found.TriodionRuleLinks, found.GetShortCode(), c.Value)
            .OnFailure(err =>
            {
                errBuilder.AppendLine(err);
            });

            return((errBuilder.Length > 0)
                ? Result.Fail(errBuilder.ToString())
                : Result.Ok());
        }
예제 #4
0
 /// <summary>
 /// Реализация дополнительных действий. Перегружается в наследниках
 /// </summary>
 /// <param name="found"></param>
 /// <returns></returns>
 protected virtual Result PerformAdditionalWork(T found, DeleteRuleCommandBase <T> command) => Result.Ok();