private IExamWritersResolveStrategy GetStrategy(Settings.ExamWriters.IExamWritersResolver settings) { if (settings == null) { throw new ArgumentNullException("settings must not be null."); } foreach (var strategy in strategies) { if (strategy.Supports(settings)) { return(strategy); } } logger.LogError($"Found no IExamWritersResolveStrategy for type {settings.Type}."); return(null); }
public void Initialize(Settings.ExamWriters.IExamWritersResolver inputSetting) { settings = inputSetting as ISchildExamWritersResolver; var exporter = schildAdapter.GetExporter(); var grades = settings.Rules.SelectMany(x => x.Grades).Distinct().ToList(); tuitionCache.Clear(); logger.LogDebug($"Getting study groups from SchILD..."); foreach (var section in settings.Sections) { var key = $"{section.SchoolYear}-{section.Section}"; logger.LogDebug($"Getting study groups from SchILD ({section.SchoolYear}/{section.Section})..."); var tuitions = schildAdapter.LoadTuitions(section.SchoolYear, section.Section); tuitionCache.Add(key, new List <TuitionStudyGroupTuple>()); foreach (var kv in tuitions) { if (grades.Contains(kv.Key)) { tuitionCache[key].AddRange(kv.Value); } } } logger.LogDebug("Getting students from SchILD..."); var studentTask = schildAdapter.GetExporter().GetStudentsAsync(); studentTask.Wait(); foreach (var student in studentTask.Result) { if (!studentCache.ContainsKey(student.Id.ToString())) { studentCache.Add(student.Id.ToString(), student); } } }
public bool Supports(Settings.ExamWriters.IExamWritersResolver inputSetting) { return(inputSetting is ISchildExamWritersResolver); }