コード例 #1
0
        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);
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
 public bool Supports(Settings.ExamWriters.IExamWritersResolver inputSetting)
 {
     return(inputSetting is ISchildExamWritersResolver);
 }