class Support::Sites::Schools::EdFiErrorsController < Support::Sites::Controller
  def index
    render_success :ok, json: logs.map { |l| log_props(l) }.compact
  end

  def show
    render_success :ok, json: log_props(school.ed_fi_logs.find_by(id: params[:id]))
  end

  def batch_destroy
    if school.ed_fi_logs.where(id: params[:ids]).each(&:destroy)
      render_success :ok
    else
      render_error :unprocessable_entity
    end
  end

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

    def logs
      @logs ||= school.ed_fi_logs
        .by_endpoints(params[:types])
        .by_school_year(params[:school_year])
        .where.not(status_code: nil)
        .where('status_code < 500')
        .ordered
    end

    def log_props(log)
      {}.tap do |props|
        props[:id] = log.id
        props[:type] = log.associated_type
        props[:endpoint] = log.endpoint
        props[:response] = log.response
        return props if action_name.to_sym != :show

        props[:json] = JSON.parse(log.json)
      end
    end
end
