aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/imports_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/imports_controller.rb')
-rw-r--r--app/controllers/imports_controller.rb47
1 files changed, 38 insertions, 9 deletions
diff --git a/app/controllers/imports_controller.rb b/app/controllers/imports_controller.rb
index 97a8f91aa..fa8919f20 100644
--- a/app/controllers/imports_controller.rb
+++ b/app/controllers/imports_controller.rb
@@ -1,7 +1,8 @@
class ImportsController < BreadcrumbController
skip_before_action :authenticate_user!, only: [:download]
defaults resource_class: Import, collection_name: 'imports', instance_name: 'import'
- before_action :ransack_started_on_date, only: [:index]
+ before_action :ransack_started_at_params, only: [:index]
+ before_action :ransack_status_params, only: [:index]
respond_to :html
belongs_to :workbench
@@ -45,7 +46,10 @@ class ImportsController < BreadcrumbController
protected
def collection
- @q = parent.imports.where(type: "WorkbenchImport").search(params[:q])
+ scope = parent.imports.where(type: "WorkbenchImport")
+ scope = ransack_period scope
+
+ @q = scope.search(params[:q])
if sort_column && sort_direction
@imports ||= @q.result(distinct: true).order(sort_column + ' ' + sort_direction).paginate(page: params[:page], per_page: 10)
@@ -56,14 +60,39 @@ class ImportsController < BreadcrumbController
private
- def ransack_started_on_date
- date =[]
- if params[:q] && !params[:q]['started_on_date(1i)'].empty?
- ['started_on_date(1i)', 'started_on_date(2i)', 'started_on_date(3i)'].each do |key|
- date << params[:q][key].to_i
- params[:q].delete(key)
+ def ransack_started_at_params
+ start_date = []
+ end_date = []
+
+ if params[:q] && params[:q][:started_at] && !params[:q][:started_at].has_value?(nil) && !params[:q][:started_at].has_value?("")
+ [1, 2, 3].each do |key|
+ start_date << params[:q][:started_at]["begin(#{key}i)"].to_i
+ end_date << params[:q][:started_at]["end(#{key}i)"].to_i
end
- params[:q]['started_on_date'] = DateTime.new(*date) rescue nil
+ params[:q].delete([:started_at])
+ @begin_range = DateTime.new(*start_date,0,0,0) rescue nil
+ @end_range = DateTime.new(*end_date,23,59,59) rescue nil
+ end
+ end
+
+ # Fake ransack filter
+ def ransack_period scope
+ return scope unless !!@begin_range && !!@end_range
+
+ if @begin_range > @end_range
+ flash.now[:error] = t('imports.filters.error_period_filter')
+ else
+ scope = scope.where_started_at_between(@begin_range, @end_range)
+ end
+ scope
+ end
+
+ def ransack_status_params
+ if params[:q]
+ binding.pry
+ return params[:q].delete(:status_eq_any) if params[:q][:status_eq_any].empty? || ( (Import.status.values & params[:q][:status_eq_any]).length >= 4 )
+ params[:q][:status_eq_any].push("new", "running") if params[:q][:status_eq_any].include?("pending")
+ params[:q][:status_eq_any].push("aborted", "canceled") if params[:q][:status_eq_any].include?("failed")
end
end