public override bool AppliesTo(Transaction transaction, BankOperation operation)
        {
            if (transaction.Type == TransactionType.Deposit)
            {
                return(false);
            }
            var cardTransaction = transaction as CardTransaction;

            if (cardTransaction == null)
            {
                return(false);
            }
            var userCard = _userCardRepository.Find(cardTransaction.Card.Id);

            if (userCard == null)
            {
                return(false);
            }
            var query = DbQuery.For <CardTransaction>()
                        .FilterBy(Specs.ForCardTransaction.Withdrawals && !Specs.ForCardTransaction.Failed && Specs.ForCardTransaction.ForToday(userCard.Id, _schedule.TimeZone));
            var transactionsForToday = _cardTransactionRepository.Query(query);
            var countForToday        = transactionsForToday.Count;
            var amountForToday       = transactionsForToday
                                       .Sum(x => - x.AccountAmount);
            var countLimit = _settings.IsLocalLocation(transaction.Location)
                ? userCard.Settings.Limits.OperationsPerDayLocal
                : userCard.Settings.Limits.OperationsPerDayAbroad;
            var amountLimit = _settings.IsLocalLocation(transaction.Location)
                ? userCard.Settings.Limits.AmountPerDayLocal
                : userCard.Settings.Limits.AmountPerDayAbroad;

            return(countForToday > countLimit || amountForToday > amountLimit);
        }