/// <summary> /// Вычисляет свойства для заполнения выходной формы /// </summary> /// <param name="request"></param> /// <returns></returns> private OutputDayInfo GetOutputDayInfo(IScheduleDataCalculator dataCalculator, ScheduleDataCalculatorRequest request) { //Формируем данные для обработки var response = dataCalculator.Calculate(request); var outputDay = new OutputDay() { TypiconId = request.TypiconId, Date = request.Date }; if (response.Success) { //все удачно - собираем информацию var settings = response.Value.Settings; var brokenConstraints = GetBrokenConstraints(settings); _handler.Settings = settings; _handler.ClearResult(); settings.RuleContainer.Interpret(_handler); var results = _handler.GetResults(); var sign = response.Value.Rule.Template.GetPredefinedTemplate(); outputDay.Header = new OutputDayHeader() { //задаем имя дню Name = _nameComposer.Compose(request.Date, response.Value.Rule.Template.Priority, settings.AllWorships), PredefinedSignId = sign.Id, //Если settings.PrintDayTemplate определен в ModifiedRule, то назначаем его PrintDayTemplate = settings.PrintDayTemplate ?? sign.PrintTemplate }; return(new OutputDayInfo( outputDay, settings.AllWorships, results, brokenConstraints)); } else { //если response возвращается неудачный, то возвращаем "пустую" информацию return(new OutputDayInfo( outputDay,
public void WorshipVariables_Test() { string xml = TestDataXmlReader.GetXmlString("WorshipVariableTest_Rule.xml"); //получаем контейнер с VariableWorshipRules var ruleContainer = VariablesSerializerRoot.Container <RootContainer>().Deserialize(xml); var handler = new ScheduleHandler(); //Интерпретируем ruleContainer.Interpret(handler); //в итоге получаем определенные worships var worships = handler.GetResults(); Assert.AreEqual(1, worships.DayBefore.Count); Assert.AreEqual(2, worships.ThisDay.Count); }