aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVlatka Pavisic2017-02-07 15:33:59 +0100
committerVlatka Pavisic2017-02-07 15:34:06 +0100
commita16843aa295eac2baa1e6d26ab6a5c4d0ee97c2b (patch)
treedb78f86b453d0bd107ceac93ed05e9019ac2bd52
parent9814d97e64b5b483ceb9d1a2f8fecc8a8da975be (diff)
downloadchouette-core-a16843aa295eac2baa1e6d26ab6a5c4d0ee97c2b.tar.bz2
Refs #2542 : Referential logic concern
-rw-r--r--app/controllers/autocomplete_stop_areas_controller.rb10
-rw-r--r--app/controllers/autocomplete_time_tables_controller.rb10
-rw-r--r--app/controllers/autocomplete_timebands_controller.rb10
-rw-r--r--app/controllers/chouette_controller.rb15
-rw-r--r--app/controllers/concerns/referential_support.rb32
5 files changed, 36 insertions, 41 deletions
diff --git a/app/controllers/autocomplete_stop_areas_controller.rb b/app/controllers/autocomplete_stop_areas_controller.rb
index 19863231f..78b4247ec 100644
--- a/app/controllers/autocomplete_stop_areas_controller.rb
+++ b/app/controllers/autocomplete_stop_areas_controller.rb
@@ -1,15 +1,7 @@
class AutocompleteStopAreasController < InheritedResources::Base
respond_to :json, :only => [:index, :children, :parent, :physicals]
- before_action :switch_referential
-
- def switch_referential
- Apartment::Tenant.switch!(referential.slug)
- end
-
- def referential
- @referential ||= current_organisation.referentials.find params[:referential_id]
- end
+ include ReferentialSupport
def around
stop_area = referential.stop_areas.find params[:id]
diff --git a/app/controllers/autocomplete_time_tables_controller.rb b/app/controllers/autocomplete_time_tables_controller.rb
index ee0f8a0cb..ce3824b7a 100644
--- a/app/controllers/autocomplete_time_tables_controller.rb
+++ b/app/controllers/autocomplete_time_tables_controller.rb
@@ -1,15 +1,7 @@
class AutocompleteTimeTablesController < InheritedResources::Base
respond_to :json, :only => [:index]
- before_action :switch_referential
-
- def switch_referential
- Apartment::Tenant.switch!(referential.slug)
- end
-
- def referential
- @referential ||= current_organisation.referentials.find params[:referential_id]
- end
+ include ReferentialSupport
protected
diff --git a/app/controllers/autocomplete_timebands_controller.rb b/app/controllers/autocomplete_timebands_controller.rb
index 3915bd69f..4922e214c 100644
--- a/app/controllers/autocomplete_timebands_controller.rb
+++ b/app/controllers/autocomplete_timebands_controller.rb
@@ -1,15 +1,7 @@
class AutocompleteTimebandsController < InheritedResources::Base
respond_to :json, :only => [:index]
- before_action :switch_referential
-
- def switch_referential
- Apartment::Tenant.switch!(referential.slug)
- end
-
- def referential
- @referential ||= current_organisation.referentials.find params[:referential_id]
- end
+ include ReferentialSupport
protected
diff --git a/app/controllers/chouette_controller.rb b/app/controllers/chouette_controller.rb
index dd1002fd8..dc9ab4fa5 100644
--- a/app/controllers/chouette_controller.rb
+++ b/app/controllers/chouette_controller.rb
@@ -2,18 +2,5 @@ class ChouetteController < BreadcrumbController
include ApplicationHelper
include BreadcrumbHelper
-
- before_action :switch_referential
-
- def switch_referential
- Apartment::Tenant.switch!(referential.slug)
- end
-
- def referential
- @referential ||= Referential.find params[:referential_id]
- end
-
- alias_method :current_referential, :referential
- helper_method :current_referential
-
+ include ReferentialSupport
end
diff --git a/app/controllers/concerns/referential_support.rb b/app/controllers/concerns/referential_support.rb
new file mode 100644
index 000000000..34080d991
--- /dev/null
+++ b/app/controllers/concerns/referential_support.rb
@@ -0,0 +1,32 @@
+module ReferentialSupport
+ extend ActiveSupport::Concern
+
+ included do
+ before_action :switch_referential
+ alias_method :current_referential, :referential
+ helper_method :current_referential
+ end
+
+ def switch_referential
+ Apartment::Tenant.switch!(referential.slug)
+ end
+
+ def referential
+ @referential ||= find_referential
+ end
+
+ def find_referential
+ organisation_referential = current_organisation.referentials.find_by id: params[:referential_id]
+ return organisation_referential if organisation_referential
+
+ current_organisation.workbenches.each do |workbench|
+ workbench_referential = workbench.all_referentials.find_by id: params[:referential_id]
+ return workbench_referential if workbench_referential
+ end
+
+ raise ActiveRecord::RecordNotFound
+ end
+end
+
+
+