Module: EffectiveMembershipsDirectory

Extended by:
ActiveSupport::Concern
Included in:
Effective::MembershipDirectory
Defined in:
app/models/concerns/effective_memberships_directory.rb

Overview

This is a search model for the MembershipDirectories screen

EffectiveMembershipsDirectory Mark your directory search model with include EffectiveMembershipsDirectory

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#collectionObject

Base collection to search. Can be configured per tenant.



31
32
33
34
# File 'app/models/concerns/effective_memberships_directory.rb', line 31

def collection
  # Example::User.members.membership_in_good_standing.all
  raise('to be implemented by app membership_directory')
end

#membership_ownersObject

The unpaginated results of the search



60
61
62
# File 'app/models/concerns/effective_memberships_directory.rb', line 60

def membership_owners
  @membership_owners || collection
end

#per_pageObject



42
43
44
# File 'app/models/concerns/effective_memberships_directory.rb', line 42

def per_page
  24
end

#present?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'app/models/concerns/effective_memberships_directory.rb', line 46

def present?
  term.present? || first_name.present? || last_name.present? || category.present?
end

#results(page: nil) ⇒ Object

The paginated results



65
66
67
68
69
70
# File 'app/models/concerns/effective_memberships_directory.rb', line 65

def results(page: nil)
  page = (page || 1).to_i
  offset = [(page - 1), 0].max * per_page

  membership_owners.limit(per_page).offset(offset)
end

#search!Object

Search and assigns the collection Assigns the entire collection() if there are no search terms Otherwise validate the search terms



53
54
55
56
57
# File 'app/models/concerns/effective_memberships_directory.rb', line 53

def search!
  @membership_owners = build_collection()
  @membership_owners = @membership_owners.none if present? && !valid?
  @membership_owners
end

#search_any_columnsObject

Search Users and Organizations for only these fields. Passed into search_any. Return nil for all. Should this include email?



38
39
40
# File 'app/models/concerns/effective_memberships_directory.rb', line 38

def search_any_columns
  [:title, :name, :first_name, :middle_name, :last_name]
end