private AccountState ApplyEvent(ObligationAddedToAccount occurred)
 {
     return(new AccountState(
                AccountNumber,
                CurrentBalance,
                AccountStatus,
                Obligations.Add(occurred.MaintenanceFee.ObligationNumber, occurred.MaintenanceFee),
                SimulatedFields,
                AuditLog.Add(new StateLog("ObligationAddedToAccount", occurred.Message, occurred.UniqueGuid(),
                                          occurred.OccurredOn()))
                , OpeningBalance,
                Inventroy,
                UserName,
                LastPaymentAmount,
                LastPaymentDate));
 }
 private void AddObligation(AddObligationToAccount command)
 {
     this.Monitor();
     if (!_accountState.Obligations.ContainsKey(command.Obligation.ObligationNumber))
     {
         var @event = new ObligationAddedToAccount(command.AccountNumber, command.Obligation);
         Persist(@event, s =>
         {
             _accountState = _accountState.Event(@event);
             ApplySnapShotStrategy();
             _log.Debug($"Added obligation {command.Obligation.ObligationNumber} to account {command.AccountNumber}");
             /* Optionally, put this command on the external notificaiton system (i.e. Kafka) */
         });
     }
     else
     {
         _log.Debug($"You are trying to add obligation {command.Obligation.ObligationNumber} an account which has exists on account {command.AccountNumber}. No action taken.");
     }
 }
Beispiel #3
0
        private void AddObligation(AddObligationToAccount command)
        {
            Monitor();
            if (!_accountState.Obligations.ContainsKey(command.MaintenanceFee.ObligationNumber))
            {
                var @event = new ObligationAddedToAccount(command.AccountNumber, command.MaintenanceFee);
                Persist(@event, s =>
                {
                    _accountState = _accountState.ApplyEvent(@event);
                    ApplySnapShotStrategy();
                    _log.Debug(
                        $"[AddObligation]: Added maintenanceFee {command.MaintenanceFee.ObligationNumber} to account {command.AccountNumber}");

                    //Report current state to Kafka
                    Self.Tell(new PublishAccountStateToKafka());
                });
            }
            else
            {
                _log.Debug(
                    $"[AddObligation]: You are trying to add maintenanceFee {command.MaintenanceFee.ObligationNumber} an account which has exists on account {command.AccountNumber}. No action taken.");
            }
        }