/// <inheritdoc />
        public bool ToMetadata(StoredEvent storedEvent, out DomainEventMetadata metadata)
        {
            if (storedEvent.Metadata?.Any() != true)
            {
                Logger.LogTrace($"no metadata saved in event '{storedEvent.EventId}' " +
                                $"of type '{storedEvent.EventType}'");
                metadata = new DomainEventMetadata();
                return(true);
            }

            if (_factoryAssociations.TryGetValue(storedEvent.EventType, out var factoryType))
            {
                try
                {
                    var serializer = (IDomainEventConverter)Provider.GetService(factoryType);

                    metadata = serializer.DeserializeMetadata(storedEvent.Metadata);
                    return(true);
                }
                catch (Exception e)
                {
                    Logger.LogWarning(e, $"could not deserialize metadata in '{storedEvent.EventType}' using '{factoryType.Name}'");
                }
            }

            Logger.LogWarning($"event of type '{storedEvent.EventType}' ignored");
            metadata = null;
            return(false);
        }
Exemplo n.º 2
0
 public ContractValidated(Guid contractId, Guid clientId, decimal amount, DomainEventMetadata metadata = null)
     : base(metadata)
 {
     ContractId = contractId;
     ClientId   = clientId;
     Amount     = amount;
 }
Exemplo n.º 3
0
        public void FillMetadata()
        {
            var metadata = new DomainEventMetadata {
                ["Foo"] = "Bar"
            };

            Assert.Equal("Bar", metadata["Foo"]);
        }
Exemplo n.º 4
0
        public void IndexerCaseInsensitive()
        {
            var metadata = new DomainEventMetadata {
                ["Foo"] = "Bar"
            };

            Assert.Equal("Bar", metadata["foo"]);
        }
Exemplo n.º 5
0
        public void EventSourcedAggregateRoot_should_invoke_event_specific_apply_methods_when_load_them_from_history_and_update_aggregate_version()
        {
            //arrange
            var sut          = FakeEventSourcedAggregateRoot.For("test event-sourced name");
            var domainEvents = new[] { new FakeDomainEvent(), new FakeDomainEvent(DomainEventMetadata.Default(), "new name"), new FakeDomainEvent() };

            //act
            sut.LoadFromHistory(domainEvents);

            //assert
            sut.Version.Should().Be(3);
        }
Exemplo n.º 6
0
        public void DomainEvent_should_be_able_to_adapt_provided_arguments_as_metadata()
        {
            //arrange
            var id   = Guid.NewGuid();
            var date = DateTime.UtcNow;

            var @event = new FakeDomainEvent(DomainEventMetadata.For(id, date));

            //act && assert
            @event.Metadata.Should().NotBeNull();
            @event.Id.Should().Be(id);
            @event.OccurredOn.Should().Be(date);
        }
Exemplo n.º 7
0
 public BankTransferAdded(Guid bankTransferId, string iban, string recipientName, string details, decimal value, DateTime paymentDate, DomainEventMetadata metadata = null)
     : base(metadata)
 {
     BankTransferId = bankTransferId;
     Iban           = iban;
     RecipientName  = recipientName;
     Details        = details;
     Value          = value;
     PaymentDate    = paymentDate;
 }
 public ExpenseRecipientChanged(Guid expenseId, Guid?expenseRecipientId, int expenseMonth, DomainEventMetadata metadata = null)
     : base(metadata)
 {
     ExpenseId          = expenseId;
     ExpenseRecipientId = expenseRecipientId;
     ExpenseMonth       = expenseMonth;
 }
Exemplo n.º 9
0
 public CashWithdrawalAdded(Guid cashWithdrawalId, string cashTerminal, decimal value, DateTime withdrawalDate, DomainEventMetadata metadata = null)
     : base(metadata)
 {
     CashWithdrawalId = cashWithdrawalId;
     CashTerminal     = cashTerminal;
     Value            = value;
     WithdrawalDate   = withdrawalDate;
 }
Exemplo n.º 10
0
 public PosPaymentAdded(Guid posPaymentId, string posTerminalCode, decimal value, DateTime paymentDate, DomainEventMetadata metadata = null)
     : base(metadata)
 {
     PosPaymentId    = posPaymentId;
     PosTerminalCode = posTerminalCode;
     Value           = value;
     PaymentDate     = paymentDate;
 }
Exemplo n.º 11
0
 public ExchangeAdded(Guid exchangeId, string iban, string exchangeValue, string exchangeRate, string details, decimal value, DateTime paymentDate, DomainEventMetadata metadata = null)
     : base(metadata)
 {
     ExchangeId    = exchangeId;
     Iban          = iban;
     ExchangeValue = exchangeValue;
     ExchangeRate  = exchangeRate;
     Details       = details;
     Value         = value;
     PaymentDate   = paymentDate;
 }
Exemplo n.º 12
0
 public CollectionAdded(Guid collectionId, string from, string fromIban, string details, decimal value, DateTime incomeDate, DomainEventMetadata metadata = null)
     : base(metadata)
 {
     CollectionId = collectionId;
     From         = from;
     FromIban     = fromIban;
     Details      = details;
     Value        = value;
     IncomeDate   = incomeDate;
 }
Exemplo n.º 13
0
 public ExpenseRecipientAdded(Guid expenseRecipientId, string name, DomainEventMetadata metadata = null) : base(metadata)
 {
     ExpenseRecipientId = expenseRecipientId;
     Name = name;
 }
Exemplo n.º 14
0
 public SavingsAccountAdded(string iban, DomainEventMetadata metadata = null) : base(metadata)
 {
     Iban = iban;
 }
Exemplo n.º 15
0
 public ExpenseRecipientPosTerminalMatchPatternChanged(Guid expenseRecipientId, string posTerminalMatchPattern, DomainEventMetadata metadata = null) : base(metadata)
 {
     ExpenseRecipientId      = expenseRecipientId;
     PosTerminalMatchPattern = posTerminalMatchPattern;
 }
Exemplo n.º 16
0
 public ContractCreated(Guid contractId, Guid clientId, DomainEventMetadata metadata = null)
     : base(metadata)
 {
     ContractId = contractId;
     ClientId   = clientId;
 }
Exemplo n.º 17
0
 public PaymentReceived(Guid paymentId, Guid payableId, Guid?invoiceId, DateTime paymentDate, DomainEventMetadata metadata = null)
     : base(metadata)
 {
     PaymentId   = paymentId;
     PayableId   = payableId;
     InvoiceId   = invoiceId;
     PaymentDate = paymentDate;
 }
Exemplo n.º 18
0
 public DirectDebitAdded(string code, Guid expenseRecipientId, DomainEventMetadata metadata = null) : base(metadata)
 {
     Code = code;
     ExpenseRecipientId = expenseRecipientId;
 }
Exemplo n.º 19
0
 public SavingsTransactionAdded(Guid savingsTransactionId, SavingsTransactionType savingsTransactionType, decimal value, DateTime transactionDate, int transactionMonth, Guid?sourceId, DomainEventMetadata metadata = null)
     : base(metadata)
 {
     SavingsTransactionId   = savingsTransactionId;
     SavingsTransactionType = savingsTransactionType;
     Value            = value;
     TransactionDate  = transactionDate;
     TransactionMonth = transactionMonth;
     SourceId         = sourceId;
 }
Exemplo n.º 20
0
 public InvoiceCreated(Guid invoiceId, decimal amount, Guid clientId, Guid?contractId, DomainEventMetadata metadata = null)
     : base(metadata)
 {
     InvoiceId  = invoiceId;
     Amount     = amount;
     ClientId   = clientId;
     ContractId = contractId;
 }
Exemplo n.º 21
0
 public PosTerminalAdded(string posTerminal, Guid expenseRecipientId, DomainEventMetadata metadata = null) : base(metadata)
 {
     PosTerminal        = posTerminal;
     ExpenseRecipientId = expenseRecipientId;
 }
Exemplo n.º 22
0
 public ExpenseCategoryAdded(int expenseCategoryId, string name, DomainEventMetadata metadata = null) : base(metadata)
 {
     ExpenseCategoryId = expenseCategoryId;
     Name = name;
 }
Exemplo n.º 23
0
 public InvoicePayed(Guid invoiceId, Guid paymentId, DomainEventMetadata metadata = null)
     : base(metadata)
 {
     InvoiceId = invoiceId;
     PaymentId = paymentId;
 }
Exemplo n.º 24
0
 public ExpenseDeleted(Guid expenseId, int expenseMonth, DomainEventMetadata metadata = null)
     : base(metadata)
 {
     ExpenseId    = expenseId;
     ExpenseMonth = expenseMonth;
 }
Exemplo n.º 25
0
        public void AccessUnavailableMetadata()
        {
            var metadata = new DomainEventMetadata();

            Assert.Equal(string.Empty, metadata["Foo"]);
        }
 public ExpenseRecipientCategoryChanged(Guid expenseRecipientId, int?oldExpenseCategoryId, int?newExpenseCategoryId, int expenseMonth, DomainEventMetadata metadata = null) : base(metadata)
 {
     ExpenseRecipientId   = expenseRecipientId;
     OldExpenseCategoryId = oldExpenseCategoryId;
     NewExpenseCategoryId = newExpenseCategoryId;
     ExpenseMonth         = expenseMonth;
 }
Exemplo n.º 27
0
 public ExpenseAdded(Guid expenseId, ExpenseType expenseType, decimal value, DateTime expenseDate, Guid?expenseRecipientId, int?expenseCategoryId, string expenseRecipientDetailCode, string details1, string details2, Guid?expenseSourceId, int expenseMonth, DomainEventMetadata metadata = null)
     : base(metadata)
 {
     ExpenseId                  = expenseId;
     ExpenseType                = expenseType;
     Value                      = value;
     ExpenseDate                = expenseDate;
     ExpenseRecipientId         = expenseRecipientId;
     ExpenseCategoryId          = expenseCategoryId;
     ExpenseRecipientDetailCode = expenseRecipientDetailCode;
     ExpenseSourceId            = expenseSourceId;
     ExpenseMonth               = expenseMonth;
     Details1                   = details1;
     Details2                   = details2;
 }
Exemplo n.º 28
0
 public TestDomainEvent(DomainEventMetadata metadata)
     : base(metadata)
 {
 }
 public DirectDebitPaymentAdded(Guid directDebitPaymentId, string code, decimal value, string details, DateTime paymentDate, DomainEventMetadata metadata = null)
     : base(metadata)
 {
     DirectDebitPaymentId = directDebitPaymentId;
     DirectDebitCode      = code;
     Value       = value;
     Details     = details;
     PaymentDate = paymentDate;
 }
Exemplo n.º 30
0
 public IbanAdded(string iban, Guid expenseRecipientId, DomainEventMetadata metadata = null) : base(metadata)
 {
     Iban = iban;
     ExpenseRecipientId = expenseRecipientId;
 }