public void Execute(CreateCommand command) { if (command == null) { throw new ArgumentNullException("command"); } if (_repository == null) { throw new InvalidOperationException("Repository is not initialized."); } var aggregate = new HotelAggregate(command.Id, command.CustomerName, command.Email, command.PhoneNo, command.RoomNo, command.CheckIn, command.CheckOut, command.IsCheckedIn); aggregate.Version = -1; _repository.Save(aggregate, aggregate.Version); }
public HotelAggregate CreateHotelAggregate(int propertyId, string name, int geoId, int rating) { var currentHotelAggregate = new HotelAggregate() { Id = propertyId, Name = name, GeoId = geoId, Rating = rating, CreationDate = DateTime.Now, ModificationDate = DateTime.Now, UserCode = Environment.UserName, Version = 1 }; return(currentHotelAggregate); }
public async Task AggregateShouldWorkWithEventStore() { IAggregateSchemaRegister schemaRegister = new AggregateSchemaRegister(); schemaRegister.Discover(typeof(EventStoreIntegrationTests).Assembly); var hotelSchema = new AggregateSchema <HotelAggregate>(schemaRegister.Get(typeof(HotelAggregate))); var stream = GetStream(await Connect(), hotelSchema); var aggregateId = Guid.NewGuid(); await stream.Append(aggregateId, -2, Guid.NewGuid(), new RoomAdded() { Number = "101" }); stream = GetStream(await Connect(), hotelSchema); var items = stream.Get(aggregateId); HotelAggregate aggregate = new HotelAggregate(); await aggregate.RehydrateAsync(items); // aggregate.Value.AvailableRooms.Should().HaveCount(1); }