Esempio n. 1
0
        public void GetStudentFromStudyGroupSearch_NullQueryObjectPassed_ThrowsParameterException()
        {
            string userId = Guid.NewGuid().ToString();
            StudyGroupSearchDTO queryParams = null;

            Assert.Throws <ParameterException>(() => _studentService.GetStudentFromStudyGroupSearch(queryParams, userId));
        }
Esempio n. 2
0
        public void GetStudentFromStudyGroupSearch_HavingSameGradeAverage_ReturnsNone()
        {
            string userId                   = Guid.NewGuid().ToString();
            string anotheruserId            = Guid.NewGuid().ToString();
            StudyGroupSearchDTO queryParams = new StudyGroupSearchDTO {
                CourseID = Guid.NewGuid().ToString(), IsSameGradeAverage = true
            };
            var students = CreateRandomStudents().Append(new Student {
                UserID = anotheruserId
            });

            _studentRepository.Setup(x => x.GetStudentsAttendingToCourseInCurrentSemester(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(students);
            _studentRepository.Setup(x => x.GetStudentGradeAverage(It.IsAny <string>())).Returns <string>((y) =>
            {
                if ((string)y == userId)
                {
                    return(2.0);
                }
                else if ((string)y == anotheruserId)
                {
                    return(5.0);
                }
                else
                {
                    return(3.5);
                }
            });

            var res = _studentService.GetStudentFromStudyGroupSearch(queryParams, userId);

            Assert.Empty(res);
        }
Esempio n. 3
0
        public void GetStudentFromStudyGroupSearch_NullUserIdPassed_ThrowsParameterException()
        {
            string userId = null;
            StudyGroupSearchDTO queryParams = null;

            Assert.Throws <ParameterException>(() => _studentService.GetStudentFromStudyGroupSearch(queryParams, userId));
        }
Esempio n. 4
0
        public ActionResult <string> GetStudentsFromStudyGroupSearch([FromQuery] StudyGroupSearchDTO searchParams)
        {
            string id = GetUserIdFromToken();
            IEnumerable <StudentListItemDTO> student = _studentService.GetStudentFromStudyGroupSearch(searchParams, id);

            return(Ok(student));
        }
Esempio n. 5
0
        public void GetStudentFromStudyGroupSearch_ParamObjectWithCourseIDNullValuePassed_ThrowsParameterException()
        {
            string userId = Guid.NewGuid().ToString();
            StudyGroupSearchDTO queryParams = new StudyGroupSearchDTO {
                CourseID = null, IsHavingOtherCourseInCommonCurrently = true, IsSameCompletedSemesters = true, IsSameGradeAverage = true
            };

            Assert.Throws <ParameterException>(() => _studentService.GetStudentFromStudyGroupSearch(queryParams, userId));
        }
Esempio n. 6
0
        public void GetStudentFromStudyGroupSearch_HavingSameGradeAverageAndSameCompletedSemesters_ReturnsRightStudents()
        {
            string userId = Guid.NewGuid().ToString();
            string anotheruserIdWithSameGradeAndSemesters = Guid.NewGuid().ToString();
            string anotheruserIdWithSameGrade             = Guid.NewGuid().ToString();

            StudyGroupSearchDTO queryParams = new StudyGroupSearchDTO {
                CourseID = Guid.NewGuid().ToString(), IsSameGradeAverage = true, IsSameCompletedSemesters = true
            };
            var students = CreateRandomStudents()
                           .Append(new Student {
                UserID = anotheruserIdWithSameGradeAndSemesters
            })
                           .Append(new Student {
                UserID = anotheruserIdWithSameGrade
            });

            _studentRepository.Setup(x => x.GetStudentsAttendingToCourseInCurrentSemester(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(students);
            _studentRepository.Setup(x => x.GetStudentGradeAverage(It.IsAny <string>())).Returns <string>((y) =>
            {
                if ((string)y == userId)
                {
                    return(5.0);
                }
                else if ((string)y == anotheruserIdWithSameGradeAndSemesters || (string)y == anotheruserIdWithSameGrade)
                {
                    return(4.7);
                }
                else
                {
                    return(2.0);
                }
            });

            _studentRepository.Setup(x => x.GetStudentSemesterCount(It.IsAny <string>())).Returns <string>((y) =>
            {
                if ((string)y == userId)
                {
                    return(5);
                }
                else if ((string)y == anotheruserIdWithSameGradeAndSemesters)
                {
                    return(4);
                }
                else
                {
                    return(2);
                }
            });

            var res = _studentService.GetStudentFromStudyGroupSearch(queryParams, userId);

            Assert.Single(res);
            Assert.Contains(anotheruserIdWithSameGradeAndSemesters, res.Select(x => x.Id));
        }
        public IEnumerable<StudentListItemDTO> GetStudentFromStudyGroupSearch(StudyGroupSearchDTO searchParams, string loggedInUserId)
        {
            if (loggedInUserId == null || !Guid.TryParse(loggedInUserId, out Guid userguid))
                throw new ParameterException("user ID is invalid");
            if (searchParams == null || searchParams.CourseID == null)
                throw new ParameterException("Search parameters cannot be null");

            IEnumerable<Student> filteredStudents = new List<Student>();
            var currentSemester = SemesterManager.GetCurrentSemester();

            if (searchParams.IsHavingOtherCourseInCommonCurrently == true)
            {
                filteredStudents = _studentRepository.GetStudentsHavingCommonPracticalCoursesInCurrentSemester(loggedInUserId, searchParams.CourseID, currentSemester);
            }
            else
            {
                filteredStudents = _studentRepository.GetStudentsAttendingToCourseInCurrentSemester(loggedInUserId, searchParams.CourseID, currentSemester);
            }
            if (searchParams.IsSameCompletedSemesters && filteredStudents.Count() > 0)
            {
                //same completed semesters +-1            
                int userSemesterCnt = _studentRepository.GetStudentSemesterCount(loggedInUserId);
                var filteredOutStudents = new List<Student>();
                foreach (var stud in filteredStudents)
                {
                    int semesterCnt = _studentRepository.GetStudentSemesterCount(stud.UserID);
                    if (Math.Abs(userSemesterCnt - semesterCnt) > 1)
                    {
                        filteredOutStudents.Add(stud);
                    }
                }
                filteredStudents = filteredStudents.Where(x => !filteredOutStudents.Select(y => y.UserID).Contains(x.UserID));
            }
            if (searchParams.IsSameGradeAverage && filteredStudents.Count() > 0)
            {
                //same avg +-0.5
                double userGradeAvg = _studentRepository.GetStudentGradeAverage(loggedInUserId);
                var filteredOutStudents = new List<Student>();
                foreach (var stud in filteredStudents)
                {
                    double currStudAvg = _studentRepository.GetStudentGradeAverage(stud.UserID);
                    if (Math.Abs(currStudAvg - userGradeAvg) > 0.5)
                    {
                        filteredOutStudents.Add(stud);
                    }
                }
                filteredStudents = filteredStudents.Where(x => !filteredOutStudents.Select(y => y.UserID).Contains(x.UserID));
            }

            var filteredStudentListDtos = filteredStudents.Select(x => MapStudent.MapStudentDBModelToStudentListItemDTO(x));
            return filteredStudentListDtos;

        }
Esempio n. 8
0
        public void GetStudentFromStudyGroupSearch_QueryParamsAllFalse_ReturnsRightStudents()
        {
            string userId = Guid.NewGuid().ToString();
            StudyGroupSearchDTO queryParams = new StudyGroupSearchDTO {
                CourseID = Guid.NewGuid().ToString()
            };

            var students = CreateRandomStudents();

            _studentRepository.Setup(x => x.GetStudentsAttendingToCourseInCurrentSemester(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(students);

            var res = _studentService.GetStudentFromStudyGroupSearch(queryParams, userId);

            Assert.Equal(students.Count(), res.Count());
        }
Esempio n. 9
0
        public void GetStudentFromStudyGroupSearch_HavingAnotherCommonCourse_ReturnsRightStudents()
        {
            string userId = Guid.NewGuid().ToString();
            StudyGroupSearchDTO queryParams = new StudyGroupSearchDTO {
                CourseID = Guid.NewGuid().ToString(), IsHavingOtherCourseInCommonCurrently = true
            };

            var students = CreateRandomStudents();

            _studentRepository.Setup(x => x.GetStudentsHavingCommonPracticalCoursesInCurrentSemester(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(students);

            var res = _studentService.GetStudentFromStudyGroupSearch(queryParams, userId);

            Assert.Equal(students.Count(), res.Count());
        }
Esempio n. 10
0
        public void GetStudentFromStudyGroupSearch_HavingCommonCourseAndSameCompletedSemesters_ReturnsRightStudents()
        {
            string userId = Guid.NewGuid().ToString();
            string userSameCourseAndSemesters = Guid.NewGuid().ToString();
            string userSameSemesters          = Guid.NewGuid().ToString();

            StudyGroupSearchDTO queryParams = new StudyGroupSearchDTO {
                CourseID = Guid.NewGuid().ToString(), IsSameCompletedSemesters = true, IsHavingOtherCourseInCommonCurrently = true
            };
            var students = CreateRandomStudents()
                           .Append(new Student {
                UserID = userSameCourseAndSemesters
            });

            _studentRepository.Setup(x => x.GetStudentsHavingCommonPracticalCoursesInCurrentSemester(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(students);

            _studentRepository.Setup(x => x.GetStudentSemesterCount(It.IsAny <string>())).Returns <string>((y) =>
            {
                if ((string)y == userId)
                {
                    return(4);
                }
                else if ((string)y == userSameCourseAndSemesters || (string)y == userSameSemesters)
                {
                    return(5);
                }
                else
                {
                    return(2);
                }
            });

            var res = _studentService.GetStudentFromStudyGroupSearch(queryParams, userId);

            Assert.Single(res);
            Assert.Contains(userSameCourseAndSemesters, res.Select(x => x.Id));
            Assert.DoesNotContain(userSameSemesters, res.Select(x => x.Id));
        }