Skip to content

Instantly share code, notes, and snippets.

@mindplace
Created March 29, 2016 16:42
Show Gist options
  • Save mindplace/e2be6ed10ac4a15b3e1c5db63cfea1fd to your computer and use it in GitHub Desktop.
Save mindplace/e2be6ed10ac4a15b3e1c5db63cfea1fd to your computer and use it in GitHub Desktop.
require 'date'
class GlobalCohort
attr_reader :local_cohorts, :name, :p0_start_date
def initialize(name, p0_start_date=nil)
@local_cohorts = []
@students = []
@name = name
@p0_start_date = p0_start_date.nil? ? Date.today : p0_start_date
end
def students
# returns student objects, not just names
total_students = []
local_cohorts.each do |cohort|
total_students << cohort.students
end
total_students.flatten
end
def student_names_list
total_students = []
local_cohorts.each do |cohort|
total_students << cohort.students.map{|student| student.student_name}
end
total_students.flatten
end
def email_list
students.map{|student| student.email}
end
def num_of_students
students.length
end
def add_local_cohort(city)
@local_cohorts << city
end
def phases
{phase0: {start: p0_start_date, finish: (p0_start_date + 62)},
phase1: {start: (p0_start_date + 63), finish: (p0_start_date + 76)},
phase2: {start: (p0_start_date + 77), finish: (p0_start_date + 90)},
phase3: {start: (p0_start_date + 91), finish: (p0_start_date + 111)},
phase4: {start: (p0_start_date + 112), finish: (p0_start_date + 116)}}
end
def currently_in_phase
phases.each do |phase, dates|
if phases[phase][:start] <= Date.today && phases[phase][:finish] >= Date.today
return phase.to_s
end
end
end
def phases_schedule
puts "Phase 0: #{phases[:phase0][:start]} to #{phases[:phase0][:finish]}"
puts "Phase 1: #{phases[:phase1][:start]} to #{phases[:phase1][:finish]}"
puts "Phase 2: #{phases[:phase2][:start]} to #{phases[:phase2][:finish]}"
puts "Phase 3: #{phases[:phase3][:start]} to #{phases[:phase3][:finish]}"
puts "Phase 4: #{phases[:phase4][:start]} to #{phases[:phase4][:finish]}"
puts "Graduation: #{phases[:phase4][:finish] + 1}"
end
def immersive_start_date
phases[:phase1][:start].strftime("%v")
end
def graduation_date
phases[:phase4][:finish].strftime("%v")
end
def graduated?
phases[:phase4][:finish] < Date.today
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment