private ScheduleBlock CreateLanguageLevelBlock(List <ScheduleItem> items, string name)
        {
            var baseSegment = new ScheduleSegment
            {
                ScheduleItems = items,
            };

            return(new ScheduleBlock
            {
                ScheduleSegments = new[] { baseSegment },
                Name = name
            });
        }
        private void SetScheduleSegmentAgr(ScheduleSegment segment)
        {
            var query = segment
                        .ScheduleItems
                        .Where(it => it.PaymentPeriod == PaymentPeriodEnum.Course);

            if (query.Any())
            {
                segment.MinPrice = query.Min(it => it.Price);
                segment.MaxPrice = query.Max(it => it.Price);
            }

            segment.Duration = string.Join(", ",
                                           segment
                                           .ScheduleItems
                                           .Select(it => it.Duration)
                                           .Distinct());
        }
        public List <ScheduleSegment> Split(ScheduleSegment segment)
        {
            var groups = segment
                         .ScheduleItems
                         .GroupBy(gr => gr.LanguageLevel.Id);

            var result = new List <ScheduleSegment>();

            foreach (var gr in groups)
            {
                var level = gr.FirstOrDefault().LanguageLevel;
                result.Add(new ScheduleSegment
                {
                    Title         = GetTitle(level),
                    SortPriority  = level.Rang,
                    ScheduleItems = gr
                });
            }

            return(result);
        }
        public List <ScheduleSegment> Split(ScheduleSegment segment)
        {
            var groups = segment
                         .ScheduleItems
                         .GroupBy(it => it.Bunch)
                         .Where(gr => gr.Any())
                         .ToArray();

            var result = new List <ScheduleSegment>();

            foreach (var gr in groups)
            {
                result.Add(new ScheduleSegment
                {
                    Title        = GetTitle(gr.Key, segment.Title),
                    SortPriority = segment.SortPriority
                                   + gr.FirstOrDefault().BunchPriority *coefPriority,
                    ScheduleItems = gr
                });
            }

            return(result);
        }