public virtual async Task HandleEventAsync(SendPrivateMessageEto eventData)
        {
            var fromUser = eventData.FromUserId.HasValue
                ? await _externalUserLookupServiceProvider.FindByIdAsync(eventData.FromUserId.Value)
                : null;

            var toUser = await _externalUserLookupServiceProvider.FindByIdAsync(eventData.ToUserId);

            await _manager.CreateAsync(fromUser, toUser, eventData.Title, eventData.Content);
        }
        public virtual async Task <PrivateMessageDto> CreateAsync(CreateUpdatePrivateMessageDto input)
        {
            var toUser = await _externalUserLookupServiceProvider.FindByUserNameAsync(input.ToUserName);

            var message = await _privateMessageSenderSideManager.CreateAsync(new PrivateMessage(GuidGenerator.Create(),
                                                                                                CurrentTenant.Id, toUser.Id, input.Title, input.Content));

            await _notificationManager.CreateAsync(new PrivateMessageNotification(GuidGenerator.Create(),
                                                                                  CurrentTenant.Id, toUser.Id, message.Id, message.GetTitlePreview()));

            return(await MapToDtoAndLoadMoreInfosAsync(message));
        }