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.First(it => it.ClassRoomId == body.ClassRoomId).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(); selectedClassRoom.DeletedDate = now; _classRoomRepo.UpsertClassRoom(selectedClassRoom); 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; } selectedStudentKey.DeletedDate = now; _studentKeyRepo.UpsertStudentKey(selectedStudentKey); }