public void ImportSubaddressStatusFromCrab( CrabSubaddressStatusId subaddressStatusId, CrabSubaddressId subaddressId, CrabAddressStatus addressStatus, CrabLifetime lifetime, CrabTimestamp timestamp, CrabOperator @operator, CrabModification?modification, CrabOrganisation?organisation) { if (IsRemoved && modification != CrabModification.Delete) { return; } var legacyEvent = new AddressSubaddressStatusWasImportedFromCrab( subaddressStatusId, subaddressId, addressStatus, lifetime, timestamp, @operator, modification, organisation); ApplyStatusChangesFor(_subAddressStatusChronicle, legacyEvent); ApplyAddressCompletion(); ApplyChange(legacyEvent); }
public static ImportSubaddressStatusFromCrab WithStatusId(this ImportSubaddressStatusFromCrab command, CrabSubaddressStatusId statusId) => new ImportSubaddressStatusFromCrab( statusId, command.SubaddressId, command.AddressStatus, command.Lifetime, command.Timestamp, command.Operator, command.Modification, command.Organisation);
public ImportSubaddressStatusFromCrab( CrabSubaddressStatusId subaddressStatusId, CrabSubaddressId subaddressId, CrabAddressStatus addressStatus, CrabLifetime lifetime, CrabTimestamp timestamp, CrabOperator @operator, CrabModification?modification, CrabOrganisation?organisation) { SubaddressStatusId = subaddressStatusId; SubaddressId = subaddressId; AddressStatus = addressStatus; Lifetime = lifetime; Timestamp = timestamp; Operator = @operator; Modification = modification; Organisation = organisation; }
public AddressSubaddressStatusWasImportedFromCrab( CrabSubaddressStatusId subaddressStatusId, CrabSubaddressId subaddressId, CrabAddressStatus addressStatus, CrabLifetime lifetime, CrabTimestamp timestamp, CrabOperator @operator, CrabModification?modification, CrabOrganisation?organisation) { SubaddressStatusId = subaddressStatusId; SubaddressId = subaddressId; AddressStatus = addressStatus; BeginDateTime = lifetime.BeginDateTime; EndDateTime = lifetime.EndDateTime; Timestamp = timestamp; Operator = @operator; Modification = modification; Organisation = organisation; }
public void WithRemovedStatusWhenStatusInUseAndSameLifetimeOfPreviouslyRemovedStatus(AddressId addressId, AddressWasRegistered addressWasRegistered, AddressWasProposed addressWasProposed, AddressWasOfficiallyAssigned addressWasOfficiallyAssigned, AddressSubaddressStatusWasImportedFromCrab addressSubaddressStatusWasImportedFromCrab, AddressStatusWasRemoved addressStatusWasRemoved, AddressSubaddressStatusWasImportedFromCrab addressSubaddressStatusWasImportedFromCrabDelete, ImportSubaddressStatusFromCrab importSubaddressStatusFromCrab, CrabLifetime lifetime) { var statusId = new CrabSubaddressStatusId(1); addressSubaddressStatusWasImportedFromCrab = addressSubaddressStatusWasImportedFromCrab .WithSubaddressStatusId(statusId) .WithStatus(CrabAddressStatus.Proposed) .WithBeginDate(lifetime.BeginDateTime); addressSubaddressStatusWasImportedFromCrabDelete = addressSubaddressStatusWasImportedFromCrabDelete .WithSubaddressStatusId(statusId) .WithStatus(CrabAddressStatus.Proposed) .WithCrabModification(CrabModification.Delete) .WithBeginDate(lifetime.BeginDateTime); importSubaddressStatusFromCrab = importSubaddressStatusFromCrab .WithLifetime(lifetime) .WithStatus(CrabAddressStatus.InUse); Assert(new Scenario() .Given(addressId, addressWasRegistered, addressWasProposed, addressWasOfficiallyAssigned, addressSubaddressStatusWasImportedFromCrab, addressStatusWasRemoved, addressSubaddressStatusWasImportedFromCrabDelete ) .When(importSubaddressStatusFromCrab) .Then(addressId, new AddressBecameCurrent(addressId), importSubaddressStatusFromCrab.ToLegacyEvent())); }
public static AddressSubaddressStatusWasImportedFromCrab WithSubaddressStatusId(this AddressSubaddressStatusWasImportedFromCrab @event, CrabSubaddressStatusId statusId) { return(new AddressSubaddressStatusWasImportedFromCrab( statusId, new CrabSubaddressId(@event.SubaddressId), @event.AddressStatus, new CrabLifetime(@event.BeginDateTime, @event.EndDateTime), new CrabTimestamp(@event.Timestamp), new CrabOperator(@event.Operator), @event.Modification, @event.Organisation )); }