public void WhenUserProfileLeaveClassRoom(string userprofileId, string classRoomId) { var mockClassRoomRepo = ScenarioContext.Current.Get<Mock<IClassRoomRepository>>(); mockClassRoomRepo.Setup(it => it.UpsertClassRoom(It.IsAny<ClassRoom>())); var mockClassCalendarRepo = ScenarioContext.Current.Get<Mock<IClassCalendarRepository>>(); mockClassCalendarRepo.Setup(it => it.UpsertClassCalendar(It.IsAny<ClassCalendar>())); var mockUserProfileRepo = ScenarioContext.Current.Get<Mock<IUserProfileRepository>>(); mockUserProfileRepo.Setup(it => it.UpsertUserProfile(It.IsAny<UserProfile>())); var mockUserActivityRepo = ScenarioContext.Current.Get<Mock<IUserActivityRepository>>(); mockUserActivityRepo.Setup(it => it.UpsertUserActivity(It.IsAny<UserActivity>())); var mockStudentKeyRepo = ScenarioContext.Current.Get<Mock<IStudentKeyRepository>>(); mockStudentKeyRepo.Setup(it => it.UpsertStudentKey(It.IsAny<StudentKey>())); var mycourseCtrl = ScenarioContext.Current.Get<MyCourseController>(); var body = new LeaveCourseRequest { ClassRoomId = classRoomId, UserProfileId = userprofileId }; mycourseCtrl.Leave(body); }
public void Leave(LeaveCourseRequest body) { var areArgumentsValid = body != null && !string.IsNullOrEmpty(body.ClassRoomId) && !string.IsNullOrEmpty(body.UserProfileId); if (!areArgumentsValid) return; UserProfile userprofile; var canAccessToTheClassRoom = _userprofileRepo.CheckAccessPermissionToSelectedClassRoom(body.UserProfileId, body.ClassRoomId, out userprofile); if (!canAccessToTheClassRoom) return; var isTeacherAccount = userprofile.Subscriptions .Any(it => !it.DeletedDate.HasValue && it.ClassRoomId == body.ClassRoomId && it.Role == UserProfile.AccountRole.Teacher); if (!isTeacherAccount) return; var selectedClassRoom = _classRoomRepo.GetClassRoomById(body.ClassRoomId); if (selectedClassRoom == null) return; var students = _userprofileRepo.GetUserProfilesByClassRoomId(body.ClassRoomId).ToList(); if (students == null) return; var selectedClassCalendar = _classCalendarRepo.GetClassCalendarByClassRoomId(body.ClassRoomId); if (selectedClassCalendar == null) return; var now = _dateTime.GetCurrentTime(); if (!selectedClassRoom.DeletedDate.HasValue) { selectedClassRoom.DeletedDate = now; _classRoomRepo.UpsertClassRoom(selectedClassRoom); } if (!selectedClassCalendar.DeletedDate.HasValue) { selectedClassCalendar.DeletedDate = now; _classCalendarRepo.UpsertClassCalendar(selectedClassCalendar); } var subscriptions = students.SelectMany(it => it.Subscriptions) .Where(it => it.ClassRoomId.Equals(body.ClassRoomId)) .Where(it => !it.DeletedDate.HasValue) .ToList(); subscriptions.ForEach(it => it.DeletedDate = now); students.ForEach(it => _userprofileRepo.UpsertUserProfile(it)); var activities = students.Select(it => _userActivityRepo.GetUserActivityByUserProfileIdAndClassRoomId(it.id, body.ClassRoomId)) .Where(it => it != null) .Where(it => !it.DeletedDate.HasValue) .ToList(); activities.ForEach(it => { it.DeletedDate = now; _userActivityRepo.UpsertUserActivity(it); }); var selectedStudentKey = _studentKeyRepo.GetStudentKeyByClassRoomId(body.ClassRoomId); if (selectedStudentKey == null) return; if (!selectedStudentKey.DeletedDate.HasValue) { selectedStudentKey.DeletedDate = now; _studentKeyRepo.UpsertStudentKey(selectedStudentKey); } }