示例#1
0
        public void Execute(CreateCustomerCommand command)
        {
            if (command == null)
            {
                throw new ArgumentNullException(nameof(command));
            }

            var aggregate = new Domain.CustomerDomainModel();

            aggregate.CreateNewCustomer(
                command.Id,
                command.Person.FirstName,
                command.Person.LastName,
                command.Person.IdCard,
                command.Person.IdNumber,
                command.Person.Dob,
                command.Contact.Email,
                command.Contact.PhoneNumber,
                command.Address.Street,
                command.Address.Zip,
                command.Address.Hausnumber,
                command.Address.City,
                command.Address.State);
            aggregate.Version = 0;

            this.Repository.Save(aggregate, aggregate.Version);
        }
        private Domain.CustomerDomainModel RehydrateDomainModel(Guid aggregateId)
        {
            var obj     = new Domain.CustomerDomainModel();
            int version = 0;

            var latestSnapshot = this._eventStore.Advanced.GetSnapshot(aggregateId, int.MaxValue);

            if (latestSnapshot?.Payload != null)
            {
                obj     = (Domain.CustomerDomainModel)Convert.ChangeType(latestSnapshot.Payload, latestSnapshot.Payload.GetType());
                version = latestSnapshot.StreamRevision + 1;
            }

            IEnumerable <Commit> commits = this._eventStore.Advanced.GetFrom(aggregateId, 0, int.MaxValue).ToList();

            foreach (var c in commits)
            {
                obj.LoadsFromHistory(c.Events);
            }

            return(obj);
        }
        private Domain.CustomerDomainModel RehydrateDomainModel(Guid aggregateId)
        {
            var obj = new Domain.CustomerDomainModel();
            IEnumerable<Commit> commits;

            var latestSnapshot = this._eventStore.Advanced.GetSnapshot(aggregateId, int.MaxValue);
            if (latestSnapshot?.Payload != null)
            {
                obj = (Domain.CustomerDomainModel)Convert.ChangeType(latestSnapshot.Payload, latestSnapshot.Payload.GetType());
                commits = this._eventStore.Advanced.GetFrom(aggregateId, latestSnapshot.StreamRevision + 1, int.MaxValue).ToList();
            }
            else
            {
                commits = this._eventStore.Advanced.GetFrom(aggregateId, 0, int.MaxValue).ToList();
            }

            foreach (var c in commits)
            {
                obj.LoadsFromHistory(c.Events);
            }

            return obj;
        }