Exemple #1
0
        public async Task <IResponse> ImportStudentsAsync(int[] status, DateTime?leaveDateThreshold)
        {
            logger.LogDebug("Hole Lernende aus SchILD...");
            var students = await schildExporter.GetStudentsAsync(status, leaveDateThreshold).ConfigureAwait(false);

            logger.LogDebug($"{students.Count} Lernende(n) geladen.");

            logger.LogDebug("Hole Datenschutzeinstellungen der Lernenden aus SchILD...");
            var privacies = await schildExporter.GetStudentPrivaciesAsync(students);

            logger.LogDebug($"Datenschutzeinstellungen von {privacies.Count} Lernende(n) erhalten.");

            if (OnlyVisibleEntities)
            {
                logger.LogDebug("Ausgeblendete Datenschutzkategorien aus den Datenschutzeinstellungen entfernen.");
                privacies.RemoveInvisiblePrivacyCategories();
            }

            var data = students
                       .Where(student => student.Grade != null && student.Grade.IsVisible)
                       .Select(student =>
            {
                var studentPrivacy            = privacies.FirstOrDefault(x => x.Student.Id == student.Id);
                var approvedPrivacyCategories = studentPrivacy != null ? studentPrivacy.Approved.Select(x => x.Id.ToString()).ToList() : new List <string>();

                return(new StudentData
                {
                    Id = student.Id.ToString(),
                    Firstname = student.Firstname,
                    Lastname = student.Lastname,
                    Status = student.Status,
                    Email = student.Email,
                    Gender = GetGender(student.Gender),
                    Birthday = student.Birthday.HasValue ? student.Birthday.Value : new DateTime(1970, 1, 1),
                    Grade = student.Grade?.Name,
                    ApprovedPrivacyCategories = approvedPrivacyCategories
                });
            })
                       .ToList();

            return(await iccImporter.ImportStudentsAsync(data));
        }