public virtual async Task Handle(IChatParticipantsAppendedEvent <TParticipationResultCollection, TParticipationResult, TChatParticipant> @event, IChatBusContext chatBusContext) { var users = @event.Added.Select(r => r.Participant.UserId); await NotificationRouteService.AddUsersToChat(users, @event.ChatId); var notification = ChatParticipantsNotificationBuilder.BuildChatParticipantsAppendedNotification(@event); await Notify(@event.ChatId, notification); }
public virtual async Task Handle(IChatParticipantsAppendedEvent <TParticipationResultCollection, TParticipationResult, TChatParticipant> @event, IChatBusContext chatBusContext) { if (ChatWorkersConfiguration.DisableSystemMessages) { return; } var messagesInfo = SystemMessagesBuilder.BuildBulkParticipantsAppendedMessages(@event); foreach (var messageInfo in messagesInfo) { await AddMessage(@event, messageInfo, chatBusContext); } }
public virtual IReadOnlyCollection <ChatMessageInfo> BuildBulkParticipantsAppendedMessages(IChatParticipantsAppendedEvent <List <ParticipationResult>, ParticipationResult, ChatParticipant> @event) { var result = new List <ChatMessageInfo>(); if (@event.Added.Any()) { var addedContactMessages = @event.Added.Select(r => new ContactMessage(r.Participant)).ToList(); var addedMessage = new ChatMessageInfo(MessageType.Contact, 0, immutable: true, style: MessageStyle("ChatBulkAdded"), contacts: addedContactMessages); result.Add(addedMessage); } if (@event.Invited.Any()) { var invitedContactMessages = @event.Invited.Select(r => new ContactMessage(r.Participant)).ToList(); var invitedMessage = new ChatMessageInfo(MessageType.Contact, 0, immutable: true, style: MessageStyle("ChatBulkInvited"), contacts: invitedContactMessages); result.Add(invitedMessage); } return(result); }
public virtual IChatParticipantsAppendedNotification <List <ParticipationResult>, ParticipationResult, ChatParticipant> BuildChatParticipantsAppendedNotification( IChatParticipantsAppendedEvent <List <ParticipationResult>, ParticipationResult, ChatParticipant> @event) { return(new ChatParticipantsAppendedNotification(@event.InitiatorUserId, @event.ChatId, @event.Added, @event.Invited)); }