Sha256: e6e0633f93cc582893cd2d9839e400e47bf1f6e1ab1bc99870507c0f9629d1a8

Contents?: true

Size: 1.62 KB

Versions: 2

Compression:

Stored size: 1.62 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, :last_run_at, :next_run_at, :job_klass, :run_time], :additional_values => {:scheduled => (tracker.scheduled?)}) }}
        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-3.1.5 app/controllers/erp_app/desktop/job_tracker/base_controller.rb
erp_app-3.1.4 app/controllers/erp_app/desktop/job_tracker/base_controller.rb