Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 0 additions & 37 deletions Jays-Game/controller.rb

This file was deleted.

57 changes: 0 additions & 57 deletions Jays-Game/model.rb

This file was deleted.

83 changes: 0 additions & 83 deletions Jays-Game/view.rb

This file was deleted.

44 changes: 44 additions & 0 deletions Peters-Game/controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
require_relative 'view'
require_relative 'model'

class GameController
include AttendanceView

def run!
attendanceList = List.new

Print::run_spinner
Print::title_screen

loop do
Print::menu
case Print::fetch_user_input
when "VT"
Print::print_list(attendanceList.todays_attendances)
when "VA"
Print::print_list(attendanceList.attendances)
when "AA"
attendanceList.add_attendance(Print::get_attendance_input)
when "MAA"
attendanceList.mark_absent(Print::marked_absent_id.to_i)
when "MAP"
attendanceList.mark_present(Print::marked_present_id.to_i)
when "DA"
attendanceList.delete_attendance(Print::deleted_id("attendance").to_i)
when "VP"
Print::print_list(attendanceList.people)
when "AP"
attendanceList.add_person(Print::serialize_person)
when "DP"
attendanceList.delete_person(Print::deleted_id("person").to_i)
when "Q"
puts "We're done"
exit
else
Print::error_message
end
end
end
end

GameController.new.run!
136 changes: 136 additions & 0 deletions Peters-Game/model.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
require 'faker'
require 'pry'
require 'date'

class NoPeopleError < StandardError; end

class Attendance
@@primary_id = 0
attr_reader :id, :date, :attended

def initialize args
@id = Attendance.fetch_id
@person = args[:person]
@date = Date.parse args.fetch(:date, Date.today.to_s)
@attended = nil
end

def to_s
if present?
presence = "\u2705"
elsif absent?
presence = "\u274C"
else
presence = "\u2753"
end
"#{presence} #{@id.to_s.rjust(2)} || #{@date} - #{@person.name}(#{@person.id})"
end

def person_id
@person.id
end

def mark_present
@attended = true
end

def mark_absent
@attended = false
end

def present?
@attended == true
end

def absent?
@attended == false
end

private

def self.fetch_id
@@primary_id += 1
end
end

class Person
@@primary_id = 0
attr_reader :id, :name, :attendances

def initialize args
@id = Person.fetch_id
@name = args[:name]
end

def to_s
"#{id} || #{name}"
end

private

def self.fetch_id
@@primary_id += 1
end
end

class List
attr_reader :attendances, :people

def initialize
@attendances = []
@people = []
populate_dummy_people
populate_dummy_attendances
end

def todays_attendances
@attendances.select { |att| att.date == Date.today }
end

def add_person(input)
@people << Person.new(input)
end

def add_attendance(input)
input[:person] = person_by_id(input[:person].to_i)
@attendances << Attendance.new(input)
end

def mark_present(id)
attended_item = @attendances.select { |attendance| attendance.id == id }
fail "No item matching that id" unless attended_item
attended_item[0].mark_present
end

def mark_absent(id)
absent_item = @attendances.select { |attendance| attendance.id == id }
fail "No item matching that id" unless absent_item
absent_item[0].mark_absent
end

def person_by_id(id)
@people.find {|person| person.id == id }
end

def delete_person(id)
@attendances.delete_if { |n| n.person_id == id }
@people.delete_if { |n| n.id == id }
end

def delete_attendance(id)
@attendances.delete_if { |n| n.id == id }
end

def populate_dummy_people
5.times do
add_person(name: Faker::Name.name)
end
end

def populate_dummy_attendances
raise NoPeopleError, "There are no people" if @people.empty?
10.times do
add_attendance(person: @people.sample.id, date: Date.today.to_s)
end
end
end
Loading