Ejemplo n.º 1
0
        public ActionResult SaveQuestion(string questionUrlReference, string folderIdentifier, bool isEditMode, bool isNewQuestion, bool isExistingQuestion, string questionGuid, int authoringType, string authoringUrl, string questionNewTextToSave)
        {
            Question questionItemToEdit = new Question();
            bool isProceedToStep4Valid = false;
            bool isQuestionSavedToQuestionBankValue = false;
            try
            {
                if ((isNewQuestion || isExistingQuestion) && questionNewTextToSave != "")
                {
                    bool isQuestionNameExists = _questionBankService.IsQuestionNameExists(questionNewTextToSave);
                    if (isQuestionNameExists)
                    {
                        return Json(new { isQuestionNameAlreadyExists = true });
                    }
                }
                string questionObjJson = HttpUtility.UrlDecode(new StreamReader(Request.InputStream).ReadToEnd());
                string parentIdentifier = String.Empty;
                Question questionObject = JsonSerializer.DeserializeObject<Question>(questionObjJson);
                questionItemToEdit = isEditMode ? _questionBankService.GetQuestion(questionUrlReference) : questionObject;
                questionItemToEdit.AnswerOptions = questionObject.AnswerOptions;
                questionItemToEdit.BlankOrientation = questionObject.BlankOrientation;
                questionItemToEdit.CompetencyReferenceGuid = questionObject.CompetencyReferenceGuid;
                questionItemToEdit.CorrectOrder = questionObject.CorrectOrder;
                questionItemToEdit.NoOfLabels = questionObject.NoOfLabels;
                questionItemToEdit.QuestionImageReference = questionObject.QuestionImageReference;
                questionItemToEdit.QuestionText = questionObject.QuestionText;
                questionItemToEdit.QuestionType = questionObject.QuestionType;
                questionItemToEdit.Rationale = questionObject.Rationale;
                questionItemToEdit.IsActive = questionObject.IsActive;
                questionItemToEdit.IsAutoSave = questionObject.IsAutoSave;
                SetAuditFields(questionItemToEdit, isEditMode);

                if (authoringType == (int)AppCommon.AuthoringType.SkillSet || authoringType == (int)AppCommon.AuthoringType.AssignmentBuilder)
                {
                    Question questionItemForAuthoring = questionItemToEdit.Clone();

                    if (isNewQuestion && !String.IsNullOrEmpty(questionNewTextToSave))
                    {
                        questionItemToEdit.QuestionText = questionNewTextToSave;
                        questionItemForAuthoring.QuestionText = questionNewTextToSave;
                    }
                    parentIdentifier = SaveQuestionsForSkillSet(questionItemForAuthoring, isNewQuestion,
                                                                isExistingQuestion, questionGuid);
                    if (isNewQuestion || isExistingQuestion)
                    {
                        isQuestionSavedToQuestionBankValue = true;
                    }
                }
                questionItemToEdit.ParentReferenceGuid = parentIdentifier;
                _questionBankService.SaveQuestion(questionItemToEdit, GetDropBoxFromCookie(), questionUrlReference, folderIdentifier, isEditMode, false);
                if (!String.IsNullOrEmpty(authoringUrl))
                {
                    isProceedToStep4Valid = CheckIfAllQuestionsTemplatesAreConfigured(authoringUrl, authoringType);
                }
            }
            catch (Exception ex)
            {
                AjaxCallResult(new AjaxResult(AppEnum.ResultType.Error, ex.ToString(), ""));
                ExceptionManager.Error("Error: ControllerName: QuestionBank, MethodName: SaveQuestion", ex);
            }
            return Json(new { Success = "", questionResult = questionItemToEdit, isProceedToStep4Valid = isProceedToStep4Valid, isQuestionSavedToQuestionBank = isQuestionSavedToQuestionBankValue, isQuestionNameAlreadyExists = false });
        }