|
|
|
class SearchComponent < ViewComponent::Base
|
|
|
|
attr_reader :current_user, :search_label, :value
|
|
|
|
|
|
|
|
def initialize(current_user:, search_label:, value: nil)
|
|
|
|
@current_user = current_user
|
|
|
|
@search_label = search_label
|
|
|
|
@value = value
|
|
|
|
super
|
|
|
|
end
|
|
|
|
|
|
|
|
def path(current_user)
|
|
|
|
return request.path if matching_path_conditions?
|
|
|
|
|
|
|
|
if request.path.include?("users")
|
|
|
|
user_path(current_user)
|
|
|
|
elsif request.path.include?("organisations")
|
|
|
|
organisations_path
|
|
|
|
elsif request.path.include?("sales-logs")
|
|
|
|
sales_logs_path
|
|
|
|
elsif request.path.include?("logs")
|
|
|
|
lettings_logs_path
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def user_path(current_user)
|
|
|
|
current_user.support? ? users_path : users_organisation_path(current_user.organisation)
|
|
|
|
end
|
|
|
|
|
|
|
|
def matching_path_conditions?
|
|
|
|
[
|
|
|
|
%r{organisations/\d+/users},
|
|
|
|
%r{organisations/\d+/lettings-logs},
|
|
|
|
%r{organisations/\d+/sales-logs},
|
|
|
|
%r{organisations/\d+/schemes},
|
|
|
|
%r{organisations/\d+/stock-owners},
|
|
|
|
%r{organisations/\d+/managing-agents},
|
|
|
|
%r{sales-logs/bulk-uploads},
|
|
|
|
%r{lettings-logs/bulk-uploads},
|
|
|
|
].any? { |pattern| request.path.match?(pattern) }
|
|
|
|
end
|
|
|
|
end
|