# frozen_string_literal: true
class ReviewerReminder
  def initialize
    @collection = reminder_collection
  end

  def count
    @collection.count
  end
  alias size count

  def reminders
    @reminders ||= @collection.to_hash.map { |r| OpenStruct.new(r) }
  end

  def send_all
    reminders.each do |reminder|
      ReviewerMailer.reminder(reminder).deliver_now
    end
  end

  private

    def reminder_collection
      sql = "select u.name, u.email, c.test_hash, c.project
             from reviewer_votes rev
               inner join users u on u.id = rev.user_id
               inner join candidates c on c.id = rev.candidate_id
             where rev.vote = 0 and c.review_status = 0
               and u.role != 'manager' and u.active is not false;"
      ActiveRecord::Base.connection.exec_query(sql)
    end
end
