private async Task SendAppointmentDealCreatedEventAsync(Domain.AggregatesModel.PostAggregate.Post deal)
        {
            var @event = new AppointmentDealCreatedEvent
            {
                User1Id = deal.UserId,
                User2Id = deal.AppointmentedUserId.Value,
                // user1是约拍发出方,他的角色应该和约拍时希望约的角色相反
                User1Type = (int)(deal.AppointmentedUserType == AppointmentedUserType.Model ? AppointmentedUserType.Photographer : AppointmentedUserType.Model),
                // user2是约拍接收方,他的角色就是约拍时希望约的角色
                User2Type             = (int)deal.AppointmentedUserType,
                DealId                = deal.Id,
                AppointmentedUserType = (int)deal.AppointmentedUserType,
                PayerType             = (int)deal.PayerType,
                Price         = deal.Price ?? 0,
                AppointedTime = deal.AppointedTime.Value,
                PayerId       = deal.PayerType == PayerType.Free ? null : (deal.PayerType == PayerType.Me ? deal.UserId : deal.AppointmentedUserId),
                Text          = deal.Text,
                Latitude      = deal.Latitude.Value,
                Longitude     = deal.Longitude.Value,
                LocationName  = deal.LocationName,
                Address       = deal.Address
            };

            _messageSession = (IMessageSession)_serviceProvider.GetService(typeof(IMessageSession));
            await _messageSession.Publish(@event);

            _logger.LogInformation("----- Published AppointmentDealCreatedEvent: {IntegrationEventId} from {AppName} - ({@IntegrationEvent})", @event.Id, Program.AppName, @event);
        }
Beispiel #2
0
        private async Task <IEnumerable <string> > GetAtNicknamesAsync(Domain.AggregatesModel.PostAggregate.Post post)
        {
            var nicknames = GetAtNicknames(post.Text);

            if (post.ForwardedPostId != null && (post.ShowOriginalText ?? false))
            {
                var forwardedPost = await _postContext.Posts.FirstOrDefaultAsync(p => p.Id == post.ForwardedPostId.Value);

                nicknames = nicknames.Union(GetAtNicknames(forwardedPost.Text));
            }

            return(nicknames);
        }
        private async Task SendPostRepliedEventAsync(Domain.AggregatesModel.PostAggregate.Post post, Guid repliedUserId, string text)
        {
            var @event = new PostRepliedEvent
            {
                FromUserId = repliedUserId,
                ToUserId   = post.UserId,
                PostId     = post.Id,
                Text       = text
            };

            _messageSession = (IMessageSession)_serviceProvider.GetService(typeof(IMessageSession));
            await _messageSession.Publish(@event);

            _logger.LogInformation("----- Published PostRepliedEvent: {IntegrationEventId} from {AppName} - ({@IntegrationEvent})", @event.Id, Program.AppName, @event);
        }
Beispiel #4
0
        public async Task <List <Guid> > GetAtUserIdsAsync(Domain.AggregatesModel.PostAggregate.Post post)
        {
            var atNicknames = await GetAtNicknamesAsync(post);

            var atUserIds = _postContext.Users.Where(u => atNicknames.Contains(u.Nickname)).Select(u => u.Id);

            if (post.Visibility == Visibility.Friends || post.Visibility == Visibility.Password)
            {
                var friendIds = GetFriendsIds(post.UserId);
                atUserIds = atUserIds.Intersect(friendIds);
            }
            else if (post.Visibility == Visibility.SelectedFriends)
            {
                atUserIds = from id in atUserIds
                            join upr in _postContext.UserPostRelations
                            on id equals upr.UserId
                            where upr.PostId == post.Id && upr.UserPostRelationType == UserPostRelationType.View
                            select id;
            }

            return(await atUserIds.ToListAsync());
        }