1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
class Workbench < ActiveRecord::Base
DEFAULT_WORKBENCH_NAME = "Gestion de l'offre"
include ObjectidFormatterSupport
belongs_to :organisation
belongs_to :line_referential
belongs_to :stop_area_referential
belongs_to :output, class_name: 'ReferentialSuite'
belongs_to :workgroup
has_many :lines, -> (workbench) { Stif::MyWorkbenchScopes.new(workbench).line_scope(self) }, through: :line_referential
has_many :networks, through: :line_referential
has_many :companies, through: :line_referential
has_many :group_of_lines, through: :line_referential
has_many :stop_areas, through: :stop_area_referential
has_many :imports
has_many :workbench_imports
has_many :compliance_check_sets
has_many :compliance_control_sets
has_many :merges
validates :name, presence: true
validates :organisation, presence: true
validates :output, presence: true
has_many :referentials
has_many :referential_metadatas, through: :referentials, source: :metadatas
before_validation :initialize_output
def all_referentials
if line_ids.empty?
Referential.none
else
workgroup
.referentials
.joins(:metadatas)
.where(['referential_metadata.line_ids && ARRAY[?]::bigint[]', line_ids])
.ready
.not_in_referential_suite
end
end
def calendars
workgroup.calendars.where('(organisation_id = ? OR shared = ?)', organisation.id, true)
end
def self.default
self.last if self.count == 1
where(name: DEFAULT_WORKBENCH_NAME).last
end
private
def initialize_output
# Don't reset `output` if it's already initialised
return if !output.nil?
self.output = ReferentialSuite.create
end
end
|