public async Task <bool> answerRequest(AnswerRequestDTO answer) { Request request = await requestRepository.GetOneByIdAsync(answer.RequestId); if (request == null || request.ConstantId != RequestStatus.Waiting) { throw new BadRequestException("No existe ese request"); } if (!answer.answer) { request.ConstantId = RequestStatus.Denied; await requestRepository.UpdateOneAsync(request); return(true); } else { if (request.ConstantId != RequestStatus.Waiting) { throw new BadRequestException("Esta solicitud ya esta respondida"); } if (request.SharedSpace.IsOccupied) { throw new BadRequestException("Esta ocupado el espacio compartido que se solicita"); } request.ConstantId = RequestStatus.Accepted; SharedSpace SharedSpace = await sharedSpaceRepository.FindOneByIdAsync(request.SharedSpace.Id); foreach (var item in SharedSpace.Requests) { if (item.ConstantId == RequestStatus.Waiting) { if (item.Id != answer.RequestId) { item.ConstantId = RequestStatus.Denied; } else { item.ConstantId = RequestStatus.Accepted; } await requestRepository.UpdateOneAsync(item); } } SharedSpace.IsOccupied = true; await sharedSpaceRepository.UpdateAsync(SharedSpace); } return(true); }
public async Task <IActionResult> AnswerRequest([FromBody] AnswerRequestDTO requestDto) { try { var response = await requestService.answerRequest(requestDto); return(Ok()); } catch (Exception e) { return(HttpExceptionMapper.ToHttpActionResult(e)); } }