public virtual async Task <Guid> Add(Guid currentUserId, Guid chatId, Guid?messageId, TChatMessageInfo messageInfo) { await ChatMessagesPermissionValidator.ValidateAdd(currentUserId, chatId, messageInfo, ServiceName) .ConfigureAwait(false); var command = ChatMessagesCommandBuilder.BuildIndexChatMessageCommand(currentUserId, chatId, messageId, false, messageInfo); await ChatCommandSender.Send(command).ConfigureAwait(false); return(command.MessageId); }
public virtual async Task Handle(IAddChatMessageCommand <TChatInfo, TChatUser, TChatMessageInfo, TTextMessage, TQuoteMessage, TMessageAttachmentCollection, TMessageAttachment, TChatRefMessageCollection, TChatRefMessage, TContactMessageCollection, TContactMessage> command, IChatBusContext chatEventPublisher) { if (!command.IsSystem) { await ChatMessagesPermissionValidator.ValidateAdd(command.InitiatorUserId, command.ChatId, command.MessageInfo, WorkerName).ConfigureAwait(false); } var message = await ChatMessageStore.Create(command.ChatId, command.InitiatorUserId, command.MessageId, command.MessageInfo, command.Timestamp, command.Index, command.IsSystem, command.InitiatorUserId).ConfigureAwait(false); if (!ChatWorkersConfiguration.FastMessageMode) { var @event = ChatMessagesEventBuilder.BuildChatMessageAddedEvent(command.InitiatorUserId, command.ChatId, message); await chatEventPublisher.EventPublisher.Publish(@event).ConfigureAwait(false); } }
public virtual async Task Handle(IIndexChatMessageCommand <TChatInfo, TChatUser, TChatMessageInfo, TTextMessage, TQuoteMessage, TMessageAttachmentCollection, TMessageAttachment, TChatRefMessageCollection, TChatRefMessage, TContactMessageCollection, TContactMessage> command, IChatBusContext chatEventPublisher) { if (!command.IsSystem) { await ChatMessagesPermissionValidator.ValidateAdd(command.InitiatorUserId, command.ChatId, command.MessageInfo, WorkerName).ConfigureAwait(false); } var timestamp = await ChatMessageTimestampGenerator.Generate(); var index = await _messageIndexGenerator.Generate(command.ChatId).ConfigureAwait(false); var addCommand = ChatMessagesCommandBuilder.BuildAddChatMessageCommand(command.InitiatorUserId, command.ChatId, command.MessageId, timestamp, index, command.IsSystem, command.MessageInfo); await chatEventPublisher.CommandSender.Send(addCommand).ConfigureAwait(false); if (ChatWorkersConfiguration.FastMessageMode) { var @event = ChatMessagesEventBuilder.BuildChatMessageAddedEvent(command.InitiatorUserId, command.ChatId, command.MessageId, timestamp, index, command.IsSystem, command.MessageInfo); await chatEventPublisher.EventPublisher.Publish(@event).ConfigureAwait(false); } }