class StudentProgress::ProgressImporter

Public Class Methods

create_and_associate_progress(row) click to toggle source
# File lib/student_progress/progress_importer.rb, line 16
def self.create_and_associate_progress(row)
  # Example Row:
  #<CSV::Row
  #   first_name:"Brennan"
  #   last_name:"Fulmer"
  #   deprecated_github_username:"BrennanFulmer"
  #   curriculum_id:"31648"
  #   completed_at:"2018-07-26 19:12:46.353279"
  #   track_id:"31303"
  #   title:"Rails Static Request"
  # >
  student = StudentProgress::Student.first(github_username: row[:deprecated_github_username].downcase)
  lesson = StudentProgress::Lesson.find_by_id(row[:curriculum_id].to_i)
  if student && lesson
    if completed = StudentProgress::CompletedLesson.first(student_id: student.id, lesson_id: lesson.id)
      return 
    else
      completed = StudentProgress::CompletedLesson.create(student_id: student.id, lesson_id: lesson.id)
      completed.date = row[:completed_at]
      completed.save
    end
  else
    binding.pry
  end

end
import(url) click to toggle source
# File lib/student_progress/progress_importer.rb, line 5
def self.import(url)
  options  = { headers: true, header_converters: :symbol }

  
  csv_file = open(url)
  content  = File.new(csv_file)
  CSV.foreach(content, options, &method(:create_and_associate_progress))

  nil
end