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);
            }
        }
Beispiel #3
0
        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));
 }