private void Handle(Deposit cmd) { var sender = Sender; if (cmd.To != _state.AccountNumber) { throw new NotFoundException("Invalid Account Number"); } if (cmd.Amount <= 0) { throw new ValidationException("Invalid Deposit Amout, it must be greater than zero!"); } var credited = new AccountCredited { TransactionId = cmd.TransactionId, Amount = cmd.Amount, CurrencyDate = cmd.CurrencyDate, From = cmd.From, To = _accountNumber }; // when last event is persisted, send response Persist(credited, e => { ApplyEvent(e); Respond(sender, "Ok", new[] { credited }); }); }
public static IImmutableList <string> GetTopics(this AccountCredited self) { return(ImmutableArray.CreateRange( new[] { "\\Accounts", $"\\Account\\{self.AccountId}", })); }
public void Apply(AccountCredited @event) { Transactions.Add(new Transaction() { Amount = @event.Amount, Id = @event.Id, Type = "Credit", Description = @event.Description }); }
public IImmutableList <string> GetTopics(object message) { return(message switch { AccountCreated evt => evt.GetTopics(), AccountCredited evt => evt.GetTopics(), AccountDebited evt => evt.GetTopics(), _ => _onlyRootTopic });
public static object CreateAccountObject(int version) { object accountObject = null; var internalCounter = version + 1; { const int checkpointVersion = 10; var checkPointModVersion = internalCounter % checkpointVersion; if (checkPointModVersion == 0) { int otherCheckPointsCount = internalCounter / checkpointVersion; var elementsCount = internalCounter / 2; var creditedSum = ComputeSum(20, elementsCount, 20) - ComputeSum(100, otherCheckPointsCount, 100); var debitedSum = ComputeSum(10, elementsCount, 20); var checkpoint = new AccountCheckPoint(creditedSum, debitedSum); accountObject = checkpoint; } else { var modVersion = internalCounter % 2; if (modVersion == 0) { var credited = new AccountCredited(internalCounter * 10, internalCounter % 17); accountObject = credited; } else { var debited = new AccountDebited(internalCounter * 10, internalCounter % 17); accountObject = debited; } } } return(accountObject); }
public static object CreateAccountObject(int version) { object accountObject = null; var internalCounter = version + 1; { const int checkpointVersion = 10; var checkPointModVersion = internalCounter % checkpointVersion; if (checkPointModVersion == 0) { int otherCheckPointsCount = internalCounter / checkpointVersion; var elementsCount = internalCounter / 2; var creditedSum = ComputeSum(20, elementsCount, 20) - ComputeSum(100, otherCheckPointsCount, 100); var debitedSum = ComputeSum(10, elementsCount, 20); var checkpoint = new AccountCheckPoint(creditedSum, debitedSum); accountObject = checkpoint; } else { var modVersion = internalCounter % 2; if (modVersion == 0) { var credited = new AccountCredited(internalCounter * 10, internalCounter % 17); accountObject = credited; } else { var debited = new AccountDebited(internalCounter * 10, internalCounter % 17); accountObject = debited; } } } return accountObject; }
public void Apply(AccountCredited credit) { credit.Apply(this); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine($"Crediting {Owner} {credit.Amount.ToString("C")}: {credit.Description}"); }
public void Apply(AccountCredited @event) { Balance += @event.Amount; AvailableBalance += @event.Amount; }
public void Handle(AccountCredited accountCredited) { Balance += accountCredited.Amount; }
private void Apply(AccountCredited accountCredited) { Balance += accountCredited.Amount; AvailableBalance += accountCredited.Amount; }
protected void When(AccountCredited e) { balance += Money.Amount(e.Amount); }
private void UpdateState(AccountCredited ac) { this.accountState.Credit(ac.Amount); log.Info($"Account credited by {ac.AccountId}, current state: {this.accountState.CurrentAmount}"); }
private void When(AccountCredited @event) { this.Balance = this.Balance + @event.CreditAmount; }
private void Apply(AccountCredited risedEvent) => Balance += risedEvent.Amount;