/// <inheritdoc />
        public Task Execute(TransferInput input)
        {
            if (input.ModelState.IsValid)
            {
                return(this.TransferInternal(input.OriginAccountId, input.DestinationAccountId, input.TransferAmount));
            }

            this._outputPort?.Invalid(input.ModelState);
            return(Task.CompletedTask);
        }
        /// <inheritdoc />
        public Task Execute(Guid originAccountId, Guid destinationAccountId, decimal amount, string currency)
        {
            var input = new TransferInput(
                originAccountId,
                destinationAccountId,
                amount,
                currency);

            if (input.ModelState.IsValid)
            {
                return(this.TransferInternal(input.OriginAccountId, input.DestinationAccountId, input.TransferAmount));
            }

            this._outputPort?.Invalid(input.ModelState);
            return(Task.CompletedTask);
        }