示例#1
0
        public void Handle(DiscussionOpened @event)
        {
            using (var bucket = Persistence.Couchbase.Cluster.OpenBucket())
            {
                var link = bucket.GetDocument<Link>(@event.LinkId);
                var user = bucket.GetDocument<User>(@event.EmailOfInitiator);
                // Use email if participant isn't registered within the system
                var nameOfInitiator = (user != null) ? user.Content.Name : @event.EmailOfInitiator;
                var namesOfParticipants = new List<string>();
                foreach (var emailOfParticipant in @event.EmailsOfParticipants)
                {
                    var participant = bucket.GetDocument<User>(emailOfParticipant);
                    var nameOfParticipant = (participant != null) ? participant.Content.Name : emailOfParticipant;
                    namesOfParticipants.Add(nameOfParticipant);
                }
                var discussion = new Discussion(@event.Topic, nameOfInitiator,
                    namesOfParticipants, link.Content.Url);

                var document = new Document<Discussion>
                {
                    Id = @event.DiscussionId.ToString(),
                    Content = discussion
                };
                bucket.Insert(document);
            }
        }
示例#2
0
 private void Apply(DiscussionOpened discussion)
 {
     Id = new DiscussionId(discussion.DiscussionId);
     _topic = new Topic(discussion.Topic);
     _participants = discussion.EmailsOfParticipants.Select(x => new Participant(new EmailAddress(x))).ToList();
     _linkId = new LinkId(discussion.LinkId);
     _posts = new List<Post>();
 }
        public void Handle(DiscussionOpened @event)
        {
            var query = new LinkByIdQuery(@event.LinkId);
            var queryHandler = new NotificationQueryHandler();
            var link = queryHandler.Handle(query);

            var sendNotification = new SendLinkSharedNotification(@event.EmailOfInitiator, @event.EmailsOfParticipants, @event.Topic, @event.DiscussionId, link.Url);
            _bus.Send(sendNotification);
        }