public async Task EnqueueAsync <T>(ICommand <T> command) { // 3) domain events persistance handler var domainEvent = new EventStore(); domainEvent.Id = command.Id; domainEvent.EnqueueDate = DateTime.UtcNow; domainEvent.Type = command.GetType().FullName; domainEvent.Data = JsonConvert.SerializeObject(command); await _context.EventStore.AddAsync(domainEvent); await _context.SaveChangesAsync(); }
public async Task <Guid> Create(ProductTrade newTrade) { // 1) raise domain events AddDomainEvent(new TradeRegisteredEvent(newTrade.Id)); // store the object await _context.ProductTrade.AddAsync(newTrade); var command = new TradeRegisteredCommand(Guid.NewGuid(), newTrade.TradeId); var domainEvent = new EventStore(); domainEvent.Id = command.Id; domainEvent.EnqueueDate = DateTime.UtcNow; domainEvent.Type = command.GetType().FullName; domainEvent.Data = JsonConvert.SerializeObject(command); await _context.EventStore.AddAsync(domainEvent); // save changes await _context.SaveChangesAsync(); return(newTrade.Id); }