class PowerAPI::Parser

Public Class Methods

assignment_categories(raw_assignment_categories) click to toggle source
# File lib/powerapi/parser.rb, line 21
def self.assignment_categories(raw_assignment_categories)
  assignment_categories = {}

  raw_assignment_categories.each do |assignment_category|
    assignment_categories[assignment_category["id"]] = assignment_category
  end

  assignment_categories
end
assignment_scores(raw_assignment_scores) click to toggle source
# File lib/powerapi/parser.rb, line 31
def self.assignment_scores(raw_assignment_scores)
  assignment_scores = {}

  raw_assignment_scores.each do |assignment_score|
    assignment_scores[assignment_score["assignmentId"]] = assignment_score
  end

  assignment_scores
end
assignments(raw_assignments, assignment_categories, assignment_scores) click to toggle source
# File lib/powerapi/parser.rb, line 3
def self.assignments(raw_assignments, assignment_categories, assignment_scores)
  assignments = {}

  raw_assignments.each do |assignment|
    if assignments[assignment["sectionid"]] == nil
      assignments[assignment["sectionid"]] = []
    end

    assignments[assignment["sectionid"]] << PowerAPI::Data::Assignment.new({
      :assignment => assignment,
      :category => assignment_categories[assignment["categoryId"]],
      :score => assignment_scores[assignment["id"]],
    })
  end

  assignments
end
final_grades(raw_final_grades) click to toggle source
# File lib/powerapi/parser.rb, line 41
def self.final_grades(raw_final_grades)
  final_grades = {}

  raw_final_grades.each do |final_grade|
    if final_grades[final_grade["sectionid"]] == nil
      final_grades[final_grade["sectionid"]] = []
    end

    final_grades[final_grade["sectionid"]] << final_grade
  end

  final_grades
end
reporting_terms(raw_reporting_terms) click to toggle source
# File lib/powerapi/parser.rb, line 55
def self.reporting_terms(raw_reporting_terms)
  reporting_terms = {}

  raw_reporting_terms.each do |reporting_term|
    reporting_terms[reporting_term["id"]] = reporting_term["abbreviation"]
  end

  reporting_terms
end
sections(raw_sections, assignments, final_grades, reporting_terms, teachers) click to toggle source
# File lib/powerapi/parser.rb, line 65
def self.sections(raw_sections, assignments, final_grades, reporting_terms, teachers)
  sections = []

  raw_sections.each do |section|
    # PowerSchool will return sections that have not started yet.
    # These are stripped since none of the official channels display them.
    if DateTime.parse(section["enrollments"]["startDate"]).strftime("%s").to_i > DateTime.now.strftime("%s").to_i
      next
    end

    sections << PowerAPI::Data::Section.new({
      :assignments => assignments[section["id"]],
      :final_grades => final_grades[section["id"]],
      :reporting_terms => reporting_terms,
      :section => section,
      :teacher => teachers[section["teacherID"]]
    })
  end

  sections = sections.sort_by{|section| [section.expression, section.name]}

  sections
end
teachers(raw_teachers) click to toggle source
# File lib/powerapi/parser.rb, line 89
def self.teachers(raw_teachers)
  teachers = {}

  raw_teachers.each do |teacher|
    teachers[teacher["id"]] = teacher
  end

  teachers
end