Example #1
0
        public async Task <ActionResult <AnswerResponse> > PostTextAnswer(DTO.Answer <string> input)
        {
            var question = await _db.Questions.FindAsync(input.QuestionId);

            if (question == null)
            {
                return(NotFound(new ErrorModel
                {
                    Reason = "Question with the provided QuestionId does not exist",
                    Error = "Question Not Found"
                }));
            }

            var answer = new Data.Answer
            {
                AnswerContent   = input.AnswerContent,
                QuestionId      = input.QuestionId,
                IsAnswerCorrect = input.IsAnswerCorrect,
            };

            _db.Answers.Add(answer);

            question.QuestionAnswers = new List <QuestionAnswer>();

            question.QuestionAnswers.Add(new QuestionAnswer
            {
                Question = question,
                Answer   = answer
            });
            var result = answer.MapAnswerResponse();
            await _db.SaveChangesAsync();

            return(CreatedAtAction(nameof(Get), new { Id = result.Id }, result));
        }
Example #2
0
        protected void ListViewAnswers_ItemDataBound(object sender, ListViewItemEventArgs e)
        {
            ListView listViewComments = (ListView)e.Item.FindControl("RepeaterComment");

            Data.Answer answer = ((Data.Answer)e.Item.DataItem);
            listViewComments.DataSource = answer.Comments;

            HyperLink answerEditLink = (HyperLink)e.Item.FindControl("HyperLinkAnswerEdit");

            if (answer.UserId == User.Identity.GetUserId <int>())
            {
                answerEditLink.Visible = true;
            }

            if (ViewState["RepeaterId"] != null && e.Item.ID == (string)ViewState["RepeaterId"])
            {
                Panel reply = (Panel)e.Item.FindControl("CommentPanel");
                reply.Visible = true;
                ViewState.Add("CurrentAnswerId", answer.Id);

                RegularExpressionValidator regExpValidator = (RegularExpressionValidator)e.Item.FindControl("RegularExpressionValidatorComment");
                TextBox tb = (TextBox)e.Item.FindControl("TextBoxComment");
                tb.Text = (string)ViewState["CommentText"];

                regExpValidator.ControlToValidate = tb.ID;
                regExpValidator.Validate();
                listViewComments.DataBind();
            }
            else
            {
                listViewComments.DataBind();
            }
        }
Example #3
0
 public static DTO.AnswerResponse MapAnswerResponse(this Data.Answer answer)
 => new DTO.AnswerResponse
 {
     Id            = answer.Id,
     AnswerContent = answer.AnswerContent,
     QuestionId    = answer.QuestionId,
     Question      = answer.QuestionAnswers?.Select(s => new DTO.Question <string>
     {
         Id = s.QuestionId,
         QuestionContent = s.Question.QuestionContent,
         QuestionPoints  = s.Question.QuestionPoints
     }).FirstOrDefault()
 };
        public Data.Answer GetAnswer(UserAnswer myAnswer, ApplicationDbContext context)
        {
            Data.Answer answer;
            answer = context.Answers.FirstOrDefault(x => x.QuestionId == myAnswer.QuestionId && x.Title == myAnswer.Answer);
            if (answer == null)
            {
                answer = new Data.Answer {
                    QuestionId = myAnswer.QuestionId, Title = myAnswer.Answer
                };
                context.Answers.Add(answer);
                context.SaveChanges();
            }

            return(answer);
        }
Example #5
0
        public async Task <ActionResult <AnswerResponse> > PostImageAnswer(DTO.Answer <IFormFile> input)
        {
            var question = await _db.Questions.FindAsync(input.QuestionId);

            if (question == null)
            {
                return(NotFound(new ErrorModel
                {
                    Reason = "Question with the provided QuestionId does not exist",
                    Error = "Question Not Found"
                }));
            }

            var imageResponse = await _imageUploader.DataLoaderAsync(input.AnswerContent, "answers");

            if (!imageResponse.IsSuccess)
            {
                return(BadRequest(new ErrorModel
                {
                    Error = imageResponse.Data,
                    Reason = imageResponse.Message
                }));
            }

            var answer = new Data.Answer
            {
                AnswerContent   = imageResponse.Data,
                QuestionId      = input.QuestionId,
                IsAnswerCorrect = input.IsAnswerCorrect,
            };

            _db.Answers.Add(answer);

            question.QuestionAnswers = new List <QuestionAnswer>();

            question.QuestionAnswers.Add(new QuestionAnswer
            {
                Question = question,
                Answer   = answer
            });
            var result = answer.MapAnswerResponse();
            await _db.SaveChangesAsync();

            return(CreatedAtAction(nameof(Get), new { Id = result.Id }, result));
        }
Example #6
0
        public bool Add(Data.ApplicationDbContext context)
        {
            if (context.Answers.Any(x => x.QuestionId == this.ParentId && x.Title == this.Title))
            {
                return(false);
            }
            try
            {
                var answer = new Data.Answer {
                    Title = this.Title, QuestionId = this.ParentId
                };

                context.Answers.Add(answer);
                context.SaveChanges();

                return(true);
            }
            catch
            {
                return(false);
            }
        }