Files
nairobi/app/models/concerns/verification.rb
Javi Martín a1439d0790 Apply Layout/LineLength rubocop rule
Note we're excluding a few files:

* Configuration files that weren't generated by us
* Migration files that weren't generated by us
* The Gemfile, since it includes an important comment that must be on
  the same line as the gem declaration
* The Budget::Stats class, since the heading statistics are a mess and
  having shorter lines would require a lot of refactoring
2023-08-30 14:46:35 +02:00

101 lines
2.6 KiB
Ruby

module Verification
extend ActiveSupport::Concern
included do
scope :residence_verified, -> { where.not(residence_verified_at: nil) }
scope :residence_unverified, -> { where(residence_verified_at: nil) }
scope :residence_and_phone_verified, -> { residence_verified.where.not(confirmed_phone: nil) }
scope :residence_or_phone_unverified, -> { residence_unverified.or(where(confirmed_phone: nil)) }
scope :phone_not_fully_confirmed, -> { where(unconfirmed_phone: nil).or(where(confirmed_phone: nil)) }
scope :level_three_verified, -> { where.not(verified_at: nil) }
scope :level_two_verified, -> do
where.not(level_two_verified_at: nil).or(residence_and_phone_verified.where(verified_at: nil))
end
scope :level_two_or_three_verified, -> { level_two_verified.or(level_three_verified) }
scope :unverified, -> do
residence_or_phone_unverified.where(verified_at: nil, level_two_verified_at: nil)
end
scope :incomplete_verification, -> do
residence_unverified.where("failed_census_calls_count > ?", 0)
.or(residence_verified.phone_not_fully_confirmed)
end
end
def skip_verification?
Setting["feature.user.skip_verification"].present?
end
def verification_email_sent?
return true if skip_verification?
email_verification_token.present?
end
def verification_sms_sent?
return true if skip_verification?
unconfirmed_phone.present? && sms_confirmation_code.present?
end
def verification_letter_sent?
return true if skip_verification?
letter_requested_at.present? && letter_verification_code.present?
end
def residence_verified?
return true if skip_verification?
residence_verified_at.present?
end
def sms_verified?
return true if skip_verification?
confirmed_phone.present?
end
def level_two_verified?
return true if skip_verification?
level_two_verified_at.present? || (residence_verified? && sms_verified?)
end
def level_three_verified?
return true if skip_verification?
verified_at.present?
end
def level_two_or_three_verified?
level_two_verified? || level_three_verified?
end
def unverified?
!level_two_or_three_verified?
end
def failed_residence_verification?
!residence_verified? && !failed_census_calls.empty?
end
def no_phone_available?
!verification_sms_sent?
end
def user_type
if level_three_verified?
:level_3_user
elsif level_two_verified?
:level_2_user
else
:level_1_user
end
end
def sms_code_not_confirmed?
!sms_verified?
end
end