class Employee::AddressBook::CompaniesController < Employee::Controller
  def index
    render_success :ok, json: companies.map { |company| company_props(company) }
  end

  def show
    render_success :ok, json: company_props(company)
  end

  def update
    if company.update(company_params)
      render_success :ok, json: company_props(company)
    else
      render_error :unprocessable_entity, errors: company
    end
  end

  private
    def companies
      current_school.companies
    end

    def company
      @company ||= companies.find_by(id: params[:id])
    end

    def company_params
      params.permit(
        :phone,
        :fax,
        :location_address,
        :location_address_ext,
        :location_city,
        :location_zip,
        :location_state,
        :location_country,
        :mailing_address,
        :mailing_address_ext,
        :mailing_city,
        :mailing_state,
        :mailing_zip,
        :mailing_country,
        :billing_address,
        :billing_address_ext,
        :billing_city,
        :billing_state,
        :billing_zip,
        :billing_country,
        :contact_email,
        :billing_email
      )
    end

    def company_props(company)
      {
        id: company.id,
        name: company.name,
        abbreviation: company.abbreviation,
        location_address: company.location_address,
        location_address_ext: company.location_address_ext,
        location_city: company.location_city,
        location_state: company.location_state,
        location_zip: company.location_zip,
        location_country: company.location_country,
        mailing_address: company.mailing_address,
        mailing_address_ext: company.mailing_address_ext,
        mailing_city: company.mailing_city,
        mailing_state: company.mailing_state,
        mailing_zip: company.mailing_zip,
        mailing_country: company.mailing_country,
        billing_address: company.billing_address,
        billing_address_ext: company.billing_address_ext,
        billing_city: company.billing_city,
        billing_state: company.billing_state,
        billing_zip: company.billing_zip,
        billing_country: company.billing_country,
        phone: company.phone,
        fax: company.fax,
        website: company.website,
        contact_email: company.contact_email,
        billing_email: company.billing_email
      }
    end
end
