Ejemplo n.º 1
0
        public IHttpActionResult PostQuestion([FromBody] QuestionCreateRequestDTO questionDTO)
        {
            List <string> requiredClaims = new List <string>()
            {
            };

            authUserId = AuthorizeUser(requiredClaims);
            if (authUserId == 0)
            {
                return(Unauthorized());
            }

            using (var _db = new DatabaseContext())
            {
                DiscussionForumManager discussionForumManager = new DiscussionForumManager(_db);
                try
                {
                    // TODO accountId should come from authorization and take out hard-coded value
                    discussionForumManager.PostQuestion(questionDTO, questionDTO.AccountId);
                    _db.SaveChanges();
                    return(Content(HttpStatusCode.OK, "Question posted successfully"));
                }
                catch (Exception ex)
                {
                    return(Content(HttpStatusCode.InternalServerError, ex.InnerException));
                }
            }
        }
Ejemplo n.º 2
0
        //private string _schoolQuestionTypeName = typeof(SchoolQuestion).Name;
        //private string _departmentQuestionTypeName = typeof(DepartmentQuestion).Name;
        //private string _courseQuestionTypeName = typeof(CourseQuestion).Name;
        //private string _draftQuestionTypeName = typeof(CourseQuestion).Name;

        public Question PostQuestion(QuestionCreateRequestDTO q, int accountId)
        {
            //Validations
            if (q.Text == null || q.Text.Length < _questionCharMin || q.Text.Length > _questionCharMax)
            {
                throw new InvalidQuestionLengthException("Question must be between " + _questionCharMin + " and " + _questionCharMax + " characters.");
            }

            //Create question after validations based on type
            //Then post question and return posted question
            Question question;

            switch (q.QuestionType)
            {
            case _schoolQuestion:
                //Validate Ids?
                question = new SchoolQuestion()
                {
                    AccountId         = accountId,
                    SchoolId          = q.SchoolId,
                    Text              = q.Text,
                    ExpNeededToAnswer = q.ExpNeededToAnswer
                };
                return(_questionServices.PostQuestion(question));

            case _departmentQuestion:
                //Validate Ids?
                question = new DepartmentQuestion()
                {
                    AccountId          = accountId,
                    SchoolDepartmentId = q.DepartmentId,
                    Text = q.Text,
                    ExpNeededToAnswer = q.ExpNeededToAnswer
                };
                return(_questionServices.PostQuestion(question));

            case _courseQuestion:
                question = new CourseQuestion()
                {
                    AccountId         = accountId,
                    CourseId          = q.CourseId,
                    Text              = q.Text,
                    ExpNeededToAnswer = q.ExpNeededToAnswer
                };
                return(_questionServices.PostQuestion(question));

            case _draftQuestion:
                question = new DraftQuestion()
                {
                    AccountId         = accountId,
                    Text              = q.Text,
                    ExpNeededToAnswer = q.ExpNeededToAnswer
                };
                return(_questionServices.PostQuestion(question));

            default:
                throw new ArgumentException("Invalid Question type");
            }
        }