Beispiel #1
0
        public void ItemText_MergeEmpty()
        {
            var item1 = new ItemText()
            {
                Items = new List <ItemTextUnit>()
                {
                    new ItemTextUnit("cs-ru", "1"),
                    new ItemTextUnit("cs-cs", "1"),
                }
            };

            var item2 = new ItemText()
            {
                Items = new List <ItemTextUnit>()
                {
                    new ItemTextUnit("cs-ru", "2"),
                    new ItemTextUnit("ru-ru", "1"),
                }
            };

            var item3 = new ItemText();

            item3.Merge(item1, item2);

            Assert.AreEqual("1 2", item3.FirstOrDefault("cs-ru").Text);
            Assert.AreEqual("1", item3.FirstOrDefault("cs-cs").Text);
        }
        private ItemText GetShortName(IReadOnlyList <DayWorship> dayWorships)
        {
            var result = new ItemText();

            foreach (var worship in dayWorships)
            {
                result.Merge(", ", worship.WorshipShortName);
            }

            return(result);
        }
        public ItemText Compose(DateTime date, int seniorRulePriority, IReadOnlyList <DayWorship> dayWorships)
        {
            var result = new ItemText();

            if (dayWorships == null || dayWorships.Count == 0)
            {
                return(result);
            }

            //собираем все имена текстов, кроме главного
            if (dayWorships.Count > 1)
            {
                for (int i = 1; i < dayWorships.Count; i++)
                {
                    result.Merge(dayWorships[i].WorshipName);
                }
            }

            //а теперь разбираемся с главным
            DayWorship seniorService = dayWorships.First();
            var        s             = seniorService.WorshipName;

            if (date.DayOfWeek != DayOfWeek.Sunday ||
                (date.DayOfWeek == DayOfWeek.Sunday &&
                 (seniorService.UseFullName || seniorService.WorshipShortName.IsEmpty)))
            {
                result = new ItemText(seniorService.WorshipName).Merge(result);
            }

            //Воскресный день

            if ((date.DayOfWeek == DayOfWeek.Sunday) && (seniorRulePriority > 1))
            {
                //Если Триоди нет и воскресенье, находим название Недели из Октоиха
                //и добавляем название Недели в начало Name

                //Если имеется короткое название, то добавляем только его
                var shortName = GetShortName(dayWorships);

                var sundayName = queryProcessor.Process(new SundayNameQuery(date, shortName));

                result = sundayName.Merge(result);
            }

            return(result);
        }