Beispiel #1
0
        public IHttpActionResult CloseQuestion(int questionId)
        {
            List <string> requiredClaims = new List <string>()
            {
                //"CanCloseQuestion"
            };

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

            using (var _db = new DatabaseContext())
            {
                PostedQuestion question;
                try
                {
                    DiscussionForumManager discussionManager = new DiscussionForumManager(_db);
                    question = discussionManager.CloseQuestion(questionId, authUserId);
                    var isClosed = question.IsClosed;
                    return(Content(HttpStatusCode.OK, isClosed));
                }
                catch (QuestionIsClosedException ex)
                {
                    return(Content(HttpStatusCode.BadRequest, ex.Message));
                }
                catch (InvalidAccountException ex)
                {
                    return(Content(HttpStatusCode.Unauthorized, ex.Message));
                }
            }
        }
Beispiel #2
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));
                }
            }
        }
Beispiel #3
0
        public IHttpActionResult IncreaseAnswerUnHelpfulCount(int answerId)
        {
            List <string> requiredClaims = new List <string>()
            {
            };

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

            using (var _db = new DatabaseContext())
            {
                Answer answer;
                try
                {
                    DiscussionForumManager discussionManager = new DiscussionForumManager(_db);
                    answer = discussionManager.IncreaseUnHelpfulCount(answerId, authUserId);
                    _db.SaveChanges();
                    var unHelpfulCount = answer.UnHelpfulCount;
                    return(Content(HttpStatusCode.OK, unHelpfulCount));
                }
                catch (ArgumentNullException)
                {
                    return(Content(HttpStatusCode.BadRequest, "Answer does not exist"));
                }
                catch (InvalidAccountException ex)
                {
                    return(Content(HttpStatusCode.Unauthorized, ex.Message));
                }
            }
        }
Beispiel #4
0
        public IHttpActionResult GetAnswers(int questionId)
        {
            List <string> requiredClaims = new List <string>()
            {
            };

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

            try
            {
                using (var _db = new DatabaseContext())
                {
                    DiscussionForumManager _discussionForumManager = new DiscussionForumManager(_db);
                    var answers = _discussionForumManager.GetAnswers(questionId);
                    return(Content(HttpStatusCode.OK, answers));
                }
            }
            catch (Exception ex) when(ex is ArgumentException)
            {
                return(Content(HttpStatusCode.NoContent, ex.Message));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, ex.Message));
            }
        }
Beispiel #5
0
 public IHttpActionResult GetQuestionsByDepartment(int departmentId)
 {
     try
     {
         using (var _db = new DatabaseContext())
         {
             DiscussionForumManager _discussionForumManager = new DiscussionForumManager(_db);
             var questions = _discussionForumManager.GetSchoolDepartmentQuestions(departmentId);
             return(Content(HttpStatusCode.OK, questions));
         }
     }
     catch (Exception ex) when(ex is ArgumentException)
     {
         return(Content(HttpStatusCode.NoContent, ex.Message));
     }
     catch (Exception ex)
     {
         return(Content(HttpStatusCode.InternalServerError, ex.Message));
     }
 }
Beispiel #6
0
        public IHttpActionResult MarkAsCorrectAnswer(int answerId)
        {
            List <string> requiredClaims = new List <string>()
            {
                //"CanMarkAnswerAsCorrect"
            };

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

            using (var _db = new DatabaseContext())
            {
                try
                {
                    DiscussionForumManager discussionManager = new DiscussionForumManager(_db);
                    var answer    = discussionManager.MarkAsCorrectAnswer(answerId, authUserId);
                    var isCorrect = answer.IsCorrectAnswer;
                    _db.SaveChanges();
                    return(Content(HttpStatusCode.OK, isCorrect));
                }
                catch (ArgumentNullException)
                {
                    return(Content(HttpStatusCode.BadRequest, "Answer does not exist"));
                }
                catch (QuestionIsClosedException ex)
                {
                    return(Content(HttpStatusCode.Forbidden, ex.Message));
                }
                catch (InvalidAccountException ex)
                {
                    return(Content(HttpStatusCode.Unauthorized, ex.Message));
                }
                catch (DbUpdateConcurrencyException)
                {
                    return(Content(HttpStatusCode.InternalServerError, "There was an error on the server"));
                }
            }
        }
Beispiel #7
0
        public IHttpActionResult UpdateQuestion([FromBody] QuestionUpdateRequestDTO questionDTO)
        {
            List <string> requiredClaims = new List <string>()
            {
            };

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

            using (var _db = new DatabaseContext())
            {
                Question question;
                try
                {
                    DiscussionForumManager discussionManager = new DiscussionForumManager(_db);
                    question = discussionManager.EditQuestion(questionDTO, questionDTO.AccountId);
                    _db.SaveChanges();
                    return(Content(HttpStatusCode.OK, "Question was updated succesfully."));
                }
                catch (QuestionIsClosedException ex)
                {
                    return(Content(HttpStatusCode.Forbidden, ex.Message));
                }
                catch (InvalidQuestionLengthException ex)
                {
                    return(Content(HttpStatusCode.BadRequest, ex.Message));
                }
                catch (InvalidAccountException ex)
                {
                    return(Content(HttpStatusCode.Unauthorized, ex.Message));
                }
                catch (QuestionUnavailableException ex)
                {
                    return(Content(HttpStatusCode.Forbidden, ex.Message));
                }
            }
        }
Beispiel #8
0
        public IHttpActionResult PostAnswer([FromBody] AnswerCreateRequestDTO answerDTO)
        {
            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.PostAnswer(answerDTO, authUserId);
                    _db.SaveChanges();
                    return(Content(HttpStatusCode.OK, "Answer posted successfully"));
                }
                catch (QuestionIsClosedException ex)
                {
                    return(Content(HttpStatusCode.Forbidden, ex.Message));
                }
                catch (NotEnoughExpException ex)
                {
                    // TODO BadRequest?
                    return(Content(HttpStatusCode.BadRequest, ex.Message));
                }
                catch (Exception ex)
                {
                    return(Content(HttpStatusCode.InternalServerError, ex.InnerException));
                }
            }
        }
Beispiel #9
0
        public IHttpActionResult IncreaseAnswerHelpfulCount(int answerId)
        {
            List <string> requiredClaims = new List <string>()
            {
            };

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

            using (var _db = new DatabaseContext())
            {
                try
                {
                    DiscussionForumManager discussionManager = new DiscussionForumManager(_db);
                    var answer = discussionManager.IncreaseHelpfulCount(answerId, authUserId);
                    _db.SaveChanges();
                    var helpfulCount = answer.HelpfulCount;
                    return(Content(HttpStatusCode.OK, helpfulCount));
                }
                catch (ArgumentNullException)
                {
                    return(Content(HttpStatusCode.BadRequest, "Answer does not exist"));
                }
                catch (InvalidAccountException ex)
                {
                    return(Content(HttpStatusCode.Unauthorized, ex.Message));
                }
                catch (DbUpdateConcurrencyException)
                {
                    return(Content(HttpStatusCode.InternalServerError, "There was an error on the server"));
                }
            }
        }
Beispiel #10
0
        public IHttpActionResult PostQuestionFromDraft([FromBody] QuestionCreateFromDraftRequestDTO questionDTO)
        {
            List <string> requiredClaims = new List <string>()
            {
            };

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

            using (var _db = new DatabaseContext())
            {
                Question question;
                try
                {
                    DiscussionForumManager discussionManager = new DiscussionForumManager(_db);
                    question = discussionManager.PostQuestionFromDraft(questionDTO, authUserId);
                    _db.SaveChanges();
                    return(Content(HttpStatusCode.OK, "Draft was posted successfully from draft."));
                }
                catch (InvalidAccountException ex)
                {
                    return(Content(HttpStatusCode.Unauthorized, ex.Message));
                }
                catch (InvalidQuestionLengthException ex)
                {
                    return(Content(HttpStatusCode.BadRequest, ex.Message));
                }
                catch (Exception ex)
                {
                    return(Content(HttpStatusCode.InternalServerError, ex.Message));
                }
            }
        }