public async Task <IActionResult> CreateMessage(int userId, MessageForCreation messageFromCreation) { var sender = await _repo.GetUser(userId); if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } messageFromCreation.SenderId = userId; var recipient = await _repo.GetUser(messageFromCreation.RecipientId); if (recipient == null) { return(BadRequest("Could not find user")); } var message = _mapper.Map <Message>(messageFromCreation); _repo.Add(message); if (await _repo.SaveAll()) { var messageToReturn = _mapper.Map <MessageToReturn>(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, MessageForCreation messageForCreation) { if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } var recipient = await _repo.GetUser(messageForCreation.RecipientId); if (recipient == null) { return(NotFound()); } var message = _mapper.Map <Message>(messageForCreation); message.SentDate = DateTime.UtcNow; message.SenderId = userId; _repo.Add(message); if (await _repo.SaveAll()) { // Load the sender detail so that automapper can use it var sender = await _repo.GetUser(userId); var messageToReturn = _mapper.Map <MessageForList>(message); return(CreatedAtRoute("GetMessage", new { id = message.Id }, messageToReturn)); } throw new Exception("Creation failed on save"); }
public IActionResult PostNewMessage([FromBody] MessageForCreation Message) { if (Message == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var MaxMessageId = 0; if (messageStorage.Messages.Count != 0) { MaxMessageId = messageStorage.Messages.Max(m => m.Id); } var FinalMessage = new Message() { Id = ++MaxMessageId, Content = Message.Content, //Date = heure.ToString("D2") + ":" + minute.ToString("D2"), Date = dateTimeProvider.Now, UserName = Message.UserName, AvatarSrc = Message.AvatarSrc }; messageStorage.Messages.Add(FinalMessage); return(CreatedAtRoute("GetMessage", new { id = FinalMessage.Id }, FinalMessage)); }
public async Task <IActionResult> CreateMessage(int userId, MessageForCreation messageForCreation) { if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized("Unauthorized")); } messageForCreation.SenderId = userId; var recipient = await this.repo.GetUser(messageForCreation.RecipientId); if (recipient == null) { return(NotFound("NotFound")); } var message = this.mapper.Map <Message>(messageForCreation); this.repo.Add(message); var messageToReturn = this.mapper.Map <MessageForCreation>(message); if (await this.repo.SaveAll()) { return(CreatedAtRoute("GetMessage", new { userId, id = message.Id }, messageToReturn)); } return(BadRequest("Created the message failed")); }
public async Task <IActionResult> CreateMessage(int userId, [FromBody] MessageForCreation messageForCreation) { if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } messageForCreation.SenderId = userId; var messageToReturn = await _messageService.CreateMessage(messageForCreation); if (messageToReturn != null) { return(CreatedAtRoute("GetMessage", new { id = messageToReturn.Id }, messageToReturn)); } throw new Exception("Creating the message failed on save."); }
public async Task <IActionResult> CreateMessage(string userId, MessageForCreation messageForCreation) { var sender = await _userService.GetUser(userId); if (sender.Id != User.FindFirst(ClaimTypes.NameIdentifier).Value) { return(Unauthorized()); } messageForCreation.SenderId = userId; var recipient = await _userService.GetUser(messageForCreation.RecipientId); if (recipient == null) { return(BadRequest("Could not find user")); } var message = _mapper.Map <Message>(messageForCreation); if (await _messageService.AddMessage(message)) { var messageToReturn = _mapper.Map <MessageToReturn>(message); if (MessageHub._userConnections.ContainsKey(messageForCreation.RecipientId)) { await _hubContext.Clients.Clients(MessageHub._userConnections[messageForCreation.RecipientId]) .SendAsync("SignalMessageReceived", messageToReturn); } if (MessageHub._userConnections.ContainsKey(userId)) { await _hubContext.Clients.Clients(MessageHub._userConnections[userId]) .SendAsync("SignalMessageReceived", messageToReturn); } return(CreatedAtRoute("GetMessage", new { userId, messageId = message.Id }, messageToReturn)); } throw new Exception("Creating the message failed on save"); }
public void VerifyMessageAfterPost() { var Message = new MessageForCreation() { Content = "contentTest", UserName = "******", AvatarSrc = "#" }; controller.PostNewMessage(Message); var id = messageStorage.Messages.Max(m => m.Id); var LastMessage = messageStorage.Messages.FirstOrDefault(m => m.Id == id); Assert.Equal(LastMessage.AvatarSrc, Message.AvatarSrc); Assert.Equal(LastMessage.Content, Message.Content); Assert.Equal(LastMessage.UserName, Message.UserName); Assert.Equal(LastMessage.Date, testDateTimeProvider.targetDateTime); }
public async Task <MessageToReturn> CreateMessage(MessageForCreation messageForCreation) { var sender = await _userService.GetUser(messageForCreation.SenderId); var recipient = await _userService.GetUser(messageForCreation.RecipientId); var message = new Message { SenderId = messageForCreation.SenderId, RecipientId = messageForCreation.RecipientId, DateSent = messageForCreation.DateSent, Content = messageForCreation.Content, IsRead = false, SenderDeleted = false, RecipientDeleted = false, }; _context.Add(message); if (!await SaveAll()) { return(null); } return(new MessageToReturn { Id = message.Id, SenderId = message.SenderId, SenderKnownAs = message.Sender.KnownAs, SenderPhotoUrl = message.Sender.Photos.FirstOrDefault(p => p.IsMain).Url, RecipientId = message.RecipientId, RecipientKnownAs = message.Recipient.KnownAs, RecipientPhotoUrl = message.Recipient.Photos.FirstOrDefault(p => p.IsMain).Url, Content = message.Content, IsRead = message.IsRead, DateRead = message.DateRead, DateSent = message.DateSent }); }