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