public async Task <IActionResult> CreateMessage(int userId, MessageForCreateDTO messageForCreateDTO) { if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } messageForCreateDTO.SenderId = userId; var recipient = await _repository.GetUser(messageForCreateDTO.RecipientId); if (recipient == null) { return(BadRequest("User not found!")); } var message = _mapper.Map <Message>(messageForCreateDTO); _repository.Add(message); if (await _repository.SaveChanges()) { var messageDTO = _mapper.Map <MessageForCreateDTO>(message); return(Ok(messageDTO)); } throw new System.Exception("Message could not be sent"); }
public async Task <IActionResult> CreateMessage(int userId, MessageForCreateDTO messageForCreateDTO) { var sender = await _repo.GetUser(userId); if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(StatusCode(401, "Unauthorize")); } messageForCreateDTO.SenderId = userId; if (await _repo.GetUser(messageForCreateDTO.RecipientId) == null) { return(BadRequest("Recipient Isn't available")); } var message = _mapper.Map <Message>(messageForCreateDTO); _repo.Add(message); if (await _repo.SaveAll()) { var messageToReturn = _mapper.Map <MessageToReturnDTO>(message); string connectionId; if (ConnectedUser.UserConnectedList.TryGetValue(messageForCreateDTO.RecipientId, out connectionId)) { messageToReturn.IsRead = true; await _hubContext.Clients.Client(connectionId).SendAsync("newmsg", messageToReturn); } return(CreatedAtRoute("GetMessage", new { id = message.Id }, messageToReturn)); } throw new Exception("Couldn't save Message"); }
[HttpPost] // Base Route public async Task <IActionResult> CreateMessage(int userId, MessageForCreateDTO messageForCreate) { if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) // Get Id From Token { return(Unauthorized()); } messageForCreate.SenderId = userId; var recipient = await _datingRepository.GetUser(messageForCreate.RecipientId); // AutoMapper Sends This Data Auto... // Create So It Will Map Auto... var sender = await _datingRepository.GetUser(messageForCreate.SenderId); if (recipient == null) { return(BadRequest("No se encontró el usuario")); } var message = _mapper.Map <Messages>(messageForCreate); _datingRepository.Add <Messages>(message); if (await _datingRepository.SaveAll()) { var messagetoReturn = _mapper.Map <MessageToReturnDTO>(message); return(CreatedAtRoute("GetMessage", new { id = message.Id }, messagetoReturn)); } return(BadRequest("Fallo en la actualización")); }
public async Task <IActionResult> AddMessageAsync(int userId, MessageForCreateDTO messageForCreateDTO) { if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } messageForCreateDTO.SenderId = userId; var recipient = await _unitOfWork.Users.FindOneAsync(u => u.UserId == messageForCreateDTO.RecipientId); if (recipient == null) { return(BadRequest("Error: The user cannot be found!")); } var createdMessage = _mapper.Map <MessageModel>(messageForCreateDTO); _unitOfWork.Messages.Add(createdMessage); if (await _unitOfWork.SaveAllAsync()) { return(StatusCode(201)); } throw new Exception("Error: Saving message to database failed!"); }