Esempio n. 1
0
        public async Task <IActionResult> Republish([FromBody] RepublishRequest model)
        {
            var arId = AggregateUrn.Parse(model.Id, Urn.Uber);

            if (model.IsPublicEvent)
            {
                IPublicEvent @event = await _eventExplorer.FindPublicEventAsync(arId, model.CommitRevision, model.EventPosition);

                if (@event is null)
                {
                    return(BadRequest("Event not found"));
                }

                Dictionary <string, string> headers = new Dictionary <string, string>()
                {
                    { MessageHeader.AggregateRootId, arId.ToBase64() }
                };

                publicPublisher.Publish(@event, headers);
            }
            else
            {
                IEvent @event = await _eventExplorer.FindEventAsync(arId, model.CommitRevision, model.EventPosition);

                if (@event is null)
                {
                    return(BadRequest("Event not found"));
                }

                string recipientHandlers = ConcatRecipientHandlers(model.RecipientHandlers);

                Dictionary <string, string> headers = new Dictionary <string, string>()
                {
                    { MessageHeader.AggregateRootId, arId.ToBase64() },
                    { MessageHeader.AggregateRootRevision, model.CommitRevision.ToString() },
                    { MessageHeader.AggregateRootEventPosition, model.EventPosition.ToString() },
                    { MessageHeader.RecipientHandlers, string.Join(',', recipientHandlers) }
                };

                publisher.Publish(@event, headers);
            }

            return(new OkObjectResult(new ResponseResult()));
        }
Esempio n. 2
0

        
Esempio n. 3
0
 public void RemovePublicEvent(IPublicEvent eventItem)
 {
     _publicEvents?.Remove(eventItem);
 }
Esempio n. 4
0
 public void AddPublicEvent(IPublicEvent eventItem)
 {
     _publicEvents = _publicEvents ?? new List <IPublicEvent>();
     _publicEvents.Add(eventItem);
 }