This program will do as you ask. For each member of staff it creates a seven-element array of false values, then the day of week corresponding to each element of the details array is set to true. At the end, days not worked still contain false.
Note that Time#wday returns 0 for Sunday and 6 for Saturday, so each member of staff's array goes from Sunday to Saturday.
As you can see from the output, every member of staff in your sample data worked from Monday to Friday except Ramielle Ford who also took Friday off.
The pp module has been included only to prove the pp command to lay out the data nicely. You will not need it.
require 'date'
require 'pp'
table = eval(<<__END__JSON__)
{"success"=>true, "data"=>[
{"id"=>133572, "memberId"=>"103001862-07", "firstName"=>"Anissa", "lastName"=>"Martin", "dateOfBirth"=>"2002-11-09", "details"=>[{"date"=>"2013-10-01T00:00:00", "type"=>1, "checkInTime"=>"08:19:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-02T00:00:00", "type"=>1, "checkInTime"=>"08:15:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-03T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"17:40:00"}, {"date"=>"2013-10-04T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"18:00:00"}, {"date"=>"2013-10-07T00:00:00", "type"=>1, "checkInTime"=>"08:26:00", "checkOutTime"=>"08:00:00"}]},
{"id"=>133573, "memberId"=>"103001862-08", "firstName"=>"Allyson", "lastName"=>"Martin", "dateOfBirth"=>"2005-02-16", "details"=>[{"date"=>"2013-10-01T00:00:00", "type"=>1, "checkInTime"=>"08:19:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-02T00:00:00", "type"=>1, "checkInTime"=>"08:15:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-03T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"17:40:00"}, {"date"=>"2013-10-04T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"18:00:00"}, {"date"=>"2013-10-07T00:00:00", "type"=>1, "checkInTime"=>"08:26:00", "checkOutTime"=>"08:00:00"}]},
{"id"=>135692, "memberId"=>"103008263-05", "firstName"=>"Emmya", "lastName"=>"Burrell", "dateOfBirth"=>"2003-01-17", "details"=>[{"date"=>"2013-10-01T00:00:00", "type"=>1, "checkInTime"=>"07:00:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-01T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"16:00:00"}, {"date"=>"2013-10-02T00:00:00", "type"=>1, "checkInTime"=>"07:00:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-02T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"16:00:00"}, {"date"=>"2013-10-03T00:00:00", "type"=>1, "checkInTime"=>"07:00:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-04T00:00:00", "type"=>1, "checkInTime"=>"07:00:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-07T00:00:00", "type"=>1, "checkInTime"=>"07:00:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-07T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"16:40:00"}]},
{"id"=>138343, "memberId"=>"103015748-03", "firstName"=>"Abigail", "lastName"=>"Young", "dateOfBirth"=>"2003-08-09", "details"=>[{"date"=>"2013-10-01T00:00:00", "type"=>1, "checkInTime"=>"07:40:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-01T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"17:00:00"}, {"date"=>"2013-10-02T00:00:00", "type"=>1, "checkInTime"=>"07:35:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-02T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"17:36:00"}, {"date"=>"2013-10-03T00:00:00", "type"=>1, "checkInTime"=>"07:40:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-03T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"17:30:00"}, {"date"=>"2013-10-04T00:00:00", "type"=>1, "checkInTime"=>"07:30:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-07T00:00:00", "type"=>1, "checkInTime"=>"07:56:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-07T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"17:26:00"}]},
{"id"=>139451, "memberId"=>"103016684-03", "firstName"=>"William", "lastName"=>"Brown", "dateOfBirth"=>"2004-02-06", "details"=>[{"date"=>"2013-10-01T00:00:00", "type"=>1, "checkInTime"=>"07:00:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-01T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"18:00:00"}, {"date"=>"2013-10-02T00:00:00", "type"=>1, "checkInTime"=>"07:00:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-02T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"18:00:00"}, {"date"=>"2013-10-03T00:00:00", "type"=>1, "checkInTime"=>"07:00:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-03T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"18:00:00"}, {"date"=>"2013-10-04T00:00:00", "type"=>1, "checkInTime"=>"07:00:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-04T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"18:00:00"}, {"date"=>"2013-10-07T00:00:00", "type"=>1, "checkInTime"=>"07:00:00", "checkOutTime"=>"08:00:00"}, {"date"=>"2013-10-07T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"18:00:00"}]},
{"id"=>8748758, "memberId"=>"2162539-05", "firstName"=>"Ramielle", "lastName"=>"Ford", "dateOfBirth"=>"2009-08-06", "details"=>[{"date"=>"2013-10-01T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"18:00:00"}, {"date"=>"2013-10-02T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"18:00:00"}, {"date"=>"2013-10-03T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"18:00:00"}]},
{"id"=>8795043, "memberId"=>"2163877-04", "firstName"=>"Christopher", "lastName"=>"Lampkins", "dateOfBirth"=>"2006-11-26", "details"=>[{"date"=>"2013-10-01T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"18:00:00"}, {"date"=>"2013-10-02T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"18:00:00"}, {"date"=>"2013-10-03T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"18:00:00"}, {"date"=>"2013-10-04T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"18:00:00"}, {"date"=>"2013-10-07T00:00:00", "type"=>2, "checkInTime"=>"15:30:00", "checkOutTime"=>"17:23:00"}]}]}
__END__JSON__
cards = {}
table['data'].each do |staff|
name = staff.values_at(*%w/ firstName lastName /).join(' ')
cards[name] = Array.new(7, false)
staff['details'].each do |clock|
wday = Date.parse(clock['date']).wday
cards[name][wday] = true
end
end
pp cards
output
{"Anissa Martin"=>[false, true, true, true, true, true, false],
"Allyson Martin"=>[false, true, true, true, true, true, false],
"Emmya Burrell"=>[false, true, true, true, true, true, false],
"Abigail Young"=>[false, true, true, true, true, true, false],
"William Brown"=>[false, true, true, true, true, true, false],
"Ramielle Ford"=>[false, false, true, true, true, false, false],
"Christopher Lampkins"=>[false, true, true, true, true, true, false]}
Update
Luigi suggest using group_by. This alternative version is written that way and I think it is less readable, but you may prefer it.
cards = {}
table['data'].each do |staff|
name = staff.values_at(*%w/ firstName lastName /).join(' ')
cards[name] = Array.new(7, false)
staff['details'].group_by { |clock| Date.parse(clock['date']).wday }.each_key do |wday|
cards[name][wday] = true;
end
end
Update 2
This final alternative seems to do what you most recently say you want. If your requirement changes again then please open a new question, explain your requirement comprehensively, and give a good example of actual data. I spent several minutes looking for a bug that isn't there: Anissa Martin really does clock in at 8:26 and out at 8:00.
This iteration isn't so far from my original, and if you have enough knowledge to stand a chance of writing this for yourself then it is hard to believe you couldn't have come up with the same thing.
cards = {}
table['data'].each do |staff|
name = staff.values_at(*%w/ firstName lastName /).join(' ')
cards[name] = Array.new(14, nil)
staff['details'].each do |clock|
wday = DateTime.parse(clock['date']).wday
cards[name][wday + wday, 2] = clock.values_at(*%w/ checkInTime checkOutTime /)
end
end
output
{"Anissa Martin"=>
[nil,
nil,
"08:26:00",
"08:00:00",
"08:19:00",
"08:00:00",
"08:15:00",
"08:00:00",
"15:30:00",
"17:40:00",
"15:30:00",
"18:00:00",
nil,
nil],
"Allyson Martin"=>
[nil,
nil,
"08:26:00",
"08:00:00",
"08:19:00",
"08:00:00",
"08:15:00",
"08:00:00",
"15:30:00",
"17:40:00",
"15:30:00",
"18:00:00",
nil,
nil],
"Emmya Burrell"=>
[nil,
nil,
"15:30:00",
"16:40:00",
"15:30:00",
"16:00:00",
"15:30:00",
"16:00:00",
"07:00:00",
"08:00:00",
"07:00:00",
"08:00:00",
nil,
nil],
"Abigail Young"=>
[nil,
nil,
"15:30:00",
"17:26:00",
"15:30:00",
"17:00:00",
"15:30:00",
"17:36:00",
"15:30:00",
"17:30:00",
"07:30:00",
"08:00:00",
nil,
nil],
"William Brown"=>
[nil,
nil,
"15:30:00",
"18:00:00",
"15:30:00",
"18:00:00",
"15:30:00",
"18:00:00",
"15:30:00",
"18:00:00",
"15:30:00",
"18:00:00",
nil,
nil],
"Ramielle Ford"=>
[nil,
nil,
nil,
nil,
"15:30:00",
"18:00:00",
"15:30:00",
"18:00:00",
"15:30:00",
"18:00:00",
nil,
nil,
nil,
nil],
"Christopher Lampkins"=>
[nil,
nil,
"15:30:00",
"17:23:00",
"15:30:00",
"18:00:00",
"15:30:00",
"18:00:00",
"15:30:00",
"18:00:00",
"15:30:00",
"18:00:00",
nil,
nil]}