Beispiel #1
0
        public Response Apply(TransferRequest req)
        {
            var srcAccount  = Get(req.SourceAccountId);
            var destAccount = Get(req.DestinationAccountId);
            var srcEvent    = req.ToSourceAccountTransaction();
            var destEvent   = req.ToDestinationAccountTransaction();

            var srcEventValid  = srcAccount.ValidateProposed(srcEvent);
            var destEventValid = destAccount.ValidateProposed(destEvent);

            if (!srcEventValid || !destEventValid)
            {
                return(Response.Errored(ResponseStatus.InvalidState, $"{srcEventValid.IssuesMessage} {destEventValid.IssuesMessage}"));
            }

            _eventStore.Commit(srcEvent, destEvent);
            return(Response.Success);
        }