Sha256: d2521cbc8ed7c4905b24d4555fdd82b801341362f85f87bb6479603994f99888
Contents?: true
Size: 1.22 KB
Versions: 1
Compression:
Stored size: 1.22 KB
Contents
# Assigns rooms, based on user_favorite popularily # # Usage: rails runner assign_rooms.rb class RoomAllocator LARGE_ROOMS = ["B202/203", "B302/303"] SMALL_ROOMS = ["B201", "B204", "B301", "B304"] def initialize @current_event = OpenConferenceWare::Event.current @sessions = @current_event.proposals.confirmed.scheduled.sort_by{|s| s.user_favorites.count }.reverse @rooms = (LARGE_ROOMS + SMALL_ROOMS).map{|rn| @current_event.rooms.find_by_name(rn) } end def room_available_at?(room, start_time) @sessions.select{|s| s.start_time == start_time}.all?{|s| s.room != room} end def allocate_rooms @sessions.each do |session| next if session.room.present? first_available_room = @rooms.find{|room| room_available_at?(room, session.start_time)} if first_available_room.present? puts "[#{session.user_favorites.count}] Assigned #{session.title} to #{first_available_room.name}" session.room = first_available_room else puts "[!!] Could not find a room assignment for #{session.title}" end end puts "---" puts "Accept room assignments? (y/n)" if gets.chomp == "y" @sessions.each{|s| s.save!} end end end RoomAllocator.new.allocate_rooms
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
open_conference_ware-1.0.0.pre4 | util/assign_rooms.rb |