class Decidim::Meetings::Admin::Invites
A class used to find the Invites by their status status.
def self.for(invites, query = nil, status = nil)
query - query to filter invites
invites - the initial Invites relation that needs to be filtered.
Syntactic sugar to initialize the class and return the queried objects.
def self.for(invites, query = nil, status = nil) new(invites, query, status).query end
def filter_by_search(invites)
def filter_by_search(invites) return invites if @query.blank? invites.joins(:user).where( User.arel_table[:name].lower.matches("%#{@query}%").or(User.arel_table[:email].lower.matches("%#{@query}%")) ) end
def filter_by_status(invites)
def filter_by_status(invites) case @status when "accepted" invites.where.not(accepted_at: nil) when "rejected" invites.where.not(rejected_at: nil) when "sent" invites.where.not(sent_at: nil).where(accepted_at: nil, rejected_at: nil) else invites end end
def initialize(invites, query = nil, status = nil)
query - query to filter invites
invites - the initial Invites relation that need to be filtered
Initializes the class.
def initialize(invites, query = nil, status = nil) @invites = invites @query = query @status = status end
def query
def query @invites = filter_by_search(@invites) @invites = filter_by_status(@invites) @invites end