Exemple #1
0
        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);
            }
        }
Exemple #2
0
        /// <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);
     }
 }
Exemple #9
0
        /// <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);
        }
Exemple #10
0
        /// <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);
        }
Exemple #11
0
        /// <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();
            }
        }
Exemple #12
0
        /// <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);
            }
        }
Exemple #13
0
        /// <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);
        }
Exemple #15
0
        /// <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);
        }
Exemple #16
0
        /// <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));
        }
Exemple #17
0
        /// <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);
        }
Exemple #18
0
        /// <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);
        }
Exemple #19
0
        /// <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);
        }