コード例 #1
0
        public static async Task WithdrawAsync(string tenant, string reason, long tranId, LoginView meta)
        {
            bool isRestrictedTransactionMode = await IsRestrictedTransactionModeAsync(tenant, meta.OfficeId).ConfigureAwait(false);

            if (isRestrictedTransactionMode)
            {
                throw new JournalWithdrawalException(I18N.CannotWithdrawTransactionDuringRestrictedTransactionMode);
            }

            var status = await Verifications.GetVerificationStatusAsync(tenant, tranId, meta.OfficeId).ConfigureAwait(false);

            if (status.UserId != meta.UserId)
            {
                throw new JournalWithdrawalException(I18N.AccessDeniedCannotWithdrawSomeoneElseTransaction);
            }

            if (
                status.VerificationStatusId.Equals(0) //Awaiting verification
                ||
                status.VerificationStatusId.Equals(1) //Automatically Approved by Workflow
                )
            {
                await TransactionPostings.WithdrawAsync(tenant, reason, meta.UserId, tranId, meta.OfficeId).ConfigureAwait(false);
            }

            throw new JournalWithdrawalException(I18N.AccessIsDenied);
        }