Пример #1
0
        public async Task <ActionResult> Create(QuestionCreateViewModel model, FormCollection formCollection)
        {
            List <AddAnswerRequest> answers = new List <AddAnswerRequest>();

            for (int i = 4; i < formCollection.Count; i += 2)
            {
                AddAnswerRequest addAnswerRequest = new AddAnswerRequest()
                {
                    Title           = formCollection[i],
                    IsCorrectAnswer = Convert.ToBoolean(formCollection[i + 1])
                };
                answers.Add(addAnswerRequest);
            }

            CreateQuestionRequest createQuestionRequest = new CreateQuestionRequest()
            {
                Title       = model.Title,
                Explanation = model.Explanation,
                ThemeId     = model.ThemeId,
                Answers     = answers
            };

            var question = await _questionAdminService.CreateQuestionAsync(createQuestionRequest);

            if (model.Image != null && model.Image.ContentLength > 0)
            {
                var extension = AttachmentsUtil.GetExtentionFromMimeType(model.Image.ContentType);
                var content   = GetAttachmentContent(model.Image);
                await _questionAdminService.UploadAttachmentAsync(new UploadQuestionAttachmentRequest(question.Id, content, extension));
            }

            return(RedirectToAction("Index", new { themeId = model.ThemeId }));
        }
Пример #2
0
        public AnswerResponse AddAnswer([FromBody] AddAnswerRequest request)
        {
            var userId = User.Claims
                         .Where <Claim>(c => c.Type == ClaimTypes.NameIdentifier)
                         .Select(s => s.Value).First();

            if (userId == null)
            {
                return(new AnswerResponse {
                    Data = null, Message = "اطلاعات کاربری یافت نشد"
                });
            }
            var answer = new Answer
            {
                CreateTime  = DateTime.Now,
                Description = request.Description,
                QuestionId  = request.QuestionId,
                UserId      = userId
            };

            try
            {
                context.Answers.Add(answer);
                context.SaveChanges();
            }
            catch (Exception e)
            {
                return(new AnswerResponse {
                    Data = null, Message = "در ثبت جواب مشکلی پیش آمد"
                });
            }
            return(new AnswerResponse {
                Data = null, Message = "جواب با موفقیت ثبت شد"
            });
        }
Пример #3
0
        public IEnumerable <Answer> AddAnswer(AddAnswerRequest model)
        {
            var paramForAddAnswer = new DynamicParameters();

            paramForAddAnswer.Add("@AnswerContent", model.AnswerContent);
            paramForAddAnswer.Add("@UserId", model.UserId);
            paramForAddAnswer.Add("@QuestionId", model.QuestionId);
            paramForAddAnswer.Add("@CreatedDate", model.CreatedDate);

            var answerId = _dbConnection.Query <int>(@"insert into Answer(AnswerContent, UserId, QuestionId, CreatedDate) 
                                                        values(@AnswerContent,@UserId,@QuestionId,@CreatedDate);
                                                    SELECT CAST(SCOPE_IDENTITY() as int)", paramForAddAnswer).Single();

            var paramForGetAnswers = new DynamicParameters();

            paramForGetAnswers.Add("@QuestionId", model.QuestionId);

            var answers = _dbConnection.Query <Answer>(@"select	a.AnswerId,
		                                                        a.AnswerContent,
		                                                        a.UserId as UserAnswerId,
		                                                        a.CreatedDate as AnswerDate,
		                                                        u.Avatar,
		                                                        u.FirstName + ' ' + u.LastName as UserFullName,
		                                                        (select count(AnswerId) from Vote as v where v.AnswerId=a.AnswerId) as TotalVote
                                                        from	Answer as a
                                                        join	[User] as u on a.UserId=u.UserId
                                                        where	QuestionId = @QuestionId 
                                                        order by AnswerDate", paramForGetAnswers);

            return(answers);
        }
Пример #4
0
 public void AddAnswer(AddAnswerRequest request)
 {
     GeneralHelpers.ThrowIfNull(request.Answer);
     answerRepo.AddAnswer(new Answer
     {
         Description = request.Answer,
         QuestionId  = request.QuestionId
     });
 }
Пример #5
0
        public IActionResult AddAnswer(AddAnswerRequest model)
        {
            string tokenString   = Request.Headers["Authorization"];
            int    currentUserId = JwtAthentication.GetCurrentUserId(tokenString);

            model.UserId = currentUserId;

            var answers = _answerService.AddAnswer(model);

            answers.ForEach(x => x.AvatarUrl = Url.Content(string.Format("~/Images/UserAvatars/{0}", x.Avatar)));

            return(Ok(new { answers = answers }));
        }
Пример #6
0
        public async Task AddAnswerAsync(AddAnswerRequest request)
        {
            var questionAnswer = new QuestionAnswer
            {
                QuestionId = request.QuestionId,
                Answer     = new Answer
                {
                    Id              = Guid.NewGuid(),
                    Title           = request.Title,
                    IsCorrectAnswer = request.IsCorrectAnswer,
                    Created         = DateTime.UtcNow
                }
            };

            UnitOfWork.QuestionAnswerRepository.Add(questionAnswer);
            await UnitOfWork.SaveChangesAsync();
        }
Пример #7
0
        public async Task EditQuestionAsync(EditQuestionRequest model)
        {
            var question = await UnitOfWork.QuestionRepository.Query(x => x.Id == model.Id)
                           .FirstOrDefaultAsync();

            if (question == null)
            {
                throw new ArgumentNullException();
            }

            question.Title       = model.Title;
            question.Explanation = model.Explanation;

            UnitOfWork.QuestionRepository.Update(question);
            await UnitOfWork.SaveChangesAsync();

            var answers = await _answerAdminService.GetAllAnswersByQuestionIdAsync(question.Id);

            foreach (var answer in model.Answers)
            {
                if (answer.Id == Guid.Empty) // Add new answers
                {
                    AddAnswerRequest addAnswerRequest = new AddAnswerRequest()
                    {
                        Title           = answer.Title,
                        IsCorrectAnswer = answer.IsCorrectAnswer,
                        QuestionId      = question.Id
                    };
                    await _answerAdminService.AddAnswerAsync(addAnswerRequest);
                }
                else // Update answers
                {
                    answers.RemoveAll(x => x.Id == answer.Id);
                    await _answerAdminService.UpdateAnswerAsync(answer);
                }
            }
            foreach (var answer in answers) // Delete answers
            {
                await _answerAdminService.DeleteAnswerAsync(answer.Id);
            }
        }
 public async Task AddAsync(AddAnswerRequest request)
 => await answersRepository.AddAsync(mapper.Map <Answer>(request));
Пример #9
0
 public List <Answer> AddAnswer(AddAnswerRequest model)
 {
     return(_answerRepository.AddAnswer(model).ToList());
 }
Пример #10
0
 public ActionResult AddAnswer([FromForm] AddAnswerRequest request)
 {
     answerService.AddAnswer(request);
     return(Ok());
 }
Пример #11
0
 public async Task AddAnswer([FromBody] AddAnswerRequest request)
 => await answersService.AddAsync(request);
Пример #12
0
 public BaseResult AddAnswer(AddAnswerRequest request)
 {
     return(_retroLogic.AddAnswer(request.Answer));
 }