Sha256: 224cd607faadd2c62a5d65a0bac1592d01bc12207abb07ade0f9ee4276def811

Contents?: true

Size: 1.68 KB

Versions: 11

Compression:

Stored size: 1.68 KB

Contents

# EffectiveLearndashOwner
#
# Mark your user model with effective_learndash_owner to get all the includes

module EffectiveLearndashOwner
  extend ActiveSupport::Concern

  module Base
    def effective_learndash_owner
      include ::EffectiveLearndashOwner
    end
  end

  module ClassMethods
    def effective_learndash_owner?; true; end
  end

  included do
    # Effective Scoped - this is a has_one in preactice
    has_many :learndash_users, class_name: 'Effective::LearndashUser', as: :owner, inverse_of: :owner, dependent: :delete_all
    accepts_nested_attributes_for :learndash_users, allow_destroy: true

    # Not used
    has_many :learndash_enrollments, class_name: 'Effective::LearndashEnrollment', as: :owner, inverse_of: :owner, dependent: :delete_all
    accepts_nested_attributes_for :learndash_enrollments, allow_destroy: true
  end

  # Find
  def learndash_user
    learndash_users.first
  end

  # Find or create
  def create_learndash_user
    learndash_user || learndash_users.create!(owner: self)
  end

  # Find
  def learndash_enrollment(course:)
    learndash_user&.enrollment(course: course)
  end

  # Find or create
  def create_learndash_enrollment(course:)
    raise('expected a persisted learndash_user') unless learndash_user&.persisted?
    learndash_user.create_enrollment(course: course)
  end

  # Find or sync and check completed?
  def learndash_completed?(course:)
    enrollment = learndash_enrollment(course: course)

    # We haven't been enrolled
    return false if enrollment.blank?

    # Return completed right away if previously marked completed
    return true if enrollment.completed?

    # Check the API
    enrollment.refresh!
    enrollment.completed?
  end

end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
effective_learndash-0.3.2 app/models/concerns/effective_learndash_owner.rb
effective_learndash-0.3.1 app/models/concerns/effective_learndash_owner.rb
effective_learndash-0.3.0 app/models/concerns/effective_learndash_owner.rb
effective_learndash-0.2.1 app/models/concerns/effective_learndash_owner.rb
effective_learndash-0.2.0 app/models/concerns/effective_learndash_owner.rb
effective_learndash-0.1.9 app/models/concerns/effective_learndash_owner.rb
effective_learndash-0.1.8 app/models/concerns/effective_learndash_owner.rb
effective_learndash-0.1.7 app/models/concerns/effective_learndash_owner.rb
effective_learndash-0.1.6 app/models/concerns/effective_learndash_owner.rb
effective_learndash-0.1.5 app/models/concerns/effective_learndash_owner.rb
effective_learndash-0.1.4 app/models/concerns/effective_learndash_owner.rb