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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }