Forked from
Digital Experience Group / UNL Resource Scheduler
100 commits behind the upstream repository.
-
Tyler Lemburg authoredTyler Lemburg authored
resources.rb 3.64 KiB
require 'models/resource'
require 'models/permission'
before '/:service_space_url_name/admin/resources*' do
unless @user.has_permission?(Permission::MANAGE_RESOURCES, @space)
raise Sinatra::NotFound
end
end
get '/:service_space_url_name/admin/resources/?' do
@breadcrumbs << {:text => 'Admin Resources'}
resources = Resource.where(:service_space_id => @space.id).order(:name).all
erb :'admin/resources', :layout => :fixed, :locals => {
:resources => resources
}
end
get '/:service_space_url_name/admin/resources/create/?' do
@breadcrumbs << {:text => 'Admin Resources', :href => @space.admin_resources_href} << {:text => 'Create Resource'}
erb :'admin/edit_resource', :layout => :fixed, :locals => {
:resource => Resource.new
}
end
post '/:service_space_url_name/admin/resources/create/?' do
resource = Resource.new
resource.name = params[:name]
resource.description = params[:description]
resource.service_space_id = @space.id
resource.needs_authorization = true
resource.is_reservable = params.checked?('is_reservable')
resource.time_slot_type = params[:time_slot_type]
resource.minutes_per_reservation = params[:minutes_per_reservation]
resource.min_minutes_per_reservation = params[:min_minutes_per_reservation]
resource.max_minutes_per_reservation = params[:max_minutes_per_reservation]
resource.increment_minutes_per_reservation = params[:increment_minutes_per_reservation]
resource.needs_approval = false
resource.needs_authorization = false
resource.max_reservations_per_slot = 5
resource.save
flash(:success, 'Resource Created', "Your resource #{resource.name} has been created.")
redirect @space.admin_resources_href
end
get '/:service_space_url_name/admin/resources/:resource_id/edit/?' do
@breadcrumbs << {:text => 'Admin Resources', :href => @space.admin_resources_href} << {:text => 'Edit Resource'}
# check that this is a valid resource
resource = Resource.find_by(:id => params[:resource_id], :service_space_id => @space.id)
if resource.nil?
flash(:alert, 'Not Found', 'That resource does not exist.')
redirect @space.admin_resources_href
end
erb :'admin/edit_resource', :layout => :fixed, :locals => {
:resource => resource
}
end
post '/:service_space_url_name/admin/resources/:resource_id/edit/?' do
# check that this is a valid resource
resource = Resource.find_by(:id => params[:resource_id], :service_space_id => @space.id)
if resource.nil?
flash(:alert, 'Not Found', 'That resource does not exist.')
redirect @space.admin_resources_href
end
resource.name = params[:name]
resource.description = params[:description]
resource.is_reservable = params.checked?('is_reservable')
resource.time_slot_type = params[:time_slot_type]
resource.minutes_per_reservation = params[:minutes_per_reservation]
resource.min_minutes_per_reservation = params[:min_minutes_per_reservation]
resource.max_minutes_per_reservation = params[:max_minutes_per_reservation]
resource.increment_minutes_per_reservation = params[:increment_minutes_per_reservation]
resource.save
flash(:success, 'Resource Updated', "Your resource #{resource.name} has been updated.")
redirect @space.admin_resources_href
end
post '/:service_space_url_name/admin/resources/:resource_id/delete/?' do
# check that this is a valid resource
resource = Resource.find_by(:id => params[:resource_id], :service_space_id => @space.id)
if resource.nil?
flash(:alert, 'Not Found', 'That resource does not exist.')
redirect @space.admin_resources_href
end
resource.destroy
flash(:success, 'Resource Deleted', "Your resource #{resource.name} has been deleted. All reservations and permissions on this resource have also been removed.")
redirect @space.admin_resources_href
end