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