Sha256: b199577435fbfccefd9263e6a5e76ef047bc6ce7bc2b6044e1f466d0ae2b088a

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

module AbsorbApi
  class Course < Base
    include Relations

    attr_accessor :id, :name, :description, :notes, :external_id, :access_date,
                  :expire_type, :expire_duration, :expiry_date, :active_status,
                  :tag_ids, :resource_ids, :editor_ids, :prices,
                  :competency_definition_ids, :prerequisite_course_ids,
                  :post_enrollment_course_ids, :allow_course_evaluation,
                  :category_id, :certificate_url, :audience, :goals, :vendor,
                  :company_cost, :learner_cost, :company_time, :learner_time

    has_many :certificates
    has_many :chapters
    has_many :enrollments, :course_enrollment
    has_many :resources
    has_many :prerequisites
    has_many :lessons

    # gets all associated enrollments given a collection of courses
    # all calls are called in parallel
    def self.enrollments_from_collection(courses, **conditions)
      enrollments = []
      connection = AbsorbApi::Api.new.connection
      courses.reject! do |course|
        AbsorbApi.configuration.ignored_course_ids.include? course.id
      end

      connection.in_parallel do
        courses.each do |course|
          enrollments << connection.get("courses/#{course.id}/enrollments", conditions)
        end
      end
      enrollments.map { |response| response.body.map { |attrs| CourseEnrollment.new(attrs) } }.flatten
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
absorb_api-0.2.0 lib/absorb_api/course.rb