/// <inheritdoc />
        public Task Execute(WithdrawInput input)
        {
            if (input.ModelState.IsValid)
            {
                return(this.WithdrawInternal(input.AccountId, input.Amount));
            }

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

            if (input.ModelState.IsValid)
            {
                return(this.WithdrawInternal(input.AccountId, input.Amount));
            }

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