Skip to content
Snippets Groups Projects
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