public CustomScheduleDataCalculator(IRuleSerializerRoot ruleSerializer , IRuleHandlerSettingsFactory settingsFactor , IScheduleDataCalculator decoratee) { RuleSerializer = ruleSerializer ?? throw new ArgumentNullException(nameof(ruleSerializer)); Decoratee = decoratee ?? throw new ArgumentNullException(nameof(decoratee)); }
public NonexistedOutputDayFactory(TypiconDBContext dbContext , IScheduleDataCalculator dataCalculator , IScheduleDayNameComposer nameComposer , ITypiconSerializer typiconSerializer , ScheduleHandler handler) : base(dataCalculator, nameComposer, typiconSerializer, handler) { _dbContext = dbContext ?? throw new ArgumentNullException(nameof(dbContext)); }
public AsAdditionDataCalculator(IQueryProcessor queryProcessor , IScheduleDataCalculator innerCalculator , IRuleHandlerSettingsFactory settingsFactory) { _queryProcessor = queryProcessor ?? throw new ArgumentNullException(nameof(queryProcessor)); _innerCalculator = innerCalculator ?? throw new ArgumentNullException(nameof(innerCalculator)); _settingsFactory = settingsFactory ?? throw new ArgumentNullException(nameof(settingsFactory)); }
private readonly ScheduleHandler _handler;// = new ServiceSequenceHandler(); public OutputDayFactory(IScheduleDataCalculator dataCalculator , IScheduleDayNameComposer nameComposer , ITypiconSerializer typiconSerializer , ScheduleHandler handler) { _dataCalculator = dataCalculator ?? throw new ArgumentNullException(nameof(dataCalculator)); _nameComposer = nameComposer ?? throw new ArgumentNullException(nameof(nameComposer)); _typiconSerializer = typiconSerializer ?? throw new ArgumentNullException(nameof(typiconSerializer)); _handler = handler ?? throw new ArgumentNullException(nameof(handler)); }
/// <summary> /// Используется для формирования customsequence /// </summary> /// <param name="dataCalculator"></param> /// <param name="req"></param> /// <returns></returns> public CreateOutputDayResponse Create(IScheduleDataCalculator dataCalculator, CreateOutputDayRequest req) { if (dataCalculator == null) { throw new ArgumentNullException(nameof(dataCalculator)); } OutputDayInfo dayInfo = null; return(InnerCreate(req, ref dayInfo, dataCalculator)); }
/// <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,
protected override CreateOutputDayResponse InnerCreate(CreateOutputDayRequest req, ref OutputDayInfo dayInfo, IScheduleDataCalculator dataCalculator) { var exists = _dbContext.IsOutputDayExists(req.TypiconId, req.Date); if (!exists) { return(base.InnerCreate(req, ref dayInfo, dataCalculator)); } else { dayInfo = null; return(default);
protected virtual CreateOutputDayResponse InnerCreate(CreateOutputDayRequest req, ref OutputDayInfo dayInfo, IScheduleDataCalculator dataCalculator) { if (dayInfo == null) { //Формируем данные для обработки dayInfo = GetOutputDayInfo(dataCalculator, new ScheduleDataCalculatorRequest() { TypiconId = req.TypiconId, TypiconVersionId = req.TypiconVersionId, Date = req.Date }); } if (req.HandlingMode == HandlingMode.DayBefore || req.HandlingMode == HandlingMode.All) { //добавляем DayBefore dayInfo.Day.AddWorships(dayInfo.ScheduleResults.DayBefore, _typiconSerializer); } if (req.HandlingMode == HandlingMode.ThisDay || req.HandlingMode == HandlingMode.All || req.HandlingMode == HandlingMode.AstronomicDay) { //добавляем ThisDay dayInfo.Day.AddWorships(dayInfo.ScheduleResults.ThisDay, _typiconSerializer); } var localDayInfo = dayInfo; //добавляем AstronomicDay if (req.HandlingMode == HandlingMode.AstronomicDay) { //Формируем данные для обработки от следующего дня dayInfo = GetOutputDayInfo(dataCalculator, new ScheduleDataCalculatorRequest() { TypiconId = req.TypiconId, TypiconVersionId = req.TypiconVersionId, Date = req.Date.AddDays(1) }); //складываем значения localDayInfo.Merge(dayInfo, _typiconSerializer); } //Добавить ссылки на службы localDayInfo.Day.OutputFormDayWorships = GetOutputDayDayWorships(localDayInfo.Day, localDayInfo.DayWorships); return(new CreateOutputDayResponse(localDayInfo.Day, localDayInfo.BrokenConstraints)); }
public ScheduleService(IScheduleDataCalculator dataCalculator, IScheduleDayNameComposer nameComposer) { this.dataCalculator = dataCalculator ?? throw new ArgumentNullException("dataCalculator"); this.nameComposer = nameComposer ?? throw new ArgumentNullException("nameComposer"); }