aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/purchase_windows_controller.rb
diff options
context:
space:
mode:
authorLuc Donnet2017-12-21 14:50:08 +0100
committerGitHub2017-12-21 14:50:08 +0100
commit7aec5b94868bc2e7473f7ded4be7a585fb7b174e (patch)
tree80218bcbec4d2740f6ca5be1d37bb0ba493cc879 /app/controllers/purchase_windows_controller.rb
parent9050a68f40829fc1b08e2f60c3eea9cf0c76e879 (diff)
parent610a3e133b6405b32ce5d8aa48be075d4b137b4f (diff)
downloadchouette-core-7aec5b94868bc2e7473f7ded4be7a585fb7b174e.tar.bz2
Merge pull request #150 from af83/5301-add_business_calendars
Refs #5301 First draft for Business Calendars
Diffstat (limited to 'app/controllers/purchase_windows_controller.rb')
-rw-r--r--app/controllers/purchase_windows_controller.rb58
1 files changed, 58 insertions, 0 deletions
diff --git a/app/controllers/purchase_windows_controller.rb b/app/controllers/purchase_windows_controller.rb
new file mode 100644
index 000000000..a70535150
--- /dev/null
+++ b/app/controllers/purchase_windows_controller.rb
@@ -0,0 +1,58 @@
+class PurchaseWindowsController < ChouetteController
+ include ReferentialSupport
+ include RansackDateFilter
+ include PolicyChecker
+ before_action :ransack_contains_date, only: [:index]
+ defaults :resource_class => Chouette::PurchaseWindow, collection_name: 'purchase_windows', instance_name: 'purchase_window'
+ belongs_to :referential
+
+ def index
+ index! do
+ scope = self.ransack_period_range(scope: @purchase_windows, error_message: t('compliance_check_sets.filters.error_period_filter'), query: :overlapping)
+ @q = scope.ransack(params[:q])
+ @purchase_windows = decorate_purchase_windows(@q.result.paginate(page: params[:page], per_page: 30))
+ end
+ end
+
+ def show
+ show! do
+ @purchase_window = @purchase_window.decorate(context: {
+ referential: @referential
+ })
+ end
+ end
+
+ protected
+
+ def create_resource(purchase_window)
+ purchase_window.referential = @referential
+ super
+ end
+
+ private
+
+ def purchase_window_params
+ params.require(:purchase_window).permit(:id, :name, :color, :referential_id, periods_attributes: [:id, :begin, :end, :_destroy])
+ end
+
+ def decorate_purchase_windows(purchase_windows)
+ ModelDecorator.decorate(
+ purchase_windows,
+ with: PurchaseWindowDecorator,
+ context: {
+ referential: @referential
+ }
+ )
+ end
+
+ def ransack_contains_date
+ date =[]
+ if params[:q] && !params[:q]['date_ranges(1i)'].empty?
+ ['date_ranges(1i)', 'date_ranges(2i)', 'date_ranges(3i)'].each do |key|
+ date << params[:q][key].to_i
+ params[:q].delete(key)
+ end
+ params[:q]['date_ranges'] = Date.new(*date) rescue nil
+ end
+ end
+end