QutBioacoustics/baw-server

View on GitHub
app/controllers/admin/analysis_jobs_controller.rb

Summary

Maintainability
A
1 hr
Test Coverage
# frozen_string_literal: true

module Admin
  class AnalysisJobsController < BaseController
    # GET /admin/analysis_jobs
    def index
      page = paging_params[:page].blank? ? 1 : paging_params[:page].to_i
      order_by = paging_params[:order_by].blank? ? :id : paging_params[:order_by].to_s.to_sym
      order_dir = paging_params[:order_dir].blank? ? :desc : paging_params[:order_dir].to_s.to_sym

      commit = (paging_params[:commit].blank? ? 'filter' : paging_params[:commit]).to_s

      unless [:id, :name, :started_at, :overall_status, :overall_status_modified_at].include?(order_by)
        raise 'Invalid order by.'
      end
      raise 'Invalid order dir.' unless [:asc, :desc].include?(order_dir)

      redirect_to admin_analysis_jobs_path if commit.downcase == 'clear'

      @analysis_jobs_info = {
        order_by: order_by,
        order_dir: order_dir
      }

      query = AnalysisJob.includes(:script, :creator).all
      @analysis_jobs = query.order(order_by => order_dir).page(page)
    end

    # GET /admin/analysis_jobs/:id
    def show
      @analysis_job = AnalysisJob.find(params[:id])
    end

    private

    def paging_params
      params.permit(:page, :order_by, :order_dir)
    end
  end
end