public async Task <IActionResult> CreateMessage(int userId, MessageForCreateionDto messageForCreateionDto) { var sender = await _repo.GetUser(userId, false); //create sender variable to give auto mapper a hint to map messageToReturnDto if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } messageForCreateionDto.SenderId = userId; var recipient = await _repo.GetUser(messageForCreateionDto.RecipientId, true); if (recipient == null) { return(BadRequest("Could not find user")); } var message = _mapper.Map <Message>(messageForCreateionDto); _repo.Add(message); if (await _repo.SaveAll()) { var messageToReturn = _mapper.Map <MessageToReturnDto>(message); return(CreatedAtRoute("GetMessage", new { id = message.Id }, messageToReturn)); } throw new Exception("Creating the message failed on save"); }
public async Task <IActionResult> CreateMessage(int userId, MessageForCreateionDto messageForCreateionDto) { var sender = await _datingRepository.GetUser(userId); if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } messageForCreateionDto.SenderId = userId; var recipient = await _datingRepository.GetUser(messageForCreateionDto.RecipientId); if (recipient == null) { return(BadRequest("Could not found user")); } var message = _mapper.Map <Message>(messageForCreateionDto); _datingRepository.Add(message); if (await _datingRepository.SaveAll()) { var returnMessage = _mapper.Map <MessageForReturn>(message); return(CreatedAtRoute("GetMessage", new { userId, id = message.Id }, returnMessage)); } throw new Exception("Failed to send message"); }