activefacts-examples 1.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (262) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rspec +1 -0
  4. data/.travis.yml +4 -0
  5. data/Gemfile +10 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +22 -0
  8. data/Rakefile +6 -0
  9. data/activefacts-examples.gemspec +26 -0
  10. data/cql/Address.cql +44 -0
  11. data/cql/Astronomy.cql +35 -0
  12. data/cql/Blog.cql +54 -0
  13. data/cql/CinemaBookings.cql +64 -0
  14. data/cql/CinemaTickets.cql +127 -0
  15. data/cql/CompanyDirectorEmployee.cql +56 -0
  16. data/cql/Death.cql +17 -0
  17. data/cql/Diplomacy.cql +48 -0
  18. data/cql/Genealogy.cql +98 -0
  19. data/cql/Health.cql +78 -0
  20. data/cql/Insurance.cql +320 -0
  21. data/cql/Marriage.cql +18 -0
  22. data/cql/Metamodel.cql +567 -0
  23. data/cql/Monogamy.cql +24 -0
  24. data/cql/MultiInheritance.cql +22 -0
  25. data/cql/MultipleSubtyping.cql +30 -0
  26. data/cql/NonRoleId.cql +14 -0
  27. data/cql/OddIdentifier.cql +18 -0
  28. data/cql/OilSupply.cql +53 -0
  29. data/cql/OneRoleNesting.cql +38 -0
  30. data/cql/OneToOnes.cql +17 -0
  31. data/cql/Orienteering.cql +111 -0
  32. data/cql/PartyModel.cql +38 -0
  33. data/cql/PersonPlaysGame.cql +18 -0
  34. data/cql/RedundantDependency.cql +34 -0
  35. data/cql/SchoolActivities.cql +33 -0
  36. data/cql/SeparateSubtype.cql +30 -0
  37. data/cql/ServiceDirector.cql +276 -0
  38. data/cql/SimplestUnary.cql +12 -0
  39. data/cql/Supervision.cql +34 -0
  40. data/cql/VenueSeating.cql +45 -0
  41. data/cql/WaiterTips.cql +33 -0
  42. data/cql/Warehousing.cql +101 -0
  43. data/cql/WindowInRoomInBldg.cql +28 -0
  44. data/cql/unit.cql +474 -0
  45. data/diagrams/json/Address.json +41 -0
  46. data/diagrams/json/Astronomy.json +31 -0
  47. data/diagrams/json/Blog.json +46 -0
  48. data/diagrams/json/CinemaBookings.json +53 -0
  49. data/diagrams/json/CinemaTickets.json +101 -0
  50. data/diagrams/json/CompanyDirectorEmployee.json +44 -0
  51. data/diagrams/json/Death.json +20 -0
  52. data/diagrams/json/Diplomacy.json +34 -0
  53. data/diagrams/json/Genealogy.json +78 -0
  54. data/diagrams/json/Insurance.json +259 -0
  55. data/diagrams/json/Marriage.json +21 -0
  56. data/diagrams/json/Metamodel.json +318 -0
  57. data/diagrams/json/Monogamy.json +22 -0
  58. data/diagrams/json/MultiInheritance.json +25 -0
  59. data/diagrams/json/MultipleSubtyping.json +22 -0
  60. data/diagrams/json/OilSupply.json +49 -0
  61. data/diagrams/json/OneRoleNesting.json +37 -0
  62. data/diagrams/json/Orienteering.json +94 -0
  63. data/diagrams/json/PersonPlaysGame.json +22 -0
  64. data/diagrams/json/RedundantDependency.json +33 -0
  65. data/diagrams/json/SchoolActivities.json +28 -0
  66. data/diagrams/json/SeparateSubtype.json +29 -0
  67. data/diagrams/json/SimplestUnary.json +15 -0
  68. data/diagrams/json/Supervision.json +27 -0
  69. data/diagrams/json/VenueSeating.json +40 -0
  70. data/diagrams/json/WaiterTips.json +29 -0
  71. data/diagrams/json/Warehousing.json +86 -0
  72. data/diagrams/json/WindowInRoomInBldg.json +31 -0
  73. data/images/Address.SQL.png +0 -0
  74. data/images/Address.png +0 -0
  75. data/images/Blog.png +0 -0
  76. data/images/CinemaBookings.png +0 -0
  77. data/images/CinemaTickets.png +0 -0
  78. data/images/CompanyDirectorEmployee.png +0 -0
  79. data/images/Death.png +0 -0
  80. data/images/Diplomacy.png +0 -0
  81. data/images/DumpMetamodel.bat +2 -0
  82. data/images/Genealogy.png +0 -0
  83. data/images/Insurance/Claim.png +0 -0
  84. data/images/Insurance/Insurance.png +0 -0
  85. data/images/Insurance/Person.png +0 -0
  86. data/images/Insurance/Policy.png +0 -0
  87. data/images/Insurance/Related.png +0 -0
  88. data/images/Insurance/VehicleIncident.png +0 -0
  89. data/images/Marriage.png +0 -0
  90. data/images/Metamodel/Concepts.png +0 -0
  91. data/images/Metamodel/Constraints.png +0 -0
  92. data/images/Metamodel/ContextNote.png +0 -0
  93. data/images/Metamodel/Diagrams.png +0 -0
  94. data/images/Metamodel/Language.png +0 -0
  95. data/images/Metamodel/Legacy.png +0 -0
  96. data/images/Metamodel/Objects.png +0 -0
  97. data/images/Metamodel/Populations.png +0 -0
  98. data/images/Metamodel/Query.png +0 -0
  99. data/images/Metamodel/Units.png +0 -0
  100. data/images/Metamodel/ValueConstraints.png +0 -0
  101. data/images/Metamodel/ValueTypes.png +0 -0
  102. data/images/MetamodelER.bcp +1 -0
  103. data/images/MetamodelER.pdf +0 -0
  104. data/images/MultiInheritance.png +0 -0
  105. data/images/NorthwindER.png +0 -0
  106. data/images/OilSupply.png +0 -0
  107. data/images/Orienteering/Administration.png +0 -0
  108. data/images/Orienteering/Registration.png +0 -0
  109. data/images/Orienteering/Scoring.png +0 -0
  110. data/images/PersonPlaysGame.png +0 -0
  111. data/images/RedundantDependency.png +0 -0
  112. data/images/SchoolActivities.png +0 -0
  113. data/images/SeparateSubtype.png +0 -0
  114. data/images/SimplestUnary.png +0 -0
  115. data/images/Supervision.png +0 -0
  116. data/images/VenueSeating.png +0 -0
  117. data/images/WaiterTips.png +0 -0
  118. data/images/Warehousing.png +0 -0
  119. data/images/WindowInRoomInBldg.png +0 -0
  120. data/metadata/json/Astronomy.json +175 -0
  121. data/metadata/json/CinemaBookings.json +354 -0
  122. data/metadata/json/CinemaTickets.json +768 -0
  123. data/metadata/json/CompanyDirectorEmployee.json +270 -0
  124. data/metadata/json/Diplomacy.json +186 -0
  125. data/metadata/json/Metamodel.json +3214 -0
  126. data/metadata/json/OilSupply.json +411 -0
  127. data/metadata/json/SeparateSubtype.json +157 -0
  128. data/metadata/json/Supervision.json +128 -0
  129. data/metadata/json/VenueSeating.json +209 -0
  130. data/orm/.gitignore +11 -0
  131. data/orm/Address.orm +1268 -0
  132. data/orm/Astronomy.orm +925 -0
  133. data/orm/Blog.orm +1711 -0
  134. data/orm/CinemaBookings.orm +1998 -0
  135. data/orm/CinemaTickets.orm +5060 -0
  136. data/orm/CompanyDirectorEmployee.orm +2094 -0
  137. data/orm/Death.orm +386 -0
  138. data/orm/Diplomacy.orm +1478 -0
  139. data/orm/ExampleModels2010.csproj +764 -0
  140. data/orm/ExampleModels2010.sln +16 -0
  141. data/orm/Genealogy.orm +3209 -0
  142. data/orm/Health.orm +2407 -0
  143. data/orm/Insurance.orm +12727 -0
  144. data/orm/Marriage.orm +493 -0
  145. data/orm/Metamodel.orm +20998 -0
  146. data/orm/Monogamy.orm +328 -0
  147. data/orm/MultiInheritance.orm +537 -0
  148. data/orm/MultipleSubtyping.orm +347 -0
  149. data/orm/OilSupply.orm +2533 -0
  150. data/orm/OneRoleNesting.orm +1237 -0
  151. data/orm/Orienteering.orm +3976 -0
  152. data/orm/PersonPlaysGame.orm +426 -0
  153. data/orm/RedundantDependency.orm +844 -0
  154. data/orm/SchoolActivities.orm +961 -0
  155. data/orm/SeparateSubtype.orm +821 -0
  156. data/orm/SimplestUnary.orm +172 -0
  157. data/orm/Supervision.orm +734 -0
  158. data/orm/VenueSeating.orm +1289 -0
  159. data/orm/WaiterTips.orm +789 -0
  160. data/orm/Warehousing.orm +3792 -0
  161. data/orm/WindowInRoomInBldg.orm +772 -0
  162. data/rails/models/Astronomy.models +17 -0
  163. data/rails/models/CinemaBookings.models +123 -0
  164. data/rails/models/CinemaTickets.models +192 -0
  165. data/rails/models/Diplomacy.models +126 -0
  166. data/rails/models/Metamodel.models +894 -0
  167. data/rails/models/OneRoleNesting.models +18 -0
  168. data/rails/models/SeparateSubtype.models +49 -0
  169. data/rails/models/VenueSeating.models +70 -0
  170. data/rails/schema/Astronomy.schema.rb +25 -0
  171. data/rails/schema/CinemaBookings.schema.rb +78 -0
  172. data/rails/schema/CinemaTickets.schema.rb +132 -0
  173. data/rails/schema/Diplomacy.schema.rb +74 -0
  174. data/rails/schema/Metamodel.schema.rb +538 -0
  175. data/rails/schema/OneRoleNesting.rb +20 -0
  176. data/rails/schema/SeparateSubtype.schema.rb +35 -0
  177. data/rails/schema/VenueSeating.schema.rb +46 -0
  178. data/rails/schema/Warehousing.schema.rb +145 -0
  179. data/ruby/Address.rb +68 -0
  180. data/ruby/Astronomy.rb +55 -0
  181. data/ruby/Blog.rb +84 -0
  182. data/ruby/CinemaBookings.rb +109 -0
  183. data/ruby/CinemaTickets.rb +218 -0
  184. data/ruby/CompanyDirectorEmployee.rb +73 -0
  185. data/ruby/Death.rb +26 -0
  186. data/ruby/Diplomacy.rb +59 -0
  187. data/ruby/Genealogy.rb +173 -0
  188. data/ruby/Insurance.rb +562 -0
  189. data/ruby/Marriage.rb +21 -0
  190. data/ruby/Metamodel.rb +621 -0
  191. data/ruby/Monogamy.rb +27 -0
  192. data/ruby/MultiInheritance.rb +38 -0
  193. data/ruby/OilSupply.rb +112 -0
  194. data/ruby/OneRoleNesting.rb +66 -0
  195. data/ruby/Orienteering.rb +216 -0
  196. data/ruby/PersonPlaysGame.rb +31 -0
  197. data/ruby/RedundantDependency.rb +53 -0
  198. data/ruby/SchoolActivities.rb +49 -0
  199. data/ruby/SeparateSubtype.rb +46 -0
  200. data/ruby/SimplestUnary.rb +10 -0
  201. data/ruby/Supervision.rb +33 -0
  202. data/ruby/TwoValues.rb +14 -0
  203. data/ruby/VenueSeating.rb +64 -0
  204. data/ruby/WaiterTips.rb +49 -0
  205. data/ruby/Warehousing.rb +167 -0
  206. data/ruby/WindowInRoomInBldg.rb +45 -0
  207. data/sql/server/Address.sql +40 -0
  208. data/sql/server/Astronomy.sql +36 -0
  209. data/sql/server/Blog.sql +78 -0
  210. data/sql/server/CinemaBookings.sql +95 -0
  211. data/sql/server/CinemaTickets.sql +191 -0
  212. data/sql/server/CompanyDirectorEmployee.sql +104 -0
  213. data/sql/server/Death.sql +11 -0
  214. data/sql/server/Diplomacy.sql +66 -0
  215. data/sql/server/Genealogy.sql +138 -0
  216. data/sql/server/Health.sql +169 -0
  217. data/sql/server/Insurance.sql +484 -0
  218. data/sql/server/Marriage.sql +30 -0
  219. data/sql/server/Metamodel.sql +1000 -0
  220. data/sql/server/Monogamy.sql +20 -0
  221. data/sql/server/MultiInheritance.sql +27 -0
  222. data/sql/server/OilSupply.sql +105 -0
  223. data/sql/server/OneRoleNesting.sql +29 -0
  224. data/sql/server/Orienteering.sql +186 -0
  225. data/sql/server/PersonPlaysGame.sql +9 -0
  226. data/sql/server/RedundantDependency.sql +54 -0
  227. data/sql/server/SchoolActivities.sql +30 -0
  228. data/sql/server/SeparateSubtype.sql +33 -0
  229. data/sql/server/SimplestUnary.sql +9 -0
  230. data/sql/server/Supervision.sql +30 -0
  231. data/sql/server/VenueSeating.sql +54 -0
  232. data/sql/server/WaiterTips.sql +31 -0
  233. data/sql/server/Warehousing.sql +203 -0
  234. data/sql/server/WindowInRoomInBldg.sql +13 -0
  235. data/transform/surrogate/Address.absorption +2 -0
  236. data/transform/surrogate/Blog.absorption +5 -0
  237. data/transform/surrogate/CinemaBookings.absorption +7 -0
  238. data/transform/surrogate/CompanyDirectorEmployee.absorption +7 -0
  239. data/transform/surrogate/Death.absorption +1 -0
  240. data/transform/surrogate/Diplomacy-revised.absorption +6 -0
  241. data/transform/surrogate/Diplomacy.absorption +6 -0
  242. data/transform/surrogate/Genealogy.absorption +8 -0
  243. data/transform/surrogate/Insurance.absorption +18 -0
  244. data/transform/surrogate/Marriage.absorption +2 -0
  245. data/transform/surrogate/Metamodel.absorption +25 -0
  246. data/transform/surrogate/Monogamy.absorption +1 -0
  247. data/transform/surrogate/MultiInheritance.absorption +1 -0
  248. data/transform/surrogate/MultipleSubtyping.absorption +1 -0
  249. data/transform/surrogate/OilSupply.absorption +8 -0
  250. data/transform/surrogate/OneRoleNesting.absorption +1 -0
  251. data/transform/surrogate/Orienteering.absorption +11 -0
  252. data/transform/surrogate/PersonPlaysGame.absorption +1 -0
  253. data/transform/surrogate/RedundantDependency.absorption +3 -0
  254. data/transform/surrogate/SchoolActivities.absorption +3 -0
  255. data/transform/surrogate/SeparateSubtype.absorption +3 -0
  256. data/transform/surrogate/SimplestUnary.absorption +1 -0
  257. data/transform/surrogate/Supervision.absorption +2 -0
  258. data/transform/surrogate/WaiterTips.absorption +3 -0
  259. data/transform/surrogate/Warehousing.absorption +12 -0
  260. data/transform/surrogate/WindowInRoomInBldg.absorption +1 -0
  261. data/transform/surrogate/unit.absorption +0 -0
  262. metadata +374 -0
@@ -0,0 +1,17 @@
1
+
2
+ module Concernz
3
+ module AstronomicalObject
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ self.primary_key = 'astronomical_object_id'
7
+
8
+ # AstronomicalObject is involved in Orbit and Orbit is around AstronomicalObject
9
+ belongs_to :center_via_orbit, :class_name => 'AstronomicalObject', :foreign_key => :orbit_center_astronomical_object_id
10
+
11
+ # Orbit is around AstronomicalObject and Orbit involves AstronomicalObject
12
+ has_many :astronomical_objects_via_orbit, :class_name => 'AstronomicalObject', :foreign_key => :orbit_center_astronomical_object_id, :dependent => :destroy
13
+
14
+ validates :astronomical_object_code, :presence => true
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,123 @@
1
+
2
+ module Concernz
3
+ module Booking
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ self.primary_key = 'booking_id'
7
+
8
+ # Booking involves Person
9
+ belongs_to :person, :foreign_key => :person_id
10
+
11
+ # Booking involves Session
12
+ belongs_to :session, :foreign_key => :session_id
13
+
14
+ # Booking is involved in Seat Allocation
15
+ has_many :seat_allocations, :class_name => 'SeatAllocation', :foreign_key => :booking_id, :dependent => :destroy
16
+ has_many :seats, :through => :seat_allocations
17
+
18
+ validates :number, :presence => true
19
+ validates :person_id, :presence => true
20
+ validates :session_id, :presence => true
21
+ end
22
+ end
23
+ end
24
+
25
+ module Concernz
26
+ module Cinema
27
+ extend ActiveSupport::Concern
28
+ included do
29
+ self.primary_key = 'cinema_id'
30
+
31
+ # Cinema contains Row and Row contains Seat
32
+ has_many :seats_via_row, :class_name => 'Seat', :foreign_key => :row_cinema_id, :dependent => :destroy
33
+ has_many :row_nrs, :through => :seats_via_row
34
+
35
+ # Cinema is involved in Session
36
+ has_many :sessions, :class_name => 'Session', :foreign_key => :cinema_id, :dependent => :destroy
37
+ end
38
+ end
39
+ end
40
+
41
+ module Concernz
42
+ module Film
43
+ extend ActiveSupport::Concern
44
+ included do
45
+ self.primary_key = 'film_id'
46
+
47
+ # Film is involved in Session
48
+ has_many :sessions, :class_name => 'Session', :foreign_key => :film_id, :dependent => :destroy
49
+ end
50
+ end
51
+ end
52
+
53
+ module Concernz
54
+ module Person
55
+ extend ActiveSupport::Concern
56
+ included do
57
+ self.primary_key = 'person_id'
58
+
59
+ # Person is involved in Booking
60
+ has_many :bookings, :class_name => 'Booking', :foreign_key => :person_id, :dependent => :destroy
61
+
62
+ validates :login_name, :presence => true
63
+ end
64
+ end
65
+ end
66
+
67
+ module Concernz
68
+ module Seat
69
+ extend ActiveSupport::Concern
70
+ included do
71
+ self.primary_key = 'seat_id'
72
+
73
+ # Seat is in Row and Row is in Cinema
74
+ belongs_to :cinema_via_row, :class_name => 'Cinema', :foreign_key => :row_cinema_id
75
+
76
+ # Seat is involved in Seat Allocation
77
+ has_many :seat_allocations, :class_name => 'SeatAllocation', :foreign_key => :allocated_seat_id, :dependent => :destroy
78
+ has_many :bookings, :through => :seat_allocations
79
+
80
+ validates :row_cinema_id, :presence => true
81
+ validates :row_nr, :presence => true
82
+ validates :seat_number, :presence => true
83
+ end
84
+ end
85
+ end
86
+
87
+ module Concernz
88
+ module SeatAllocation
89
+ extend ActiveSupport::Concern
90
+ included do
91
+ # Seat Allocation involves Booking
92
+ belongs_to :booking, :foreign_key => :booking_id
93
+
94
+ # Seat Allocation involves Seat
95
+ belongs_to :allocated_seat, :class_name => 'Seat', :foreign_key => :allocated_seat_id
96
+
97
+ validates :booking_id, :presence => true
98
+ validates :allocated_seat_id, :presence => true
99
+ end
100
+ end
101
+ end
102
+
103
+ module Concernz
104
+ module Session
105
+ extend ActiveSupport::Concern
106
+ included do
107
+ self.primary_key = 'session_id'
108
+
109
+ # Session involves Cinema
110
+ belongs_to :cinema, :foreign_key => :cinema_id
111
+
112
+ # Session involves Film
113
+ belongs_to :film, :foreign_key => :film_id
114
+
115
+ # Session is involved in Booking
116
+ has_many :bookings, :class_name => 'Booking', :foreign_key => :session_id, :dependent => :destroy
117
+
118
+ validates :cinema_id, :presence => true
119
+ validates :date_time_value, :presence => true
120
+ validates :film_id, :presence => true
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,192 @@
1
+
2
+ module Concernz
3
+ module AllocatableCinemaSection
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ self.primary_key = 'allocatable_cinema_section_id'
7
+
8
+ # AllocatableCinemaSection involves Cinema
9
+ belongs_to :cinema, :foreign_key => :cinema_id
10
+
11
+ validates :cinema_id, :presence => true
12
+ validates :section_name, :presence => true
13
+ end
14
+ end
15
+ end
16
+
17
+ module Concernz
18
+ module Booking
19
+ extend ActiveSupport::Concern
20
+ included do
21
+ self.primary_key = 'booking_id'
22
+
23
+ # Booking involves Person
24
+ belongs_to :person, :foreign_key => :person_id
25
+
26
+ # Booking involves Session
27
+ belongs_to :session, :foreign_key => :session_id
28
+
29
+ # Booking is involved in Places Paid
30
+ has_many :places_paids, :class_name => 'PlacesPaid', :foreign_key => :booking_id, :dependent => :destroy
31
+
32
+ # Booking is involved in Seat Allocation
33
+ has_many :seat_allocations, :class_name => 'SeatAllocation', :foreign_key => :booking_id, :dependent => :destroy
34
+ has_many :seats, :through => :seat_allocations
35
+
36
+ validates :booking_nr, :presence => true
37
+ validates :number, :presence => true
38
+ validates :person_id, :presence => true
39
+ validates :session_id, :presence => true
40
+ end
41
+ end
42
+ end
43
+
44
+ module Concernz
45
+ module Cinema
46
+ extend ActiveSupport::Concern
47
+ included do
48
+ self.primary_key = 'cinema_id'
49
+
50
+ # Cinema is involved in AllocatableCinemaSection
51
+ has_many :allocatable_cinema_sections, :class_name => 'AllocatableCinemaSection', :foreign_key => :cinema_id, :dependent => :destroy
52
+
53
+ # Cinema contains Row and Row contains Seat
54
+ has_many :seats_via_row, :class_name => 'Seat', :foreign_key => :row_cinema_id, :dependent => :destroy
55
+ has_many :row_nrs, :through => :seats_via_row
56
+
57
+ # Cinema is involved in Session
58
+ has_many :sessions, :class_name => 'Session', :foreign_key => :cinema_id, :dependent => :destroy
59
+
60
+ # Cinema is involved in Ticket Pricing
61
+ has_many :ticket_pricings, :class_name => 'TicketPricing', :foreign_key => :cinema_id, :dependent => :destroy
62
+
63
+ validates :name, :presence => true
64
+ end
65
+ end
66
+ end
67
+
68
+ module Concernz
69
+ module Film
70
+ extend ActiveSupport::Concern
71
+ included do
72
+ self.primary_key = 'film_id'
73
+
74
+ # Film is involved in Session
75
+ has_many :sessions, :class_name => 'Session', :foreign_key => :film_id, :dependent => :destroy
76
+
77
+ validates :name, :presence => true
78
+ end
79
+ end
80
+ end
81
+
82
+ module Concernz
83
+ module Person
84
+ extend ActiveSupport::Concern
85
+ included do
86
+ self.primary_key = 'person_id'
87
+
88
+ # Person is involved in Booking
89
+ has_many :bookings, :class_name => 'Booking', :foreign_key => :person_id, :dependent => :destroy
90
+ end
91
+ end
92
+ end
93
+
94
+ module Concernz
95
+ module PlacesPaid
96
+ extend ActiveSupport::Concern
97
+ included do
98
+ self.primary_key = 'places_paid_id'
99
+
100
+ # Places Paid involves Booking
101
+ belongs_to :booking, :foreign_key => :booking_id
102
+
103
+ validates :booking_id, :presence => true
104
+ validates :number, :presence => true
105
+ validates :payment_method_code, :presence => true
106
+ end
107
+ end
108
+ end
109
+
110
+ module Concernz
111
+ module Seat
112
+ extend ActiveSupport::Concern
113
+ included do
114
+ self.primary_key = 'seat_id'
115
+
116
+ # Seat is in Row and Row is in Cinema
117
+ belongs_to :cinema_via_row, :class_name => 'Cinema', :foreign_key => :row_cinema_id
118
+
119
+ # Seat is involved in Seat Allocation
120
+ has_many :seat_allocations, :class_name => 'SeatAllocation', :foreign_key => :allocated_seat_id, :dependent => :destroy
121
+ has_many :bookings, :through => :seat_allocations
122
+
123
+ validates :row_cinema_id, :presence => true
124
+ validates :row_nr, :presence => true
125
+ validates :seat_number, :presence => true
126
+ end
127
+ end
128
+ end
129
+
130
+ module Concernz
131
+ module SeatAllocation
132
+ extend ActiveSupport::Concern
133
+ included do
134
+ # Seat Allocation involves Booking
135
+ belongs_to :booking, :foreign_key => :booking_id
136
+
137
+ # Seat Allocation involves Seat
138
+ belongs_to :allocated_seat, :class_name => 'Seat', :foreign_key => :allocated_seat_id
139
+
140
+ validates :booking_id, :presence => true
141
+ validates :allocated_seat_id, :presence => true
142
+ end
143
+ end
144
+ end
145
+
146
+ module Concernz
147
+ module Session
148
+ extend ActiveSupport::Concern
149
+ included do
150
+ self.primary_key = 'session_id'
151
+
152
+ # Session involves Cinema
153
+ belongs_to :cinema, :foreign_key => :cinema_id
154
+
155
+ # Session involves Film
156
+ belongs_to :film, :foreign_key => :film_id
157
+
158
+ # Session is involved in Booking
159
+ has_many :bookings, :class_name => 'Booking', :foreign_key => :session_id, :dependent => :destroy
160
+
161
+ validates :cinema_id, :presence => true
162
+ validates :film_id, :presence => true
163
+ validates :session_time_year_nr, :presence => true
164
+ validates :session_time_month_nr, :presence => true
165
+ validates :session_time_day, :presence => true
166
+ validates :session_time_hour, :presence => true
167
+ validates :session_time_minute, :presence => true
168
+ end
169
+ end
170
+ end
171
+
172
+ module Concernz
173
+ module TicketPricing
174
+ extend ActiveSupport::Concern
175
+ included do
176
+ self.primary_key = 'ticket_pricing_id'
177
+
178
+ # Ticket Pricing involves Cinema
179
+ belongs_to :cinema, :foreign_key => :cinema_id
180
+
181
+ validates :cinema_id, :presence => true
182
+ validates :high_demand, :presence => true
183
+ validates :price, :presence => true
184
+ validates :section_name, :presence => true
185
+ validates :session_time_year_nr, :presence => true
186
+ validates :session_time_month_nr, :presence => true
187
+ validates :session_time_day, :presence => true
188
+ validates :session_time_hour, :presence => true
189
+ validates :session_time_minute, :presence => true
190
+ end
191
+ end
192
+ end
@@ -0,0 +1,126 @@
1
+
2
+ module Concernz
3
+ module Country
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ self.primary_key = 'country_id'
7
+
8
+ # Diplomat represents Country
9
+ has_many :diplomats, :class_name => 'Diplomat', :foreign_key => :represented_country_id, :dependent => :destroy
10
+
11
+ # Diplomat serves in Country
12
+ has_many :diplomats, :class_name => 'Diplomat', :foreign_key => :served_country_id, :dependent => :destroy
13
+
14
+ # Country is involved in LanguageUse
15
+ has_many :language_uses, :class_name => 'LanguageUse', :foreign_key => :country_id, :dependent => :destroy
16
+ has_many :languages, :through => :language_uses
17
+
18
+ # Country is involved in Representation
19
+ has_many :representations, :class_name => 'Representation', :foreign_key => :country_id, :dependent => :destroy
20
+
21
+ # Country is involved in Representation
22
+ has_many :representations, :class_name => 'Representation', :foreign_key => :represented_country_id, :dependent => :destroy
23
+
24
+ validates :country_name, :presence => true
25
+ end
26
+ end
27
+ end
28
+
29
+ module Concernz
30
+ module Diplomat
31
+ extend ActiveSupport::Concern
32
+ included do
33
+ self.primary_key = 'diplomat_id'
34
+
35
+ # Diplomat represents Country
36
+ belongs_to :represented_country, :class_name => 'Country', :foreign_key => :represented_country_id
37
+
38
+ # Diplomat serves in Country
39
+ belongs_to :served_country, :class_name => 'Country', :foreign_key => :served_country_id
40
+
41
+ # Diplomat is involved in Fluency
42
+ has_many :fluencies, :class_name => 'Fluency', :foreign_key => :diplomat_id, :dependent => :destroy
43
+ has_many :languages, :through => :fluencies
44
+
45
+ # Diplomat is an Ambassador and Ambassador is involved in Representation
46
+ has_many :representations_via_ambassador, :class_name => 'Representation', :foreign_key => :ambassador_id, :dependent => :destroy
47
+
48
+ validates :diplomat_name, :presence => true
49
+ validates :represented_country_id, :presence => true
50
+ validates :served_country_id, :presence => true
51
+ end
52
+ end
53
+ end
54
+
55
+ module Concernz
56
+ module Fluency
57
+ extend ActiveSupport::Concern
58
+ included do
59
+ # Fluency involves Diplomat
60
+ belongs_to :diplomat, :foreign_key => :diplomat_id
61
+
62
+ # Fluency involves Language
63
+ belongs_to :language, :foreign_key => :language_id
64
+
65
+ validates :diplomat_id, :presence => true
66
+ validates :language_id, :presence => true
67
+ end
68
+ end
69
+ end
70
+
71
+ module Concernz
72
+ module Language
73
+ extend ActiveSupport::Concern
74
+ included do
75
+ self.primary_key = 'language_id'
76
+
77
+ # Language is involved in Fluency
78
+ has_many :fluencies, :class_name => 'Fluency', :foreign_key => :language_id, :dependent => :destroy
79
+ has_many :diplomats, :through => :fluencies
80
+
81
+ # Language is involved in LanguageUse
82
+ has_many :language_uses, :class_name => 'LanguageUse', :foreign_key => :language_id, :dependent => :destroy
83
+ has_many :countries, :through => :language_uses
84
+
85
+ validates :language_name, :presence => true
86
+ end
87
+ end
88
+ end
89
+
90
+ module Concernz
91
+ module LanguageUse
92
+ extend ActiveSupport::Concern
93
+ included do
94
+ # LanguageUse involves Country
95
+ belongs_to :country, :foreign_key => :country_id
96
+
97
+ # LanguageUse involves Language
98
+ belongs_to :language, :foreign_key => :language_id
99
+
100
+ validates :language_id, :presence => true
101
+ validates :country_id, :presence => true
102
+ end
103
+ end
104
+ end
105
+
106
+ module Concernz
107
+ module Representation
108
+ extend ActiveSupport::Concern
109
+ included do
110
+ self.primary_key = 'representation_id'
111
+
112
+ # Representation involves Country
113
+ belongs_to :country, :foreign_key => :country_id
114
+
115
+ # Representation involves Country
116
+ belongs_to :represented_country, :class_name => 'Country', :foreign_key => :represented_country_id
117
+
118
+ # Representation involves Ambassador and Ambassador is a kind of Diplomat
119
+ belongs_to :diplomat_via_ambassador, :class_name => 'Diplomat', :foreign_key => :ambassador_id
120
+
121
+ validates :ambassador_id, :presence => true
122
+ validates :country_id, :presence => true
123
+ validates :represented_country_id, :presence => true
124
+ end
125
+ end
126
+ end