public static ReturnValue ToggleAssociatedEnrollmentRecord(Guid id, bool value) { var retVal = new ReturnValue(); using (var db = new CmsModelContainer()) { try { var query = from record in db.Enrollments where record.Students.Id == id select record; foreach (var record in query) { record.IsActive = value; } db.SaveChanges(); retVal.Success = true; } catch (Exception ex) { retVal.Success = false; retVal.ErrorMessages.Add(ex.ToString()); } return(retVal); } }
/// <summary> /// Sets the IsActive property to true for the specified user /// </summary> /// <param name="user"></param> /// <returns></returns> public static ReturnValue ActivateUser(User user) { var retVal = new ReturnValue(); if (user == null) { retVal.ErrorMessages.Add("Invalid User"); return(retVal); } using (var db = new CmsModelContainer()) { db.Users.Attach(user); user.IsActive = true; db.SaveChanges(); retVal.Success = true; } if (ToggleEnrollmentHandleAdded == false) { ToggleEnrollmentHandleAdded = true; UserDeleted += new UserHandler(ToggleAssociatedEnrollmentRecord); } if (UserDeleted != null) { UserDeleted(user.Id, true); } return(retVal); }
/// <summary> /// Create the survey questions & response options that will be used for all course surveys. This will be called by Global.asax in CMS_App. /// </summary> public static void CreateSurvey() { using (var db = new CmsModelContainer()) { if (!db.Questions.Any()) { // create two questions var question1 = new Question { Id = Guid.NewGuid(), Text = "Please rate this course", Number = 1, ResponseOptions = CreateScaleResponseOptions() }; var question2 = new Question { Id = Guid.NewGuid(), Text = "Please rate the instructor(s)", Number = 2, ResponseOptions = CreateScaleResponseOptions() }; db.Questions.Add(question1); db.Questions.Add(question2); } db.SaveChanges(); } }
/// <summary> /// Retrieve the survey questions /// </summary> /// <returns>List of Question objects</returns> public static List <Question> GetSurveyQuestions() { using (var db = new CmsModelContainer()) { var questions = new List <Question>(); questions = db.Questions.OrderBy(q => q.Number).ToList(); return(questions); } }
/// <summary> /// Returns the ResponseOption instance specified by the argument responseOptionId /// </summary> /// <param name="responseOptionId"></param> /// <returns></returns> public static ResponseOption GetResponseOptionById(Guid responseOptionId) { using (var db = new CmsModelContainer()) { var responseOption = new ResponseOption(); responseOption = db.ResponseOptions.FirstOrDefault(r => r.Id == responseOptionId); return(responseOption); } }
/// <summary> /// Returns the response options associated with the question specified by the argument questionId /// </summary> /// <param name="questionId"></param> /// <returns></returns> public static List <ResponseOption> GetResponseOptionsByQuestionId(Guid questionId) { using (var db = new CmsModelContainer()) { var responseOptions = new List <ResponseOption>(); responseOptions.AddRange(db.ResponseOptions.Where(r => r.QuestionId == questionId).OrderBy(r => r.SortOrder).ToList()); return(responseOptions); } }
/// <summary> /// Returns the Question instance corresponding to the specified ResponseOption instance /// </summary> /// <param name="responseOptionId"></param> /// <returns></returns> public static Question GetQuestionByResponseOptionId(Guid responseOptionId) { using (var db = new CmsModelContainer()) { var responseOption = GetResponseOptionById(responseOptionId); var question = GetQuestionById(responseOption.QuestionId); return(question); } }
/// <summary> /// Returns the Question instance specified by the argument questionId /// </summary> /// <returns></returns> public static Question GetQuestionById(Guid questionId) { using (var db = new CmsModelContainer()) { var question = new Question(); question = db.Questions.FirstOrDefault(q => q.Id == questionId); return(question); } }
/// <summary> /// Returns a list of Major instances associated with the student specified by the studentId argument /// </summary> /// <param name="studentId"></param> /// <returns></returns> public static IEnumerable <Major> GetMajorsByStudentId(Guid studentId) { var majors = new List <Major>(); using (var db = new CmsModelContainer()) { majors.AddRange(db.Majors.Where(m => m.Student.Id == studentId)); } return(majors); }
/// <summary> /// Returns the user specified by the userId argument /// </summary> /// <param name="userId"></param> /// <returns></returns> public static User GetUserById(Guid userId) { var user = new User(); if (userId != null && userId != Guid.Empty) { using (var db = new CmsModelContainer()) { user = db.Users.FirstOrDefault(u => u.Id == userId); } } return(user); }
/// <summary> /// Deletes specified user from database; use only to remove fake users added during unit testing. /// </summary> public static void DeleteUser(User user) { if (user == null) { return; } using (var db = new CmsModelContainer()) { db.Users.Attach(user); db.Users.Remove(user); db.SaveChanges(); } }
/// <summary> /// Returns a list of ResponseEvents instances to the specified question for the specified course & user /// </summary> /// <param name="courseId"></param> /// <param name="questionId"></param> /// <param name="userId"></param> /// <returns></returns> public static ResponseEvent GetResponseByCourseQuestionAndUser(Guid courseId, Guid questionId, Guid userId) { using (var db = new CmsModelContainer()) { var enrollment = db.Enrollments.FirstOrDefault(e => e.Course.Id == courseId && e.Students.Id == userId); var response = new ResponseEvent(); if (enrollment != null) { response = enrollment.ResponseEvents.FirstOrDefault(e => e.ResponseOption.QuestionId == questionId); } return(response); } }
/// <summary> /// Returns a list of ResponseEvents instances to the specified question for the specified course /// </summary> /// <param name="courseId"></param> /// <param name="questionid"></param> /// <returns></returns> public static List <ResponseEvent> GetResponsesByCourseAndQuestion(Guid courseId, Guid questionId) { using (var db = new CmsModelContainer()) { var enrollments = db.Enrollments.Where(e => e.Course.Id == courseId); var responseOptionIds = db.ResponseOptions.Where(o => o.QuestionId == questionId).Select(o => o.Id); var responseEvents = db.ResponseEvents; var responses = new List <ResponseEvent>(); foreach (var enrollment in enrollments) { responses.AddRange(enrollment.ResponseEvents.Where(e => e.ResponseOption.QuestionId == questionId)); } return(responses); } }
public void TestUserGetMajors() { ReturnValue retValCreate = BizLayer.ManagerClasses.UserManager.CreateUser( "unit_test_first_name", "unit_test_last_name", "*****@*****.**", true, RoleType.student); User user; BizLayer.ManagerClasses.UserManager.GetUserByEmailAddress("*****@*****.**", out user); var majors = new List <Major>(); majors.Add(new Major { Id = Guid.NewGuid(), Name = MajorType.Chemistry }); majors.Add(new Major { Id = Guid.NewGuid(), Name = MajorType.History }); ReturnValue retValUpdate = BizLayer.ManagerClasses.UserManager.UpdateUser(user, majors); Assert.AreEqual(true, retValUpdate.Success); var majors2 = new List <Major>(); majors2.AddRange(BizLayer.ManagerClasses.UserManager.GetMajorsByStudentId(user.Id)); foreach (var major in majors2) { Assert.IsTrue(major.Name == MajorType.Chemistry || major.Name == MajorType.History); } // remove user after test User userToDelete; BizLayer.ManagerClasses.UserManager.GetUserByEmailAddress("*****@*****.**", out userToDelete); using (var db = new CmsModelContainer()) { db.Users.Attach(userToDelete); foreach (var major in majors) { userToDelete.Majors.Remove(major); } db.SaveChanges(); } BizLayer.ManagerClasses.UserManager.DeleteUser(userToDelete); }
/// <summary> /// Updates the database entry corresponding to the user argument with the properties of the user argument /// </summary> /// <param name="user"></param> /// <returns></returns> public static ReturnValue UpdateUser(User user, IEnumerable <Major> majors) { var returnValue = new ReturnValue(); if (user == null) { returnValue.ErrorMessages.Add("Invalid User"); return(returnValue); } using (var db = new CmsModelContainer()) { try { var originalUser = db.Users.SingleOrDefault(u => u.Id == user.Id); if (originalUser == null) { returnValue.ErrorMessages.Add("Invalid User"); return(returnValue); } originalUser.DateUpdated = DateTime.Now; originalUser.IsActive = user.IsActive; originalUser.Role = user.Role; originalUser.FirstName = HttpUtility.HtmlEncode(user.FirstName); originalUser.LastName = HttpUtility.HtmlEncode(user.LastName); originalUser.Email = HttpUtility.HtmlEncode(user.Email); originalUser.Majors.Clear(); foreach (var major in majors) { originalUser.Majors.Add(major); } db.SaveChanges(); returnValue.Success = true; } catch (Exception ex) { returnValue.Success = false; returnValue.ErrorMessages.Add(ex.ToString()); } } return(returnValue); }
/// <summary> /// Returns a list of all inactive users present in the database, limited to users w/ Role == roleType if roleType is provided /// </summary> /// <param name="roleType"></param> /// <returns></returns> public static IEnumerable <User> GetInactiveUsers(RoleType?roleType = null) { var users = new List <User>(); using (var db = new CmsModelContainer()) { if (roleType != null) { users.AddRange(db.Users.Where(u => !u.IsActive && u.Role == roleType)); } else { users.AddRange(db.Users.Where(u => !u.IsActive)); } } return(users.OrderBy(u => u.LastName).ThenBy(u => u.FirstName).ThenBy(u => u.DateAdded)); }
/// <summary> /// Returns the user specified by the emailAddress argument /// </summary> /// <param name="emailAddress"></param> /// <param name="user"></param> /// <returns></returns> public static ReturnValue GetUserByEmailAddress(string emailAddress, out User user) { var retVal = new ReturnValue(); user = new User(); if (!String.IsNullOrWhiteSpace(emailAddress)) { using (var db = new CmsModelContainer()) { user = db.Users.FirstOrDefault(u => u.Email == emailAddress); if (user != null) { retVal.Success = true; return(retVal); } } } retVal.Success = false; retVal.ErrorMessages.Add("Invalid User"); return(retVal); }
/// <summary> /// Creates a new instance of User and save it in the database /// </summary> /// <param name="firstName"></param> /// <param name="lastName"></param> /// <param name="emailAddress"></param> /// <param name="isActive"></param> /// <param name="role"></param> /// <returns></returns> public static ReturnValue CreateUser(String firstName, String lastName, String emailAddress, bool isActive, RoleType role) { var retVal = new ReturnValue(); using (var db = new CmsModelContainer()) { try { var user = new User { Id = Guid.NewGuid(), DateAdded = DateTime.Now, DateUpdated = DateTime.Now, IsActive = isActive, Role = role, FirstName = String.IsNullOrWhiteSpace(firstName) ? String.Empty : HttpUtility.HtmlEncode(firstName), LastName = String.IsNullOrWhiteSpace(lastName) ? String.Empty : HttpUtility.HtmlEncode(lastName), Email = String.IsNullOrWhiteSpace(emailAddress) ? String.Empty : HttpUtility.HtmlEncode(emailAddress) }; db.Users.Add(user); db.SaveChanges(); retVal.Success = true; } catch (Exception ex) { retVal.Success = false; retVal.ErrorMessages.Add(ex.ToString()); } } return(retVal); }
/// <summary> /// Create a new instance of ResponseEvent and save it in the database /// </summary> /// <param name="enrollmentId"></param> /// <param name="responseOptionId"></param> /// <returns></returns> public static ReturnValue CreateResponseEvent(Guid enrollmentId, Guid responseOptionId) { var retVal = new ReturnValue(); using (var db = new CmsModelContainer()) { try { // get question associated with specified responseOptionId var question = GetQuestionByResponseOptionId(responseOptionId); // get all response options associated with that question var responseOptions = GetResponseOptionsByQuestionId(question.Id); var responseOptionIds = new List <Guid>(); foreach (var responseOption in responseOptions) { responseOptionIds.Add(responseOption.Id); } // check if a response event exists for the specified enrollment/question combo var existingResponseEvent = db.ResponseEvents.FirstOrDefault(e => e.EnrollmentId == enrollmentId && responseOptionIds.Contains(e.ResponseOptionId)); // if a response does already exist for the specified enrollment/question combo, // then delete it before adding a new response event for that enrollment/question, // which may specify a different response option than the existing response event if (existingResponseEvent != null && existingResponseEvent.Id != Guid.Empty) { db.ResponseEvents.Remove(existingResponseEvent); } // now create a new response event for the specified enrollment & response option var responseEvent = new ResponseEvent { Id = Guid.NewGuid(), EnrollmentId = enrollmentId, ResponseOptionId = responseOptionId, }; // add the new response event to the relevant collections var enrollment = db.Enrollments.FirstOrDefault(e => e.Id == enrollmentId); if (enrollment != null) { enrollment.ResponseEvents.Add(responseEvent); } var option = db.ResponseOptions.FirstOrDefault(o => o.Id == responseOptionId); if (option != null) { option.ResponseEvents.Add(responseEvent); } db.SaveChanges(); retVal.Success = true; } catch (Exception ex) { retVal.Success = false; retVal.ErrorMessages.Add(ex.ToString()); } } return(retVal); }