protected override async Task HandleSupervisionEvent(SupervisionEvent @event, IIccOutput outputSettings)
        {
            Configure(outputSettings);

            var mapping = outputSettings.WeekMapping;
            var weeks   = mapping.Weeks;

            if (mapping.UseWeekModulo)
            {
                weeks = weekMappingHelper.ComputeMapping(mapping.Weeks);
            }

            var supervisions = new List <TimetableSupervisionData>();

            foreach (var supervision in @event.Supervisions)
            {
                var supervisionWeeks = supervision.Weeks ?? Enumerable.Range(1, outputSettings.WeekMapping.Weeks.Count);

                if (string.IsNullOrEmpty(supervision.Teacher))
                {
                    logger.LogDebug("Skipping supervision with empty teacher.");
                    continue;
                }

                var namedWeeks = supervisionWeeks
                                 .Select(x => weeks.ContainsKey(x) ? weeks[x] : null)
                                 .Where(x => x != null)
                                 .Distinct();

                foreach (var week in namedWeeks)
                {
                    supervisions.Add(new TimetableSupervisionData
                    {
                        Id       = Guid.NewGuid().ToString(),
                        Lesson   = supervision.Lesson,
                        Day      = supervision.WeekDay,
                        Location = supervision.Location,
                        Teacher  = supervision.Teacher,
                        IsBefore = true,
                        Week     = week
                    });
                }
            }

            var response = await iccImporter.ImportSupervisionsAsync(outputSettings.SupervisionPeriod, supervisions.ToList());

            await HandleResponseAsync(response);
        }
Beispiel #2
0
 protected abstract Task HandleSupervisionEvent(SupervisionEvent @event, T outputSettings);
Beispiel #3
0
 public Task HandleSupervisionEvent(SupervisionEvent @event, IOutput outputSettings)
 {
     return(HandleSupervisionEvent(@event, CastSettings(outputSettings)));
 }
 private void HandleSupervisionEvent(SupervisionEvent obj)
 {
     Handle("supervision", (handler, settings) => handler.HandleSupervisionEvent(obj, settings));
 }
Beispiel #5
0
 protected override Task HandleSupervisionEvent(SupervisionEvent @event, IFileOutput outputSettings)
 {
     return(WriteJson(@event.Supervisions, outputSettings, "supervisions.json"));
 }