예제 #1
0
        public async Task <StudentsGradeByInstructor> ListGradesGiven(int instructorId)
        {
            var instructor = await _instructorRepository.GetById(instructorId);

            if (instructor == null)
            {
                throw new ArgumentException($"There's no instructor with the instructorId = {instructorId}");
            }

            var enrollments = await _enrollmentRepository.GetByInstructorId(instructorId);

            if (!enrollments.Any())
            {
                throw new Exception($"The instructor with the Id = {instructorId} never gave a grade");
            }

            var result = new StudentsGradeByInstructor
            {
                Instructor   = $"{instructor.FirstName} {instructor.LastName}",
                InstructorId = instructorId
            };

            foreach (var enrollment in enrollments)
            {
                result.GradeXStudentXCourse.Add(
                    new StudentsGradeInfo
                {
                    Grade     = enrollment.Grade,
                    StudentId = enrollment.StudentId,
                    Student   = $"{enrollment.Student.FirstName} {enrollment.Student.LastName}",
                    CourseId  = enrollment.CourseId,
                    Course    = enrollment.Course.Title
                }
                    );
            }

            return(result);
        }