public async Task <IActionResult> DeleteAnswer([FromRoute] long id)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var answerTask = answerRepository.GetByIDAysnc(id);
            var userTask   = userManager.FindByNameAsync(User.Identity.Name);

            var answer = await answerTask;
            var user   = await userTask;

            if (answer == null)
            {
                return(NotFound());
            }

            if (answer.ApplicationUserId != user.Id)
            {
                return(Unauthorized());
            }

            await answerRepository.DeleteAsync(answer);

            return(Ok(answer));
        }
Ejemplo n.º 2
0
        public async Task <Response <object> > Handle(DeleteAnswerCommand request, CancellationToken cancellationToken)
        {
            var response = new Response <object>();
            var answer   = await _answerRepository.GetByIdAsync(request.Id);

            if (answer is null)
            {
                response.ErrorReason = ErrorReason.NotFound;
                response.Errors      = new Dictionary <string, IList <string> >
                {
                    {
                        DeleteAnswer,
                        new List <string> {
                            ErrorMessages.Entity <Answer> .GetNotFoundMessage(request.Id)
                        }
                    }
                };
                return(response);
            }

            var userId = _currentUserService.UserId;

            if (!_accessValidator.HasAccessToModify(userId, answer))
            {
                response.ErrorReason = ErrorReason.HaveNoAccess;
                response.Errors      = new Dictionary <string, IList <string> >()
                {
                    {
                        DeleteAnswer,
                        new List <string> {
                            ErrorMessages.Entity <Answer> .GetNoAccessMessage(answer.Id, userId)
                        }
                    }
                };
                return(response);
            }

            await _answerRepository.DeleteAsync(answer);

            response.SetData();
            return(response);
        }
Ejemplo n.º 3
0
 public async Task <Answer> DeleteAsync(Answer entity)
 {
     return(await repository.DeleteAsync(entity));
 }
 public async Task <bool> DeleteByIdAsync(int id)
 {
     return(await _answerRepository.DeleteAsync(id));
 }
Ejemplo n.º 5
0
 public async Task <bool> Delete(string uid)
 {
     return(await answerRepository.DeleteAsync(uid));
 }