class Statements::Search
Attributes
input[R]
Public Class Methods
new(input)
click to toggle source
# File lib/statements/search.rb, line 8 def initialize(input) @input = input end
Public Instance Methods
credits()
click to toggle source
# File lib/statements/search.rb, line 20 def credits transactions.select { |t| t.amount > 0 } end
debits()
click to toggle source
# File lib/statements/search.rb, line 16 def debits transactions.select { |t| t.amount < 0 } end
total(collection = :transactions)
click to toggle source
# File lib/statements/search.rb, line 24 def total(collection = :transactions) __send__(collection).inject(0) { |sum, t| sum + t.amount } end
transactions()
click to toggle source
# File lib/statements/search.rb, line 12 def transactions @transactions ||= query.all end
Private Instance Methods
query()
click to toggle source
# File lib/statements/search.rb, line 30 def query query = Transaction.order(input['order']) query = query.where(account_id: input['accounts']) query = query.where('posted_at > ? and posted_at < ?', Time.parse(input['date_start']), Time.parse(input['date_end'])) query = query.where('amount < 0') if input['type'] == 'debits' query = query.where('amount > 0') if input['type'] == 'credits' query = query.where(colour: input['colours']) text = input['search'].strip.downcase unless text.empty? words = text.split(/\s+/) query = query.where('lower(description) like ?', "%#{words.join '%'}%") end query end