# frozen_string_literal: true

# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
require 'qexpr'

module QueryProfiles
  def self.for_admin(params)
    expr = Qx.select(
      'profiles.name',
      'profiles.id',
      'profiles.created_at::date::text AS created_at',
      'users.confirmed_at AS is_confirmed',
      'users.email'
    )
             .from(:profiles)
             .add_left_join('users', 'profiles.user_id=users.id')
             .order_by('profiles.created_at DESC')
             .paginate(params[:page].to_i, params[:page_length].to_i)

    if params[:search].present?
      expr = expr.where(%(
        profiles.name LIKE $search
        OR users.email LIKE $search
        OR users.name LIKE $search
      ), search: '%' + params[:search].downcase + '%')
    end

    expr.execute
  end
end