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 })); }
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)); }