Module: EffectiveMembershipsUser

Extended by:
ActiveSupport::Concern
Defined in:
app/models/concerns/effective_memberships_user.rb

Overview

EffectiveMembershipsUser

Mark your user model with effective_memberships_user to get all the includes

Defined Under Namespace

Modules: Base, ClassMethods

Instance Method Summary collapse

Instance Method Details

#build_representative(organization:) ⇒ Object

Find or build



67
68
69
# File 'app/models/concerns/effective_memberships_user.rb', line 67

def build_representative(organization:)
  representative(organization: organization) || representatives.build(organization: organization)
end

#individual_membership_present?Boolean

Returns:

  • (Boolean)


54
55
56
# File 'app/models/concerns/effective_memberships_user.rb', line 54

def individual_membership_present?
  membership.present? && !membership.marked_for_destruction?
end

#membership_categories_on(date) ⇒ Object



84
85
86
# File 'app/models/concerns/effective_memberships_user.rb', line 84

def membership_categories_on(date)
  membership_history_on(date).try(:membership_categories)
end

#membership_history_on(date) ⇒ Object



79
80
81
82
# File 'app/models/concerns/effective_memberships_user.rb', line 79

def membership_history_on(date)
  raise('expected a date') unless date.respond_to?(:strftime)
  membership_histories.find { |history| (history.start_on..history.end_on).cover?(date) } # Ruby 2.6 supports endless ranges
end

#membership_organizationsObject



75
76
77
# File 'app/models/concerns/effective_memberships_user.rb', line 75

def membership_organizations
  organizations.select { |organization| organization.is?(:member) && !organization.archived? }
end

#membership_present?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'app/models/concerns/effective_memberships_user.rb', line 50

def membership_present?
  individual_membership_present? || organization_membership_present?
end

#membershipsObject

Instance Methods



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

def memberships
  Array(membership) + membership_organizations.map(&:membership)
end

#memberships_ownersObject



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

def memberships_owners
  Array(is?(:member) ? self : nil) + membership_organizations
end

#organization_membership_present?(except: nil) ⇒ Boolean

Returns:

  • (Boolean)


58
59
60
# File 'app/models/concerns/effective_memberships_user.rb', line 58

def organization_membership_present?(except: nil)
  organizations.reject(&:archived?).any? { |organization| organization != except && organization.membership_present? }
end

#organizationsObject



71
72
73
# File 'app/models/concerns/effective_memberships_user.rb', line 71

def organizations
  representatives.reject(&:marked_for_destruction?).map(&:organization)
end

#representative(organization:) ⇒ Object



62
63
64
# File 'app/models/concerns/effective_memberships_user.rb', line 62

def representative(organization:)
  representatives.find { |rep| rep.organization_id == organization.id } if organization
end