public GetCourseInfoRespond ChangeCourse(ChangeCourseRequest body) { var isArgumentValid = body != null && !string.IsNullOrEmpty(body.UserProfileId) && !string.IsNullOrEmpty(body.ClassRoomId); if (!isArgumentValid) return null; var userprofileId = body.UserProfileId; var classRoomId = body.ClassRoomId; var userProfile = _userprofileRepo.GetUserProfileById(userprofileId); if (userProfile == null || userProfile.DeletedDate.HasValue) return null; var classRoom = _classRoomRepo.GetClassRoomById(classRoomId); if (classRoom == null || classRoom.DeletedDate.HasValue) return null; var isUserProfileDataValid = userProfile.Subscriptions != null && userProfile.Subscriptions.Any() && userProfile.Subscriptions.Where(it => !it.DeletedDate.HasValue).Any(it => it.ClassRoomId == classRoomId); if (!isUserProfileDataValid) return null; var selectedSubscription = userProfile.Subscriptions .Where(it => !it.DeletedDate.HasValue) .FirstOrDefault(it => it.ClassRoomId == classRoomId); if (selectedSubscription != null) { var now = _dateTime.GetCurrentTime(); selectedSubscription.LastActiveDate = now; _userprofileRepo.UpsertUserProfile(userProfile); } var lastSubscription = userProfile.Subscriptions.OrderByDescending(it => it.LastActiveDate).FirstOrDefault(it => !it.DeletedDate.HasValue); if (lastSubscription == null) return null; var courseInfoRespond = new GetCourseInfoRespond() { UserProfileId = userprofileId, ClassRoomId = classRoom.id, IsTeacher = lastSubscription.Role == UserProfile.AccountRole.Teacher, ClassName = classRoom.Name, IsSelfPurchase = selectedSubscription.Role == UserProfile.AccountRole.SelfPurchaser, }; if (lastSubscription.Role == UserProfile.AccountRole.Teacher) { var studentKey = _studentKeyRepo.GetStudentKeyByClassRoomId(classRoomId); if (studentKey != null && !studentKey.DeletedDate.HasValue) courseInfoRespond.CurrentStudentCode = studentKey.Code; } var classCarlendar = _classCalendarRepo.GetClassCalendarByClassRoomId(lastSubscription.ClassRoomId); if (classCarlendar != null && !classCarlendar.DeletedDate.HasValue) courseInfoRespond.StartDate = classCarlendar.BeginDate; courseInfoRespond.NumberOfStudents = _userprofileRepo.GetUserProfilesByClassRoomId(classRoomId).Count(); return courseInfoRespond; }
public GetCourseInfoRespond GetCourseInfo(string id, string classRoomId) { var isArgumentValid = !string.IsNullOrEmpty(id) && !string.IsNullOrEmpty(classRoomId); if (!isArgumentValid) return null; var userProfile = _userprofileRepo.GetUserProfileById(id); if (userProfile == null || userProfile.DeletedDate.HasValue) return null; var classRoom = _classRoomRepo.GetClassRoomById(classRoomId); if (classRoom == null || classRoom.DeletedDate.HasValue) return null; var isUserProfileDataValid = userProfile.Subscriptions != null && userProfile.Subscriptions.Any(); if (!isUserProfileDataValid) return null; var lastSubscription = userProfile.Subscriptions.OrderByDescending(x => x.LastActiveDate).FirstOrDefault(x => !x.DeletedDate.HasValue); if (lastSubscription == null) return null; var courseInfoRespond = new GetCourseInfoRespond() { UserProfileId = id, ClassRoomId = classRoom.id, IsTeacher = lastSubscription.Role == UserProfile.AccountRole.Teacher, ClassName = classRoom.Name, }; if (lastSubscription.Role == UserProfile.AccountRole.Teacher) { var studentKey = _studentKeyRepo.GetStudentKeyByClassRoomId(classRoomId); if (studentKey != null && !studentKey.DeletedDate.HasValue) courseInfoRespond.CurrentStudentCode = studentKey.Code; } var classCarlendar = _classCalendarRepo.GetClassCalendarByClassRoomId(lastSubscription.ClassRoomId); if (classCarlendar != null && !classCarlendar.DeletedDate.HasValue) courseInfoRespond.StartDate = classCarlendar.BeginDate; courseInfoRespond.NumberOfStudents = _userprofileRepo.GetUserProfilesByClassRoomId(classRoomId).Count(); return courseInfoRespond; }