protected override Result PerformAdditionalWork(MenologyRule found, DeleteRuleCommandBase <MenologyRule> command) { //удаляем только переходящие праздники return((!found.LeapDate.IsEmpty || !found.Date.IsEmpty) ? Result.Fail($"Удаление невозможно: Правило Минеи с Id={found.Id} не является Правлиом для переходящих праздников.") : Result.Ok()); }
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); }
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()); }
/// <summary> /// Реализация дополнительных действий. Перегружается в наследниках /// </summary> /// <param name="found"></param> /// <returns></returns> protected virtual Result PerformAdditionalWork(T found, DeleteRuleCommandBase <T> command) => Result.Ok();