Beispiel #1
0
        public Question PostQuestionFromDraft(QuestionCreateFromDraftRequestDTO q, int accountId)
        {
            DraftQuestion question = _questionServices.GetDraftQuestion(q.QuestionDraftId);

            //Validations
            if (accountId != question.AccountId)
            {
                throw new InvalidAccountException("User cannot edit another user's question");
            }
            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 questionToPost = question;

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

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

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

            default:
                throw new ArgumentException("Invalid Question type");
            }
        }
Beispiel #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");
            }
        }
        public ActionResult DeleteConfirmed(int id)
        {
            SchoolQuestion schoolQuestion = db.SchoolQuestions.Find(id);

            db.SchoolQuestions.Remove(schoolQuestion);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "QuestionID,SchoolID,ParentID,Question,Answer")] SchoolQuestion schoolQuestion)
 {
     if (ModelState.IsValid)
     {
         db.Entry(schoolQuestion).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.ParentID = new SelectList(db.Parents, "ParentID", "PFirstName", schoolQuestion.ParentID);
     ViewBag.SchoolID = new SelectList(db.Schools, "SchoolID", "SchoolName", schoolQuestion.SchoolID);
     return(View(schoolQuestion));
 }
        // GET: SchoolQuestions/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            SchoolQuestion schoolQuestion = db.SchoolQuestions.Find(id);

            if (schoolQuestion == null)
            {
                return(HttpNotFound());
            }
            return(View(schoolQuestion));
        }
        // GET: SchoolQuestions/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            SchoolQuestion schoolQuestion = db.SchoolQuestions.Find(id);

            if (schoolQuestion == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ParentID = new SelectList(db.Parents, "ParentID", "PFirstName", schoolQuestion.ParentID);
            ViewBag.SchoolID = new SelectList(db.Schools, "SchoolID", "SchoolName", schoolQuestion.SchoolID);
            return(View(schoolQuestion));
        }