class Support::Sites::Schools::Freshdesk::CompaniesController < Support::Sites::Controller
  def index
    render_success :ok, json: freshdesk_service.search['companies'].map { |c| props(c) }
  end

  def create
    response = freshdesk_service.create
    if school.update(support_id: response['id'])
      render_success :ok, json: { support_id: response['id'] }
    else
      render_error :unprocessable_entity, errors: response[:error]
    end
  end

  private
    def school
      @school ||= School.find_by(id: params[:school_id])
    end

    def linked_company_ids
      @linked_company_ids ||= School.where.not(support_id: 0).pluck(:support_id)
    end

    def freshdesk_service
      ::Freshdesk::CompanyService.new(school)
    end

    def props(company)
      {
        id: company['id'],
        name: company['name'],
        linked: linked_company_ids.include?(company['id'])
      }
    end
end
