protected override async Task HandleFreeLessonEvent(FreeLessonEvent @event, IIccOutput outputSettings)
        {
            Configure(outputSettings);

            var freeLessons = @event.FreeLessons.Select(freeLesson =>
            {
                return(new FreeLessonTimespanData
                {
                    Start = freeLesson.Start,
                    End = freeLesson.End,
                    Date = freeLesson.Date
                });
            });

            var response = await iccImporter.ImportFreeLessonTimespansAsync(freeLessons.ToList());

            await HandleResponseAsync(response);
        }
Exemple #2
0
        public async Task <ImportResult> ImportFreeLessonsAsync(UntisExportResult result, DateTime?startDate, DateTime?endDate)
        {
            ConfigureImporter();

            var free = result.Days.Where(x => startDate == null || endDate == null || (x.Date >= startDate && x.Date <= endDate))
                       .SelectMany(day =>
            {
                var freeLessons = day.FreeLessons.ToArray();
                var spans       = new List <FreeLessonTimespanData>();

                if (freeLessons.Length > 0)
                {
                    var currentSpan = new FreeLessonTimespanData
                    {
                        Date  = day.Date,
                        Start = freeLessons[0],
                        End   = freeLessons[0]
                    };

                    for (int i = 1; i < freeLessons.Length; i++)
                    {
                        var currentLesson = freeLessons[i];
                        if (currentSpan.End == currentLesson - 1)     // append current span
                        {
                            currentSpan.End++;
                        }
                        else
                        {
                            spans.Add(currentSpan);
                            currentSpan = new FreeLessonTimespanData
                            {
                                Date  = day.Date,
                                Start = currentLesson,
                                End   = currentLesson
                            };
                        }
                    }

                    if (currentSpan != null)
                    {
                        spans.Add(currentSpan);
                    }
                }

                if (day.Type == DayType.Feiertag || day.Type == DayType.Unterrichtsfrei)
                {
                    spans.Add(new FreeLessonTimespanData
                    {
                        Date  = day.Date,
                        Start = result.Settings.NumberOfFirstLesson,
                        End   = result.Settings.NumberOfLessonsPerDay
                    });
                }

                return(spans);
            });

            var response = await importer.ImportFreeLessonTimespansAsync(free.ToList());

            return(HandleResponse(response));
        }