public async Task <ActionResult <MessageToCreateDto> > CreateMessage([FromBody] MessageToCreateDto messageToCreateDto) { try { var userConversatorFromRepo = await _repo.GetUserConversatorById(messageToCreateDto.UserConversatorId); if (userConversatorFromRepo == null) { return(NotFound($"UserConversator with the id {userConversatorFromRepo.Id} does not exist.")); } Message message = new Message() { Text = messageToCreateDto.Text, Created = DateTime.Now, UserConversator = userConversatorFromRepo }; await _repo.Create(message); if (await _repo.Save()) { return(CreatedAtAction(nameof(GetMessageById), new { id = message.Id }, message)); } } catch (Exception e) { return(this.StatusCode(StatusCodes.Status500InternalServerError, $"Failed to create the comment. Exception thrown when attempting to add data to the database: {e.Message}")); } return(BadRequest()); }
public async Task <IActionResult> SendMessage( int userId, MessageToCreateDto msgDto ) { var sender = await _repo.GetUser(userId); if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } msgDto.SenderId = userId; var recipient = await _repo.GetUser(msgDto.RecipientId); if (recipient == null) { return(BadRequest("Could not find your intended recipient.")); } var message = _mapper.Map <Message>(msgDto); _repo.Add(message); if (await _repo.SaveAll()) { var messageToReturn = _mapper.Map <MessageToReturnDto>(message); return(CreatedAtRoute("GetMessage", new { id = message.Id }, messageToReturn)); } throw new Exception("There was a problem sending your message."); }
public async Task <IActionResult> CreateMessage(int userId, MessageToCreateDto messageToCreateDto) { var sender = await _repo.GetUser(userId); if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } if (messageToCreateDto == null) { return(BadRequest()); } var recipient = await _repo.GetUser(messageToCreateDto.RecipientId); if (recipient == null) { return(BadRequest("Could not find recipient user")); } messageToCreateDto.SenderId = userId; var message = _mapper.Map <Message>(messageToCreateDto); _repo.Add <Message>(message); if (await _repo.SaveAll()) { var messageToReturn = _mapper.Map <MessageToReturnDto>(message); return(CreatedAtAction("GetMessage", new { controller = "Message", id = message.Id }, messageToReturn)); } throw new Exception("Creating the message failed on save"); }
public async Task <IActionResult> Create(int userId, MessageToCreateDto dto) { var sender = await _userRepository.Get(userId); if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } dto.SenderId = userId; var receiver = await _userRepository.Get(dto.ReceiverId); if (_userRepository.Get(dto.ReceiverId) == null) { return(NotFound("Could not find user.")); } var message = _mapper.Map <Message>(dto); _repo.Add(message); if (await _repo.SaveAll()) { var messageToReturn = _mapper.Map <MessageToReturnDto>(message); return(CreatedAtRoute("GetMessage", new { id = message.Id, userId = userId }, messageToReturn)); } throw new Exception("Failed to sent message."); }