public async Task Update(string id, QuestionnaireDTO model, string username)
        {
            if (string.IsNullOrEmpty(id) || model == null)
            {
                throw new AppException("Bad Request, Invalid Model or ID");
            }

            var questionnaire = _questionnaireRepository.Get(x => x.ID == id);

            if (questionnaire == null)
            {
                throw new AppException("No Entity Found For Update");
            }

            var questionnaireDetail = await _questionnaireRepository.GetQuestionnaireDetail(questionnaire.ID);

            questionnaire.Question    = model.Question;
            questionnaire.SubjectCode = model.SubjectCode;
            questionnaire.Answer      = model.Answer;
            questionnaire.IsMock      = model.IsMock;
            questionnaire.UpdatedBy   = username;
            questionnaire.UpdatedDate = DateTime.Now;

            _questionnaireRepository.AddOrUpdate(questionnaire);
            if (questionnaireDetail != null)
            {
                questionnaireDetail.Option1     = model.Option1;
                questionnaireDetail.Option2     = model.Option2;
                questionnaireDetail.Option3     = model.Option3;
                questionnaireDetail.Option4     = model.Option4;
                questionnaireDetail.Explanation = model.Explanation;

                await _questionnaireRepository.UpdateQuestionnaireDetail(questionnaireDetail);
            }
            _unitOfWork.Commit();
        }