class Support::Sites::ConnectionLogsController < Support::Sites::Controller
  include DateRangeHelper

  def index
    data = logs
      .includes(:associated)
      .by_date_range(datetime_range(params[:date_range]))
    
    render_success :ok, json: {
      logs: data.map { |l| populate(l) },
      areas: areas.uniq,
      services: services.uniq
    }
  end

  private
    def logs
      @logs ||= ConnectionLog.all
    end

    def areas
      @areas ||= Array.new
    end

    def services
      @services ||= Array.new
    end

    def populate(log)
      areas << log.area.titleize
      services << log.service.titleize
      return props(log)
    end

    def props(log)
      {
        id: log.id,
        school_id: log.school_id,
        associated_id: log.associated_id,
        associated_type: log.associated_type,
        associated_name: log.decorate.associated_name,
        area: log.area.titleize,
        service: log.service.titleize,
        http_method: log.http_method.titleize,
        status_code: log.status_code,
        endpoint: log.endpoint,
        response: log.response,
        payload: log.payload,
        created_at: log.created_at
      }
    end
end
