KyivKrishnaAcademy/ved_akadem_students

View on GitHub
app/policies/questionnaire_policy.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
class QuestionnairePolicy < BasePolicy
  class Scope < Scope
    def resolve
      if Pundit.policy(user, Questionnaire).update_all?
        scope.all
      else
        scope.joins(:questionnaire_completenesses).where(questionnaire_completenesses: { person_id: user.id }).distinct
      end
    end
  end

  def show_form?
    owned? || update_all?
  end

  def save_answers?
    owned? || update_all?
  end

  def ui_index?
    user.can_act?(
      %w[
        program:edit
        program:new
      ]
    )
  end

  private

  def owned?
    QuestionnaireCompleteness.where(person_id: user.id, questionnaire_id: record.id).present?
  end
end