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); }