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