public virtual IReadOnlyCollection <ChatMessageInfo> BuildChatAddedMessage(IChatAddedEvent <Chat, ChatInfo, List <ChatParticipant>, ChatParticipant, ChatUser, ChatMessageInfo, TextMessage, QuoteMessage, List <MessageAttachment>, MessageAttachment, List <ChatRefMessage>, ChatRefMessage, List <ContactMessage>, ContactMessage> @event) { var chatMessage = new ChatMessageInfo(MessageType.ChatRef, 0, immutable: true, style: MessageStyle("ChatAdded"), chatRefs: new List <ChatRefMessage>() { new ChatRefMessage(@event.Chat.ChatId, @event.Chat) }); var result = new List <ChatMessageInfo> { chatMessage }; var added = @event.Chat.Participants.Where(r => r.ChatParticipantStatus == ChatParticipantStatus.Active).ToList(); if (added.Any()) { var addedContactMessages = added.Select(r => new ContactMessage(r)).ToList(); var addedMessage = new ChatMessageInfo(MessageType.Contact, 0, immutable: true, style: MessageStyle("AddedInitialChatParticipants"), contacts: addedContactMessages); result.Add(addedMessage); } var invited = @event.Chat.Participants.Where(r => r.ChatParticipantStatus == ChatParticipantStatus.Invited).ToList(); if (invited.Any()) { var invitedContactMessages = invited.Select(r => new ContactMessage(r)).ToList(); var invitedMessage = new ChatMessageInfo(MessageType.Contact, 0, immutable: true, style: MessageStyle("InvitedInitialChatParticipants"), contacts: invitedContactMessages); result.Add(invitedMessage); } return(result); }
public virtual async Task Handle(IChatAddedEvent <TChat, TChatInfo, TChatParticipantCollection, TChatParticipant, TChatUser, TChatMessageInfo, TTextMessage, TQuoteMessage, TMessageAttachmentCollection, TMessageAttachment, TChatRefMessageCollection, TChatRefMessage, TContactMessageCollection, TContactMessage> @event, IChatBusContext chatBusContext) { var userIds = @event.Chat.Participants.Where(r => r.ChatParticipantStatus == ChatParticipantStatus.Active).Select(r => r.UserId); await NotificationRouteService.AddUsersToChat(userIds, @event.Chat.ChatId); var notification = ChatsNotificationBuilder.BuildChatAddedNotification(@event); await Notify(@event.Chat.ChatId, notification); }
public virtual async Task Handle(IChatAddedEvent <TChat, TChatInfo, TChatParticipantCollection, TChatParticipant, TChatUser, TChatMessageInfo, TTextMessage, TQuoteMessage, TMessageAttachmentCollection, TMessageAttachment, TChatRefMessageCollection, TChatRefMessage, TContactMessageCollection, TContactMessage> @event, IChatBusContext chatBusContext) { if (ChatWorkersConfiguration.DisableSystemMessages) { return; } var messagesInfo = SystemMessagesBuilder.BuildChatAddedMessage(@event); foreach (var messageInfo in messagesInfo) { await AddMessage(@event.InitiatorUserId, @event.Chat.ChatId, messageInfo, chatBusContext); } }
public virtual IChatAddedNotification <PersonalizedChat, Chat, ChatInfo, List <ChatParticipant>, ChatParticipant, ChatUser, ChatMessageInfo, TextMessage, QuoteMessage, List <MessageAttachment>, MessageAttachment, List <ChatRefMessage>, ChatRefMessage, List <ContactMessage>, ContactMessage> BuildChatAddedNotification(IChatAddedEvent <Chat, ChatInfo, List <ChatParticipant>, ChatParticipant, ChatUser, ChatMessageInfo, TextMessage, QuoteMessage, List <MessageAttachment>, MessageAttachment, List <ChatRefMessage>, ChatRefMessage, List <ContactMessage>, ContactMessage> @event) { var personalizedChat = new PersonalizedChat(@event.Chat.Name, @event.Chat.Description, @event.Chat.PrivacyMode, @event.Chat.Version, @event.Chat.ChatId, @event.Chat.Participants, @event.Chat.LastTimestamp, @event.Chat.TopIndex, @event.Chat.LastMessageId, @event.Chat.LastMessageAuthorId, @event.Chat.LastChatMessageInfo, 0, @event.Chat.TopIndex); return(new ChatAddedNotification(@event.InitiatorUserId, personalizedChat)); }