示例#1
0
        public TransactionEdit CreateEditIsUserFlagged(IEnumerable <string> trasactionIds, bool?isUserFlagged)
        {
            var scopeFilter = new TransactionEdit.ScopeFilter(TransactionEdit.ScopeType.TransactionId, trasactionIds.ToArray(), null);
            var edit        = AddEditForScope(scopeFilter.AsEnumerable());

            edit.Values.IsFlagged = isUserFlagged.HasValue ? new Transaction.EditValue <bool>(isUserFlagged.Value) : Transaction.EditValue <bool> .VoidedEditValue;

            return(edit);
        }
示例#2
0
        public TransactionEdit CreateEditNote(IEnumerable <string> trasactionIds, string note)
        {
            var scopeFilter = new TransactionEdit.ScopeFilter(TransactionEdit.ScopeType.TransactionId, trasactionIds.ToArray(), null);
            var edit        = AddEditForScope(scopeFilter.AsEnumerable());

            edit.Values.Note = note != null ? new Transaction.EditValue <string>(note) : Transaction.EditValue <string> .VoidedEditValue;

            return(edit);
        }
示例#3
0
        private static bool FilterTransaction(TransactionEdit.ScopeFilter scopeFilter, Transaction transaction)
        {
            //TODO: remove re-prasing
            switch (scopeFilter.Type)
            {
            case TransactionEdit.ScopeType.All:
                return(true);

            case TransactionEdit.ScopeType.None:
                return(false);

            case TransactionEdit.ScopeType.EntityName:
                return(scopeFilter.Parameters.Any(p => string.Equals(transaction.EntityName, p, StringComparison.CurrentCultureIgnoreCase)));

            case TransactionEdit.ScopeType.EntityNameNormalized:
                return(scopeFilter.Parameters.Any(p => string.Equals(transaction.EntityNameNormalized, p, StringComparison.CurrentCultureIgnoreCase)));

            case TransactionEdit.ScopeType.TransactionId:
                return(scopeFilter.Parameters.Any(p => string.Equals(transaction.Id, p, StringComparison.Ordinal)));

            case TransactionEdit.ScopeType.EntityNameAnyTokens:
                return(scopeFilter.Parameters.Any(p => transaction.EntityNameTokens.Any(t => string.Equals(t, p, StringComparison.CurrentCultureIgnoreCase))));

            case TransactionEdit.ScopeType.EntityNameAllTokens:
                return(scopeFilter.Parameters.All(p => transaction.EntityNameTokens.Any(t => string.Equals(t, p, StringComparison.CurrentCultureIgnoreCase))));

            case TransactionEdit.ScopeType.AccountId:
                return(scopeFilter.Parameters.Any(p => string.Equals(transaction.AccountId, p, StringComparison.Ordinal)));

            case TransactionEdit.ScopeType.TransactionReason:
                return(scopeFilter.Parameters.Any(p => (TransactionReason)Enum.Parse(typeof(TransactionReason), p) == transaction.TransactionReason));

            case TransactionEdit.ScopeType.AmountRange:
                var isNegativeAmount = Utils.ParseBool(scopeFilter.Parameters[2], null);
                if (isNegativeAmount)
                {
                    return(transaction.Amount <= Decimal.Parse(scopeFilter.Parameters[0]) * -1 && transaction.Amount >= Decimal.Parse(scopeFilter.Parameters[1]) * -1);
                }
                else
                {
                    return(transaction.Amount >= Decimal.Parse(scopeFilter.Parameters[0]) && transaction.Amount <= Decimal.Parse(scopeFilter.Parameters[1]));
                }

            default:
                throw new NotSupportedException("TransactionEdit.Scope value of {0} is not supported in FilterTransaction".FormatEx(scopeFilter.Type.ToString()));
            }
        }