Example #1
0
        public Result <LocalizedOutputWeek> GetWeek(int typiconId, DateTime date, string language)
        {
            date = EachDayPerWeek.GetMonday(date);

            var week = new LocalizedOutputWeek()
            {
                Name = _nameComposer.GetLocalizedWeekName(typiconId, date, language)
            };

            int i = 0;

            while (i < 7)
            {
                var dayResult = GetDay(typiconId, date, language);

                if (dayResult.Failure)
                {
                    return(Result.Fail <LocalizedOutputWeek>(dayResult.Error));
                }

                week.Days.Add(dayResult.Value);
                date = date.AddDays(1);
                i++;
            }

            return(Result.Ok(week));
        }
Example #2
0
        /// <summary>
        /// Возвращает неделю
        /// </summary>
        /// <param name="typiconVersionId"></param>
        /// <param name="date"></param>
        /// <returns></returns>
        public IEnumerable <OutputDay> CreateWeek(CreateOutputWeekRequest req)
        {
            List <OutputDay> result = new List <OutputDay>();

            var dayReq = new CreateOutputDayRequest()
            {
                TypiconId        = req.TypiconId,
                TypiconVersionId = req.TypiconVersionId,
                HandlingMode     = HandlingMode.AstronomicDay
            };

            OutputDayInfo dayInfo = null;

            EachDayPerWeek.Perform(req.Date, date =>
            {
                dayReq.Date = date;

                var output = InnerCreate(dayReq, ref dayInfo, _dataCalculator);

                if (output != null)
                {
                    result.Add(output.Day);
                }
            });

            return(result);
        }
        public Result <FilteredOutputWeek> Handle([NotNull] OutputWeekQuery query)
        {
            var date = EachDayPerWeek.GetMonday(query.Date);

            var week = new FilteredOutputWeek()
            {
                Name = QueryProcessor.Process(new WeekNameQuery(query.TypiconId, date, false, query.Filter.Language))
            };

            int i = 0;

            while (i < 7)
            {
                var dayResult = QueryProcessor.Process(new OutputDayQuery(query.TypiconId, date, query.Filter));

                if (dayResult.Failure)
                {
                    return(Result.Fail <FilteredOutputWeek>(dayResult.Error));
                }

                //доблавяем только день, у которого есть богослужения
                if (dayResult.Value.Worships.Count > 0)
                {
                    week.Days.Add(dayResult.Value);
                }

                date = date.AddDays(1);
                i++;
            }

            return(Result.Ok(week));
        }