app/controllers/buildings_controller.rb
class BuildingsController < ApplicationController
helper_method :filter_rooms
helper_method :filter_by_capacity
helper_method :filter_by_roomtype_1
helper_method :filter_by_roomtype_2
helper_method :filter_by_roomtype_3
def index
end
def filter
ret = []
Building.all.includes(:room).each do |b|
rooms = filter_rooms(b.room)
next if rooms.empty?
ret << ({
id: b.id, name: b.name,
geo: b.geo, # {lat: b.lat, lng: b.lng}
count: rooms.count,
max: rooms.maximum(:capacity)
})
end
render json: ret
end
def search
end
def session_helper_user_id
session[:user_id]
end
def show
if session_helper_user_id == nil
flash[:alert] = "Please log in."
redirect_to buildings_path
return
end
@rooms = filter_rooms
building_id = params[:id]
@building = Building.find_by_id(building_id)
if @building.blank?
flash[:notice] = "This building does not exist."
redirect_to buildings_path
end
@rooms = @rooms.where(:building_id => building_id).sort_by {|room| room.number.to_i}
@rooms.each do |room|
if room.misc == nil then room.misc = "N/A" end
if room.facilities == nil then room.facilities = "N/A" end
end
end
def filter_rooms(rooms = Room.all)
if params[:StudentAccessible]
rooms = rooms.where("UPPER(facilities) LIKE '%ADA-STUDENT%'")
end
if params[:Board]
rooms = rooms.where("UPPER(facilities) LIKE '%BOARD%'")
end
if params[:AV]
rooms = rooms.where("UPPER(facilities) LIKE '%AV%'")
end
rooms = filter_by_roomtype_1(rooms)
rooms = filter_by_roomtype_2(rooms)
rooms = filter_by_roomtype_3(rooms)
filter_by_capacity(rooms)
end
def filter_by_roomtype_1(rooms)
unless params[:Classroom]
rooms = rooms.where("UPPER(misc) NOT LIKE '%CLASSROOM%'")
end
unless params[:LectureHall]
rooms = rooms.where("UPPER(misc) NOT LIKE '%LECTURE%'")
end
rooms
end
def filter_by_roomtype_2(rooms)
unless params[:Auditorium]
rooms = rooms.where("UPPER(misc) NOT LIKE '%AUDITORIUM%'")
end
unless params[:SeminarRoom]
rooms = rooms.where("UPPER(misc) NOT LIKE '%SEMINAR%'")
end
rooms
end
def filter_by_roomtype_3(rooms)
unless params[:OtherRooms]
rooms = rooms.where("UPPER(misc) LIKE '%CLASSROOM%'
OR UPPER(misc) LIKE '%LECTURE HALL%'
OR UPPER(misc) LIKE '%AUDITORIUM%'
OR UPPER(misc) LIKE '%SEMINAR ROOM%'")
end
rooms
end
def filter_by_capacity(rooms)
if params[:capacityLower]
rooms = rooms.where("capacity >= ?", params[:capacityLower].to_i)
end
if params[:capacityUpper]
rooms = rooms.where("capacity <= ?", params[:capacityUpper].to_i)
end
rooms
end
end