# frozen_string_literal: true

require 'sinatra/json'

require_relative 'base_controller'
require_relative '../models/benchmark'
require_relative '../models/result'
require_relative '../models/test'

# /reports routes
class ReportsController < BaseController

  get '/report' do
    benchmarks = Benchmark.order(:name).all()
    tests = Test.order(:name).all()

    erb :'reports/index', locals: {
      title: 'Generate Reports',
      tests: tests,
      benchmarks: benchmarks
    }
  end

  post '/report' do
    report_type = params[:type]
    report_choice = params[:choice]
    report_compare = params[:compare]

    if report_type == 'benchmark'
      choice = Benchmark.where(id: report_choice).first().name
      names = []
      avg_results = []
      min_results = []

      report_compare.each do |c|
        tst = Test.where(id: c).first()
        names.push(tst.name)

        res = Result.where(benchmark_id: report_choice, test_id: c).first()
        avg_results.push(res.avg_score)
        min_results.push(res.min_score)
      end

      json({
        choice: choice,
        names: names,
        avg_results: avg_results,
        min_results: min_results
      })
    end
  end

end
