public async Task <RegisterCourseOutput> RegisterCourse(RegisterCourseInput arg)
        {
            var student = await _uow.StudentRepository.GetStudentWithRegisteredCourses(arg.StudentId);

            var errors = new List <string>();

            foreach (var item in arg.SelectedCourseCodes)
            {
                var course = await _uow.CourseRepository.GetByIdAsync(item);

                var res = student.RegisterForCourse(course);
                if (!res)
                {
                    errors.Add($"unable to register for {course.Name}");
                }
                else
                {
                    var registerCourse = new Entities.RegisteredCourse()
                    {
                        StudentId = arg.StudentId,
                        CourseId  = course.Id
                    };
                    await _uow.RegisteredCourseRepository.AddAsync(registerCourse);
                }
            }

            return(new RegisterCourseOutput(!errors.Any(), errors));
        }
Example #2
0
        public async Task <List <string> > RegisterCourseAsync(RegisterCourseInput arg)
        {
            var student = await _uow.StudentRepository.GetStudentWithRegisteredCourses(arg.StudentId);

            var errors = new List <string>();

            foreach (var item in arg.SelectedCourseCodes)
            {
                var course = await _uow.CourseRepository.GetByIdAsync(item);

                var res = student.RegisterForCourse(course);

                if (!res)
                {
                    errors.Add($"unable to register for {course?.Name}");
                }
                else
                {
                    var registerdCourse = new RegisteredCourse()
                    {
                        StudentId = arg.StudentId,
                        CourseId  = course.Id
                    };
                    await _uow.RegisteredCourseRepository.AddAsync(registerdCourse);

                    await _uow.CommitAsync();
                }
            }
            return(errors);
            //return new RegisterCourseOutput(!errors.Any(), errors, errors.Any() ? null : "Congratulates");
        }
        public async Task Should_Return_Unable_To_Register()
        {
            // Arrange
            var course = new Course
            {
                Id   = 1,
                Name = "Javascript"
            };

            _uowMock.Setup(p => p.StudentRepository.GetStudentWithRegisteredCourses(It.IsAny <int>())).Returns(Task.FromResult(_studentMock.Object));
            _uowMock.Setup(p => p.CourseRepository.GetByIdAsync(It.IsAny <int>())).Returns(Task.FromResult(course));
            _studentMock.Setup(p => p.RegisterForCourse(It.IsAny <Course>())).Returns(false);
            _uowMock.Setup(p => p.RegisteredCourseRepository.AddAsync(It.IsAny <RegisteredCourse>()));
            var input = new RegisterCourseInput()
            {
                StudentId           = 1,
                SelectedCourseCodes = new List <int> {
                    1
                }
            };

            // Act
            var result = await _courseService.RegisterCourseAsync(input);

            // Assert
            Assert.IsTrue(result.Contains("unable to register for Javascript"));
        }
        public async Task Should_Return_List_String_Instance()
        {
            // Arrange
            _uowMock.Setup(p => p.StudentRepository.GetStudentWithRegisteredCourses(It.IsAny <int>())).Returns(Task.FromResult(_studentMock.Object));
            _uowMock.Setup(p => p.CourseRepository.GetByIdAsync(It.IsAny <int>())).Returns(Task.FromResult(new Course()));
            _studentMock.Setup(p => p.RegisterForCourse(It.IsAny <Course>())).Returns(true);
            _uowMock.Setup(p => p.RegisteredCourseRepository.AddAsync(It.IsAny <RegisteredCourse>()));

            var input = new RegisterCourseInput()
            {
                StudentId           = 1,
                SelectedCourseCodes = new List <int>()
            };

            // Act
            var result = await _courseService.RegisterCourseAsync(input);

            // Assert
            Assert.IsAssignableFrom <List <string> >(result);
        }
        public async Task Should_Not_Register_Course()
        {
            // Arrange
            _uowMock.Setup(p => p.StudentRepository.GetStudentWithRegisteredCourses(It.IsAny <int>())).Returns(Task.FromResult(_studentMock.Object));
            _uowMock.Setup(p => p.CourseRepository.GetByIdAsync(It.IsAny <int>())).Returns(Task.FromResult(new Course()));
            _studentMock.Setup(p => p.RegisterForCourse(It.IsAny <Course>())).Returns(false);
            _uowMock.Setup(p => p.RegisteredCourseRepository.AddAsync(It.IsAny <RegisteredCourse>()));
            var input = new RegisterCourseInput()
            {
                StudentId           = 1,
                SelectedCourseCodes = new List <int> {
                    1, 2
                }
            };

            // Act
            var result = await _courseService.RegisterCourseAsync(input);

            // Assert
            Assert.IsTrue(result.Any());
        }
Example #6
0
        public async Task <RegisterCourseOutput> RegisterCourse(RegisterCourseInput args)
        {
            var result = await _courseService.RegisterCourse(args);

            return(result);
        }
Example #7
0
        public async Task <RegisterCourseOutput> RegisterCourse(RegisterCourseInput args)
        {
            var result = await _courseService.RegisterCourseAsync(args);

            return(new RegisterCourseOutput(!result.Any(), result, result.Any() ? null : "Congratulates"));
        }