class CompaniesController < ApplicationController before_filter :authorize, :except => [:index, :search, :auto_complete_for_company_name, :show_address, :hide_address] auto_complete_for :company, :name def index @paginator, @companies = paginate :company, :per_page => 10, :order => 'name' @page_title = "List of Companies" end def search name = params[:company][:name] if name and name.length > 0 @paginator, @companies = paginate :company, :per_page => 10, :order => 'name', :conditions => ["UCASE(name) like UCASE(?)", prep_for_like(name)] @page_title = "List of companies with names that contain '#{name}'" render :action => 'index' else redirect_to :action => 'index' end end def confirm @company = Company.find(params[:id]) prompt = "Do you really want to delete #{@company.name}?" confirm_delete(@company, prompt) end def delete @company = Company.find(params[:id]) do_delete(@company) end def new @page_title = 'Add a new company' @company = Company.new @address = Address.new end def create @company = Company.new(params[:company]) @company.address = Address.from_street_1_and_post_code(params[:address]) # @company.address might be nil, so set a sensible default if it is @address = @company.address || Address.new if @company.save redirect_to_index 'Company added successfully' else @page_title = 'Add a new company' render :action => :new end end def edit @company = Company.find(params[:id]) @page_title = 'Editing ' + @company.name @address = @company.address end def update @company = Company.find(params[:id]) @company.address = Address.from_street_1_and_post_code(params[:address]) @address = @company.address || Address.new if @company.update_attributes(params[:company]) redirect_to_index 'Person updated successfully' else @page_title = 'Editing ' + @company.name render :action => 'edit' end end def show_address @address = Company.find(params[:id].delete("address_for_company_")).address render :partial => 'addresses/show', :locals => {:address => @address} end def hide_address render :text => " " end def show_update_telephone @company = Company.find(params[:id]) render :partial => 'update_telephone', :locals => {:company => @company} end def update_telephone @company = Company.find(params[:id]) @company.telephone = params[:telephone] @company.save render :text => @company.telephone end end