182 lines
5.4 KiB
Ruby
182 lines
5.4 KiB
Ruby
class Admin::PropertyHiresController < OrbitAdminController
|
|
|
|
def index
|
|
@tags = @module_app.tags
|
|
@categories = @module_app.categories.enabled
|
|
@filter_fields = filter_fields(@categories, @tags)
|
|
@table_fields = ["property_hire.title", :category, "property_hire.location", "property_hire.available_for_hire"]
|
|
|
|
@properties = Property.where(:title.ne => "")
|
|
.order_by(sort)
|
|
.with_categories(filters("category"))
|
|
.with_tags(filters("tag"))
|
|
|
|
@properties = search_data(@properties,[:title]).page(params[:page]).per(10)
|
|
end
|
|
|
|
def my_bookings
|
|
@table_fields = ["property_hire.hiring_person_name", "property_hire.reason_for_hire", "property_hire.hiring_person_number", "property_hire.period", "property_hire.passed", :actions]
|
|
@bookings = PHire.where(:hiring_person_id => current_user.member_profile.id.to_s).desc(:created_at).page(params[:page]).per(10)
|
|
end
|
|
|
|
def new
|
|
@property = Property.new
|
|
@locations = PropertyLocation.all.desc(:created_at).collect{|loc| [loc.title, loc.id.to_s]}
|
|
@locations << ["Other", "other_location"]
|
|
end
|
|
|
|
def edit
|
|
@property = Property.where(:uid => params[:id].split("-").last).first rescue nil
|
|
@locations = PropertyLocation.all.desc(:created_at).collect{|loc| [loc.title, loc.id.to_s]}
|
|
@locations << ["Other", "other_location"]
|
|
end
|
|
|
|
def show
|
|
@table_fields = ["property_hire.hiring_person_name", "property_hire.reason_for_hire", "property_hire.hiring_person_number", "property_hire.period", "property_hire.passed", :actions]
|
|
@property = Property.where(:uid => params[:id].split("-").last).first rescue nil
|
|
@bookings = @property.p_hires.desc(:created_at).page(params[:page]).per(10)
|
|
end
|
|
|
|
def destroy
|
|
property = Property.find(params[:id]) rescue nil
|
|
property.destroy if !property.nil?
|
|
if params[:page]
|
|
redirect_to admin_property_hires_path(:page => params[:page])
|
|
else
|
|
redirect_to admin_property_hires_path
|
|
end
|
|
end
|
|
|
|
def update
|
|
property = Property.where(:uid => params[:id].split("-").last).first rescue nil
|
|
redirect_to admin_property_hires_path and return if property.nil?
|
|
property.update_attributes(property_params)
|
|
if params[:page]
|
|
redirect_to admin_property_hires_path(:page => params[:page])
|
|
else
|
|
redirect_to admin_property_hires_path
|
|
end
|
|
end
|
|
|
|
def create
|
|
property = Property.new(property_params)
|
|
if property.save
|
|
redirect_to admin_property_hires_path
|
|
end
|
|
end
|
|
|
|
def show_booking_details
|
|
@booking = PHire.find(params[:id]) rescue nil
|
|
end
|
|
|
|
def settings
|
|
if PropertyHireSetting.count == 0
|
|
@settings = PropertyHireSetting.create
|
|
else
|
|
@settings = PropertyHireSetting.first
|
|
end
|
|
if request.request_method == "PATCH"
|
|
@settings.update_attributes(settings_params)
|
|
@settings.save
|
|
@saved = true
|
|
else
|
|
@saved = false
|
|
end
|
|
end
|
|
|
|
def delete_booking_details
|
|
booking = PHire.find(params[:id])
|
|
property = booking.property
|
|
booking.destroy
|
|
if request.referrer.split("/").last == "my_bookings"
|
|
redirect_to my_bookings_admin_property_hires_path
|
|
else
|
|
redirect_to admin_property_hire_path(property)
|
|
end
|
|
end
|
|
|
|
def pass_booking
|
|
phire = PHire.find(params[:id]) rescue nil
|
|
case params[:status]
|
|
when "accept"
|
|
phire.passed = true
|
|
when "reject"
|
|
phire.passed = false
|
|
end
|
|
phire.save
|
|
if params[:ref] == "index"
|
|
if params[:page]
|
|
redirect_to admin_property_hire_path(phire.property, :page => params[:page])
|
|
else
|
|
redirect_to admin_property_hire_path(phire.property)
|
|
end
|
|
else
|
|
redirect_to show_booking_details_admin_property_hire_path(phire)
|
|
end
|
|
end
|
|
|
|
def manage_locations
|
|
@table_fields = ["property_hire.location", "property_hire.property_count"]
|
|
@locations = PropertyLocation.all.desc(:created_at).page(params[:page]).per(10)
|
|
end
|
|
|
|
def add_location
|
|
@location = PropertyLocation.new
|
|
render :layout => false
|
|
end
|
|
|
|
def create_location
|
|
PropertyLocation.create(location_params)
|
|
redirect_to manage_locations_admin_property_hires_path
|
|
end
|
|
|
|
def edit_location
|
|
@location = PropertyLocation.find(params[:id])
|
|
render :layout => false
|
|
end
|
|
|
|
def update_location
|
|
location = PropertyLocation.find(params[:id]) rescue nil
|
|
if location.nil?
|
|
redirect_to manage_locations_admin_property_hires_path
|
|
else
|
|
location.update_attributes(location_params)
|
|
if params[:page]
|
|
redirect_to manage_locations_admin_property_hires_path(:page => params[:page])
|
|
else
|
|
redirect_to manage_locations_admin_property_hires_path
|
|
end
|
|
end
|
|
end
|
|
|
|
def destroy_location
|
|
location = PropertyLocation.find(params[:id]) rescue nil
|
|
if location.nil?
|
|
redirect_to manage_locations_admin_property_hires_path
|
|
else
|
|
location.destroy
|
|
if params[:page]
|
|
redirect_to manage_locations_admin_property_hires_path(:page => params[:page])
|
|
else
|
|
redirect_to manage_locations_admin_property_hires_path
|
|
end
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def settings_params
|
|
params.require(:property_hire_setting).permit!
|
|
end
|
|
|
|
def location_params
|
|
params.require(:property_location).permit!
|
|
end
|
|
|
|
def property_params
|
|
prop = params.require(:property).permit!
|
|
prop.delete(:property_location) if prop[:property_location] == "other"
|
|
prop
|
|
end
|
|
|
|
end |