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