Class: StudentProgress::ProgressImporter

Inherits:
Object
  • Object
show all
Defined in:
lib/student_progress/progress_importer.rb

Class Method Summary collapse

Class Method Details

.create_and_associate_progress(row) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 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) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# 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