def search
@databaseName = Database.find_first.currentDatabaseName
if request.post?
session[:search_term] = params[:post][:search_term].strip
if session[:contextobject] == 'Column' or !session[:contextobject]
session[:contextobject] = 'Database'
session[:contextid] = Database.find_by_database_nm(@databaseName).id
end
if session[:contextobject] == "Report" or session[:contextobject] == "ReportFolder"
session[:contextobject] = "ReportFolder"
session[:contextid] = ReportFolder.find_by_report_folder_nm('Reports').id
end
@search = Search.new(:search_term => session[:search_term],
:context_object_type => session[:contextobject], :context_object_id => session[:contextid])
@search.search_date = Time.now
@search.user_id = session[:user_id]
@search.save
end
add_to_sortable_columns('listing', :model => DwObject, :field => 'objectTitle', :alias => 'objectTitle')
add_to_sortable_columns('listing', :model => DwObject, :field => 'objectType', :alias => 'objectType')
add_to_sortable_columns('listing', :model => DwObject, :field => 'path', :alias => 'path')
unless session[:contextobject] == "Report" or session[:contextobject] == "ReportFolder"
@dw_object_pages, @dw_objects = paginate :dw_objects, :per_page => 10, :order => sortable_order('listing',
:model => DwObject,
:field => 'path',
:sort_direction => :asc),
:conditions => "((cast(objectDesc as varchar(1000)) like
'%" + session[:search_term] + "%' or cast(objectTitle as varchar(1000)) like '%" +
session[:search_term] + "%')) and path is not null" + context_condition(session[:contextobject], session[:contextid]).to_s
else
@dw_object_pages, @dw_objects = paginate :dw_objects, :per_page => 10, :order => sortable_order('listing',
:model => DwObject,
:field => 'objectTitle',
:sort_direction => :asc),
:conditions => "objectType = 'Report' and (cast(objectDesc as varchar(1000)) like
'%" + session[:search_term] + "%' or cast(objectTitle as varchar(1000)) like '%" +
session[:search_term] + "%')"
@dw_objects.each { |r| r.path = Report.find(r.dw_object_id).path }
end
@count = @dw_object_pages.item_count
render :layout => 'simple'
end