Exemplo n.º 1
0
        public GetScheduleDayResponse GetScheduleDay(GetScheduleDayRequest request)
        {
            //находим метод обработки дня
            HandlingMode mode = request.CheckParameters.GetMode();

            //Формируем данные для обработки
            var settingsRequest = new ScheduleDataCalculatorRequest()
            {
                Date             = request.Date,
                TypiconVersionId = request.TypiconId,
                ApplyParameters  = request.ApplyParameters,
                CheckParameters  = request.CheckParameters
                                   .SetModeParam((mode == HandlingMode.AstronomicDay) ? HandlingMode.ThisDay : mode)
            };

            OutputDay scheduleDay = GetOrFillScheduleDay(settingsRequest, request.Handler);

            if (mode == HandlingMode.AstronomicDay)
            {
                //ищем службы следующего дня с маркером IsDayBefore == true
                settingsRequest.Date            = request.Date.AddDays(1);
                settingsRequest.CheckParameters = settingsRequest.CheckParameters.SetModeParam(HandlingMode.DayBefore);

                scheduleDay = GetOrFillScheduleDay(settingsRequest, request.Handler, scheduleDay);
            }

            return(new GetScheduleDayResponse()
            {
                Day = scheduleDay
            });
        }
Exemplo n.º 2
0
        public GetScheduleWeekResponse GetScheduleWeek(GetScheduleWeekRequest request)
        {
            ScheduleWeek week = new ScheduleWeek()
            {
                Name = ruleSerializer.BookStorage.Oktoikh.GetWeekName(request.Date, false)
            };

            GetScheduleDayRequest dayRequest = new GetScheduleDayRequest()
            {
                Date     = request.Date,
                Typicon  = request.Typicon,
                Handler  = request.Handler,
                Language = request.Language,
                ThrowExceptionIfInvalid = request.ThrowExceptionIfInvalid,
                ApplyParameters         = request.ApplyParameters,
                CheckParameters         = request.CheckParameters
            };

            int i = 0;

            while (i < 7)
            {
                GetScheduleDayResponse dayResponse = GetScheduleDay(dayRequest);
                week.Days.Add(dayResponse.Day);
                dayRequest.Date = dayRequest.Date.AddDays(1);
                i++;
            }

            return(new GetScheduleWeekResponse()
            {
                Week = week
            });
        }
Exemplo n.º 3
0
        public GetScheduleWeekResponse GetScheduleWeek(GetScheduleWeekRequest request)
        {
            OutputWeek week = new OutputWeek()
            {
                Name = nameComposer.GetWeekName(request.TypiconId, request.Date)
            };

            GetScheduleDayRequest dayRequest = new GetScheduleDayRequest()
            {
                Date      = request.Date,
                TypiconId = request.TypiconId,
                Handler   = request.Handler,
                Language  = request.Language,
                ThrowExceptionIfInvalid = request.ThrowExceptionIfInvalid,
                ApplyParameters         = request.ApplyParameters,
                CheckParameters         = request.CheckParameters
            };

            int i = 0;

            while (i < 7)
            {
                GetScheduleDayResponse dayResponse = GetScheduleDay(dayRequest);
                week.Days.Add(dayResponse.Day);
                dayRequest.Date = dayRequest.Date.AddDays(1);
                i++;
            }

            return(new GetScheduleWeekResponse()
            {
                Week = week
            });
        }
Exemplo n.º 4
0
        private void btnCustomRule_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtCustomRule.Text))
            {
                return;
            }

            settingsFactory.CustomRule = txtCustomRule.Text;

            GetScheduleDayRequest request = new GetScheduleDayRequest()
            {
                Date     = monthCalendarCustomRule.SelectionStart,
                Typicon  = typiconEntity,
                Handler  = new ServiceSequenceHandler(),
                Language = "cs-ru",
                //ApplyParameters = CustomParameters,
                //CheckParameters = new CustomParamsCollection<IRuleCheckParameter>().SetModeParam(HandlingMode.All)
            };

            request.Handler.Settings.Language = LanguageSettingsFactory.Create("cs-ru");

            GetScheduleDayResponse dayResponse = scheduleService.GetScheduleDay(request);

            TextScheduleDayViewer viewer = new TextScheduleDayViewer();

            viewer.Execute(dayResponse.Day);

            webCustomRule.DocumentText = viewer.GetResult();
        }
Exemplo n.º 5
0
        private void btnGetSequence_Click(object sender, EventArgs e)
        {
            //try
            //{
            GetScheduleDayRequest request = new GetScheduleDayRequest()
            {
                Date            = monthCalendarSequence.SelectionStart,
                Typicon         = _typiconEntity,
                Handler         = new ServiceSequenceHandler(),
                Language        = "cs-ru",
                ApplyParameters = CustomParameters,
                CheckParameters = new CustomParamsCollection <IRuleCheckParameter>().SetModeParam(HandlingMode.All)
            };

            request.Handler.Settings.Language = LanguageSettingsFactory.Create("cs-ru");

            GetScheduleDayResponse dayResponse = _scheduleService.GetScheduleDay(request);

            TextScheduleDayViewer viewer = new TextScheduleDayViewer();

            viewer.Execute(dayResponse.Day);

            txtSequence.Clear();
            txtSequence.AppendText(viewer.GetResult());
            //}
            //catch (Exception ex)
            //{
            //    txtSequence.Clear();
            //    txtSequence.AppendText(ex.Message);
            //}
        }
Exemplo n.º 6
0
        private void dateTimePickerTesting_ValueChanged(object sender, EventArgs e)
        {
            GetScheduleDayRequest dayRequest = new GetScheduleDayRequest()
            {
                Date            = dateTimePickerTesting.Value,
                Typicon         = _typiconEntity,
                Handler         = new ScheduleHandler(),
                CheckParameters = new CustomParamsCollection <IRuleCheckParameter>().SetModeParam(HandlingMode.AstronomicDay)
            };

            GetScheduleDayResponse dayResponse = _scheduleService.GetScheduleDay(dayRequest);

            _unitOfWork.SaveChanges();

            textBoxTesting.Clear();

            DateTime easter = _bookStorage.Easters.GetCurrentEaster(dateTimePickerTesting.Value.Year);

            int daysFromEaster = dateTimePickerTesting.Value.Subtract(easter).Days;

            textBoxTesting.AppendText(dayResponse.Day.Date.ToShortDateString() + Environment.NewLine);
            textBoxTesting.AppendText(dayResponse.Day.Name + ". " + daysFromEaster + " дней до Пасхи." + Environment.NewLine);
            foreach (WorshipRuleViewModel el in dayResponse.Day.Schedule)
            {
                string str = string.IsNullOrEmpty(el.Time) ? $"{el.Time} " : "";

                str += $"{el.Name} {el.AdditionalName + Environment.NewLine}";

                textBoxTesting.AppendText(str);
            }
        }
Exemplo n.º 7
0
        public ScheduleDay GetDay(DateTime date)
        {
            GetScheduleDayRequest request = new GetScheduleDayRequest()
            {
                Date            = date,
                Typicon         = _typiconEntity,
                Handler         = new ScheduleHandler(),
                CheckParameters = new CustomParamsCollection <IRuleCheckParameter>().SetModeParam(HandlingMode.All)
            };

            GetScheduleDayResponse response = _scheduleService.GetScheduleDay(request);

            return(response?.Day);
        }
Exemplo n.º 8
0
        public void BerlukiRu_ComparingRequests()
        {
            EFUnitOfWork _unitOfWork = new EFUnitOfWork();

            //BookStorage.Instance = BookStorageFactory.Create();

            TypiconEntity typiconEntity = _unitOfWork.Repository <TypiconEntity>().Get(c => c.Name == "Типикон");

            DateTime date = new DateTime(2017, 9, 24);

            //сначала как в запросе в контроллере BerlukiRuController
            GetScheduleDayRequest dayRequest1 = new GetScheduleDayRequest()
            {
                Date            = date,
                Handler         = new ScheduleHandler(),
                Typicon         = typiconEntity,
                CheckParameters = new CustomParamsCollection <IRuleCheckParameter>().SetModeParam(HandlingMode.AstronomicDay)
            };

            ScheduleService scheduleService = ScheduleServiceFactory.Create();

            GetScheduleDayResponse dayResponse1 = scheduleService.GetScheduleDay(dayRequest1);

            //теперь как TypiconController
            GetScheduleDayRequest dayRequest2 = new GetScheduleDayRequest()
            {
                Date            = date,
                Typicon         = typiconEntity,
                Handler         = new ScheduleHandler(),
                CheckParameters = new CustomParamsCollection <IRuleCheckParameter>().SetModeParam(HandlingMode.AstronomicDay)
            };

            GetScheduleDayResponse dayResponse2 = scheduleService.GetScheduleDay(dayRequest2);

            GetScheduleWeekRequest weekRequest = new GetScheduleWeekRequest()
            {
                Date            = date,
                Typicon         = typiconEntity,
                Handler         = new ScheduleHandler(),
                CheckParameters = new CustomParamsCollection <IRuleCheckParameter>().SetModeParam(HandlingMode.AstronomicDay)
            };

            GetScheduleWeekResponse weekResponse = scheduleService.GetScheduleWeek(weekRequest);

            Assert.AreEqual(dayResponse1.Day.Name, dayResponse2.Day.Name);
            Assert.AreEqual(dayResponse1.Day.Name, weekResponse.Week.Days.Last().Name);
        }
        public GetScheduleDayResponse GetScheduleDay(GetScheduleDayRequest request)
        {
            string key   = KEY_DAY + request.Date;
            var    value = cacheStorage.Retrieve <ScheduleDay>(key);

            if (value == null)
            {
                var response = service.GetScheduleDay(request);
                value = response.Day;
                Store(key, value);

                return(response);
            }
            return(new GetScheduleDayResponse()
            {
                Day = value
            });
        }
Exemplo n.º 10
0
        public void ServiceSequenceHandler_Working()
        {
            EFUnitOfWork _unitOfWork = new EFUnitOfWork();

            //BookStorage.Instance = BookStorageFactory.Create();

            TypiconEntity typiconEntity = _unitOfWork.Repository <TypiconEntity>().Get(c => c.Name == "Типикон");

            GetScheduleDayRequest request = new GetScheduleDayRequest()
            {
                Date            = new DateTime(2018, 5, 21),//DateTime.Today,
                Handler         = new ServiceSequenceHandler(),
                Typicon         = typiconEntity,
                CheckParameters = new CustomParamsCollection <IRuleCheckParameter>().SetModeParam(HandlingMode.AstronomicDay)
            };

            ScheduleService scheduleService = ScheduleServiceFactory.Create();

            GetScheduleDayResponse response = scheduleService.GetScheduleDay(request);
        }
Exemplo n.º 11
0
        public void ScheduleService_GetService()
        {
            EFUnitOfWork _unitOfWork = new EFUnitOfWork();

            //BookStorage.Instance = BookStorageFactory.Create();

            TypiconEntity typiconEntity = _unitOfWork.Repository <TypiconEntity>().Get(c => c.Name == "Типикон");

            ScheduleHandler handler = new ScheduleHandler();

            GetScheduleDayRequest request = new GetScheduleDayRequest()
            {
                Date            = new DateTime(2018, 5, 21),//DateTime.Today,
                Handler         = new ScheduleHandler(),
                Typicon         = typiconEntity,
                CheckParameters = new CustomParamsCollection <IRuleCheckParameter>().SetModeParam(HandlingMode.AstronomicDay)
            };

            ScheduleService scheduleService = ScheduleServiceFactory.Create();

            GetScheduleDayResponse response = scheduleService.GetScheduleDay(request);

            _unitOfWork.SaveChanges();

            Assert.AreEqual(3, response.Day.Schedule.Count);

            StringBuilder builder = new StringBuilder();

            builder.AppendLine(response.Day.Date.ToShortDateString() + " " + response.Day.Name);

            foreach (WorshipRuleViewModel service in response.Day.Schedule)
            {
                builder.AppendLine(service.Time + " " + service.Name);
            }

            Assert.Pass(builder.ToString());
        }