public async Task <int> SendMessageToGroup(Message message, int groupId) { var whoSent = await userService.GetUserById(userProvider.GetUserId(Context)); await userService.MakeUserOnline(whoSent.Id, Context.ConnectionId); try { if (!await chatsService.ExistsInConversation(groupId, whoSent.Id)) { await SendError(Context.ConnectionId, "You must join this group to send messages."); return(0); } if (await bansService.IsBannedFromConversation(groupId, whoSent.Id)) { await SendError(Context.ConnectionId, "You were banned in this group."); return(0); } //we can't trust user on what's in user field message.User = whoSent.ToAppUserDto(); MessageDataModel created; if (message.Type == MessageType.Attachment) { created = await messagesService.AddAttachmentMessage(message, groupId, whoSent.Id); } else { created = await messagesService.AddMessage(message, groupId, whoSent.Id); } message.TimeReceived = created.TimeReceived.ToUTCString(); message.Id = created.MessageID; message.State = MessageState.Delivered; await SendMessageToGroupExcept(groupId, Context.ConnectionId, whoSent.Id, message); return(created.MessageID); } catch (Exception ex) { await SendError(Context.ConnectionId, ex.Message); logger.LogError(ex.Message); return(0); } }
public async Task AddMessagesShouldWork() { var messagesRepo = new Mock <IRepository <Message> >(); var messages = new List <Message> { new Message(), new Message() }; messagesRepo.Setup(r => r.All()).Returns(messages.AsQueryable); messagesRepo.Setup(r => r.AddAsync(It.IsAny <Message>())).Returns <Message>(Task.FromResult) .Callback <Message>(m => messages.Add(m)); var service = new MessagesService(messagesRepo.Object); var newMessage = new Message() { Text = "test" }; await service.AddMessage(newMessage); Assert.Equal(3, messages.Count); Assert.Contains(messages, m => m.Text == newMessage.Text); messagesRepo.Verify(r => r.AddAsync(newMessage), Times.Once); messagesRepo.Verify(r => r.SaveChangesAsync(), Times.Once); }
public IActionResult PostMessage(PostMessageRequest request) { var sender = usersService.FindUserWithId(request.SenderId); var receiver = usersService.FindUserWithId(request.ReceiverId); var message = new Message(request.Id, sender, receiver, request.Content); return(CreatedAtAction(null, messagesService.AddMessage(message))); }
public async Task SendMessage(int productId, string giverId, string receiverId, string sentById, string sendMessage) { await messagesService.AddMessage(new MessagesChatVM { ProductId = productId, GiverId = giverId, ReceiverId = receiverId, SentById = sentById, SendMessage = sendMessage }); var member = await membersService.GetUser(sentById); var user = Context.GetHttpContext().User; var userId = membersService.GetUserId(user); await Clients.All.SendAsync("ReceiveMessage", member.Picture, member.FirstName, DateTime.Now, sendMessage, sentById == userId); }
public void AddMessage_ForAnyRequest_CallsNotificationService() { _service.AddMessage("test"); _messageSender.Verify(q => q.SendMessageToAllClients("test"), Times.Once); }
private Message AddAMessage(Message message) { return(messagesService.AddMessage(message)); }