Sha256: d8a36a5314a368e447fe272d08537b8c3b5602f87ce953c74492b55716f1968f

Contents?: true

Size: 1.84 KB

Versions: 2

Compression:

Stored size: 1.84 KB

Contents

module ErpApp
  module Desktop
    module JobTracker
      class BaseController < ::ErpApp::Desktop::BaseController

        def jobs
          sort_hash = params[:sort].blank? ? {} : Hash.symbolize_keys(JSON.parse(params[:sort]).first)
          sort = sort_hash[:property] || 'id'
          dir = sort_hash[:direction] || 'ASC'
          limit = params[:limit] || 15
          start = params[:start] || 0

          job_trackers = ::JobTracker.order("#{sort} #{dir}").offset(start).limit(limit).all
          total_count = ::JobTracker.count(:id)

          render :json => {:total_count => total_count, :success => true,
                           :jobs => job_trackers.collect { |tracker| tracker.to_hash(
                               :only => [:id, :job_name, :job_klass, :run_time],
                               :scheduled => (tracker.scheduled?),
                               :last_run_at => (tracker.last_run_at.nil? ? '' : tracker.last_run_at.utc),
                               :next_run_at => (tracker.next_run_at.nil? ? '' : tracker.next_run_at.utc),
                           ) }}
        end

        def schedule
          job_tracker = ::JobTracker.find(params[:id])

          job = job_tracker.tracked_job
          unless job
            job_tracker.job_klass.constantize.schedule_job(Time.now)
            job_tracker.next_run_at = job_tracker.tracked_job.run_at
            job_tracker.save
          end

          render :json => {:success => true}
        end

        def unschedule
          job_tracker = ::JobTracker.find(params[:id])

          job = job_tracker.tracked_job
          job.destroy unless job.nil?

          job_tracker.next_run_at = nil
          job_tracker.save

          render :json => {:success => true}
        end

      end
    end #JobTracker
  end #Desktop
end #ErpApp

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
erp_app-4.2.0 app/controllers/erp_app/desktop/job_tracker/base_controller.rb
erp_app-4.0.0 app/controllers/erp_app/desktop/job_tracker/base_controller.rb