Sha256: 5b58ed4c3acbcab713425a4117a904f90f05a132d28e9321ea42d7c58a87bee0

Contents?: true

Size: 993 Bytes

Versions: 2

Compression:

Stored size: 993 Bytes

Contents

require 'peoplefinder'

module Peoplefinder::Concerns::Completion
  extend ActiveSupport::Concern

  included do
    COMPLETION_SCORE_FIELDS = [
      :given_name,
      :surname,
      :email,
      :primary_phone_number,
      :location,
      :description,
      :groups,
      :image
    ]

    def completion_score_fields
      fields = COMPLETION_SCORE_FIELDS
      if no_phone
        fields -= [:primary_phone_number]
      end
      fields
    end

    scope :inadequate_profiles,
      lambda {
        where("
          COALESCE(image,'') = ''
          OR COALESCE(location,'') = ''
          OR (no_phone != true
            AND COALESCE(primary_phone_number,'') = ''
            )
          "
        ).order(:email)
      }

    def completion_score
      completed = completion_score_fields.map { |f| send(f).present? }
      (100 * completed.select { |f| f }.length) / completion_score_fields.length
    end

    def incomplete?
      completion_score < 100
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
peoplefinder-0.1.1 app/models/peoplefinder/concerns/completion.rb
peoplefinder-0.1.0 app/models/peoplefinder/concerns/completion.rb