Exemplo n.º 1
0
        public ActionResult AssessmentQuestions(AssignQuestionsModel model, FormCollection frm)
        {
            if (!_permissionService.Authorize("ManageAssessment"))
            {
                return(AccessDeniedView());
            }

            if (ModelState.IsValid && model.SelectedQuestion != null && model.SelectedQuestion.Length > 0)
            {
                var alreadyAddedQuestions = _smsService.GetQuestionsByAssessmentId(model.AssessmentId);
                foreach (var id in model.SelectedQuestion)
                {
                    var aQuestion = new AssessmentQuestion();
                    aQuestion.QuestionId    = id;
                    aQuestion.AssessmentId  = model.AssessmentId;
                    aQuestion.RightMarks    = (frm["RightMarks_" + id] != null && !string.IsNullOrEmpty(frm["RightMarks_" + id].ToString())) ? Convert.ToDouble(frm["RightMarks_" + id].ToString()) : 0;
                    aQuestion.NegativeMarks = (frm["NegativeMarks_" + id] != null && !string.IsNullOrEmpty(frm["NegativeMarks_" + id].ToString())) ? Convert.ToDouble(frm["NegativeMarks_" + id].ToString()) : 0;
                    aQuestion.DisplayOrder  = (frm["DisplayOrder_" + id] != null && !string.IsNullOrEmpty(frm["DisplayOrder_" + id].ToString())) ? Convert.ToInt32(frm["DisplayOrder_" + id].ToString()) : 0;
                    aQuestion.SolveTime     = (frm["SolveTime_" + id] != null && !string.IsNullOrEmpty(frm["SolveTime_" + id].ToString())) ? frm["SolveTime_" + id].ToString() : "";
                    aQuestion.IsTimeBound   = (frm["IsTimeBound_" + id] != null && !string.IsNullOrEmpty(frm["IsTimeBound_" + id].ToString())) ? Convert.ToBoolean(frm["IsTimeBound_" + id].ToString()) : false;

                    if (alreadyAddedQuestions.Any(x => x.QuestionId == id))
                    {
                        var assessmentQuestion = alreadyAddedQuestions.FirstOrDefault(x => x.QuestionId == id);
                        assessmentQuestion.RightMarks    = aQuestion.RightMarks;
                        assessmentQuestion.NegativeMarks = aQuestion.NegativeMarks;
                        assessmentQuestion.DisplayOrder  = aQuestion.DisplayOrder;
                        assessmentQuestion.SolveTime     = aQuestion.SolveTime;
                        assessmentQuestion.IsTimeBound   = aQuestion.IsTimeBound;
                        assessmentQuestion.ModifiedOn    = DateTime.Now;
                        _smsService.UpdateAssessmentQuestion(assessmentQuestion);
                    }
                    else
                    {
                        aQuestion.CreatedOn = aQuestion.ModifiedOn = DateTime.Now;
                        aQuestion.UserId    = _userContext.CurrentUser.Id;
                        _smsService.InsertAssessmentQuestion(aQuestion);
                    }
                }

                if (alreadyAddedQuestions.Count > 0)
                {
                    var removeQuestions = alreadyAddedQuestions.Where(y => model.SelectedQuestion.Any(z => z != y.QuestionId)).ToList();
                    foreach (var q in removeQuestions)
                    {
                        _smsService.DeleteAssessmentQuestion(q.QuestionId);
                    }
                }
            }
            SuccessNotification("Assessment updated successfully.");
            return(RedirectToAction("AssessmentQuestions", new { id = model.AssessmentId }));
        }
Exemplo n.º 2
0
        public ActionResult AssessmentQuestions(int id)
        {
            if (!_permissionService.Authorize("ManageAssessment"))
            {
                return(AccessDeniedView());
            }

            if (id == 0)
            {
                throw new ArgumentNullException("id");
            }

            var assessment = _smsService.GetAssessmentById(id);

            if (assessment == null)
            {
                throw new ArgumentNullException("id");
            }

            var model = new AssignQuestionsModel();

            model.Assessment      = assessment.Name;
            model.AssessmentId    = assessment.Id;
            model.DifficultyLevel = assessment.DifficultyLevelId > 0 ? EnumExtensions.GetDescriptionByValue <DifficultyLevel>(assessment.DifficultyLevelId) : "";
            model.IsTimeBound     = assessment.IsTimeBound;
            model.MaxMarks        = assessment.MaxMarks;
            model.PassingMarks    = assessment.PassingMarks;
            model.StringStartTime = assessment.StartTime.Value.ToString("MMMM dd, yyyy HH:mm tt");
            model.StringEndTime   = assessment.EndTime.Value.ToString("MMMM dd, yyyy HH:mm tt");
            model.Subject         = assessment.SubjectId.HasValue && assessment.SubjectId.Value > 0 ? _smsService.GetSubjectById(assessment.SubjectId.Value).Name : "-";
            model.TotalQuestions  = assessment.TotalQuestions;
            model.Url             = assessment.Url;

            var questionsAssociated = _smsService.GetQuestionsByAssessmentId(id);
            // Subjects
            var pSubjects = new List <int>();

            if (assessment.SubjectId.HasValue)
            {
                pSubjects.Add(assessment.SubjectId.Value);
            }

            var allquestions = _smsService.SearchQuestions(subjectids: pSubjects.ToArray(), difficultylevel: (assessment.DifficultyLevelId), onlytimebound: assessment.IsTimeBound);

            foreach (var q in allquestions)
            {
                model.List.Add(new AssessmentQuestionModel()
                {
                    AssessmentId  = id,
                    Assessment    = assessment.Name,
                    DisplayOrder  = (questionsAssociated.Any(x => x.QuestionId == q.Id) ? questionsAssociated.FirstOrDefault(x => x.QuestionId == q.Id).DisplayOrder : 0),
                    Id            = (questionsAssociated.Any(x => x.QuestionId == q.Id) ? questionsAssociated.FirstOrDefault(x => x.QuestionId == q.Id).Id : 0),
                    IsTimeBound   = (questionsAssociated.Any(x => x.QuestionId == q.Id) ? questionsAssociated.FirstOrDefault(x => x.QuestionId == q.Id).IsTimeBound : q.IsTimeBound),
                    NegativeMarks = (questionsAssociated.Any(x => x.QuestionId == q.Id) ? questionsAssociated.FirstOrDefault(x => x.QuestionId == q.Id).NegativeMarks : q.NegativeMarks),
                    Question      = (questionsAssociated.Any(x => x.QuestionId == q.Id) ? questionsAssociated.FirstOrDefault(x => x.QuestionId == q.Id).Question.Name : q.Name),
                    QuestionId    = (questionsAssociated.Any(x => x.QuestionId == q.Id) ? questionsAssociated.FirstOrDefault(x => x.QuestionId == q.Id).QuestionId : q.Id),
                    RightMarks    = (questionsAssociated.Any(x => x.QuestionId == q.Id) ? questionsAssociated.FirstOrDefault(x => x.QuestionId == q.Id).RightMarks : q.RightMarks),
                    SolveTime     = (questionsAssociated.Any(x => x.QuestionId == q.Id) ? questionsAssociated.FirstOrDefault(x => x.QuestionId == q.Id).SolveTime : q.SolveTime),
                    UserId        = (questionsAssociated.Any(x => x.QuestionId == q.Id) ? questionsAssociated.FirstOrDefault(x => x.QuestionId == q.Id).UserId : q.UserId),
                    IsChecked     = (questionsAssociated.Any(x => x.QuestionId == q.Id) ? true : false)
                });
            }

            model.List = model.List.OrderBy(x => x.DisplayOrder).ToList();
            return(View(model));
        }