Exemple #1
0
        public ActionResult EditChooseQuestion([FromBody] ChooseQuestionAddModel model, string token)
        {
            if (token.Length != TokenManagement.TokenLength)
            {
                token = WebUtility.UrlDecode(token);
            }

            using TrackerContext db = new();
            var ut = db.UserToken.FirstOrDefault(t => t.Token.Equals(token));

            if (ut is null)
            {
                return(Unauthorized("You're not authorised"));
            }

            var questionEdited = db.Question.FirstOrDefault(p => p.ID == model.ID);

            if (questionEdited is null)
            {
                return(BadRequest("Question does not exist"));
            }

            if (db.Project.FirstOrDefault(p => p.ID == model.ProjectID) is null)
            {
                return(BadRequest("Project does not exists"));
            }

            if (db.Project.First(p => p.ID == model.ProjectID).ResearcherID != ut.ResearcherID)
            {
                return(BadRequest("Access denied"));
            }

            if (db.Question.Where(q => q.ProjectID == model.ProjectID)
                .FirstOrDefault(q => q.QuestionNumber == model.QuestionNumber) != null)
            {
                return(BadRequest("Question with current position number exists in project"));
            }

            var chooseQuestion = db.ChooseQuestion.First(q => q.QuestionID == questionEdited.ID);

            try {
                questionEdited.ProjectID       = model.ProjectID;
                questionEdited.InstructionText = model.InstructionText;
                questionEdited.QuestionNumber  = model.QuestionNumber;
                questionEdited.QuestionSubtext = model.QuestionSubtext;
                questionEdited.QuestionText    = model.QuestionText;
                questionEdited.QuestionTypeID  = 2;

                chooseQuestion.IsSingleChoice = model.IsSingleChoice;

                int index = 0;
                var multipleChooseQuestionVariants = new List <MultipleChooseQuestionVariant>();
                foreach (var item in model.AnswerVariants)
                {
                    multipleChooseQuestionVariants.Add(new MultipleChooseQuestionVariant());
                    multipleChooseQuestionVariants[index].AnswerText = item;
                    multipleChooseQuestionVariants[index].QuestionID = questionEdited.ID;
                    index++;
                }
                db.MultipleChooseQuestionVariant.RemoveRange(
                    db.MultipleChooseQuestionVariant.Where(q => q.QuestionID == questionEdited.ID));

                db.SaveChanges();

                db.MultipleChooseQuestionVariant.AddRange(multipleChooseQuestionVariants);

                db.SaveChanges();
            }
            catch (Exception ex) {
                return(BadRequest(ex));
                //return BadRequest("Cannot add new participant. Possible reasons:" +
                //   "You");
            }

            return(Ok("Question edited successfully"));
        }
Exemple #2
0
        public ActionResult AddChooseQuestion([FromBody] ChooseQuestionAddModel model, string token)
        {
            if (token.Length != TokenManagement.TokenLength)
            {
                token = WebUtility.UrlDecode(token);
            }

            using TrackerContext db = new();
            var ut = db.UserToken.FirstOrDefault(t => t.Token.Equals(token));

            if (ut is null)
            {
                return(Unauthorized("You're not authorised"));
            }

            if (db.Project.FirstOrDefault(p => p.ID == model.ProjectID) is null)
            {
                return(BadRequest("Project does not exists"));
            }

            if (db.Project.First(p => p.ID == model.ProjectID).ResearcherID != ut.ResearcherID)
            {
                return(BadRequest("Access denied"));
            }

            if (db.Question.Where(q => q.ProjectID == model.ProjectID)
                .FirstOrDefault(q => q.QuestionNumber == model.QuestionNumber) != null)
            {
                return(BadRequest("Question with current position number exists in project"));
            }

            try {
                int id = db.Question.Max(q => q.ID) + 1;
                db.Question.Add(new Question()
                {
                    ID              = id,
                    ProjectID       = model.ProjectID,
                    InstructionText = model.InstructionText,
                    QuestionNumber  = model.QuestionNumber,
                    QuestionSubtext = model.QuestionSubtext,
                    QuestionText    = model.QuestionText,
                    QuestionTypeID  = 2
                });

                db.SaveChanges();

                db.ChooseQuestion.Add(new ChooseQuestion()
                {
                    QuestionID     = id,
                    IsSingleChoice = model.IsSingleChoice
                });

                foreach (var item in model.AnswerVariants)
                {
                    db.MultipleChooseQuestionVariant.Add(new MultipleChooseQuestionVariant()
                    {
                        AnswerText = item,
                        QuestionID = id
                    });
                }

                db.SaveChanges();
            }
            catch (Exception ex) {
                return(BadRequest(ex));
                //return BadRequest("Cannot add new participant. Possible reasons:" +
                //   "You");
            }

            return(Ok("Question added successfully"));
        }