| 1 | Plat/al 2 Events |
| 2 | ================ |
| 3 | |
| 4 | Events are a way to organisze events with this website. |
| 5 | Users may have to pay to participate in an event. |
| 6 | Events have optional sub-events which can be free or not free. |
| 7 | Events and sub-events may have differents price options (e.g. student or not) |
| 8 | |
| 9 | |
| 10 | Current implementation |
| 11 | ---------------------- |
| 12 | |
| 13 | - Event: |
| 14 | - contains all the global properties of an event (visibility...) |
| 15 | - has a foreign key to an EventPart that is the main event part. |
| 16 | - EventPart data specific to a part of an event (name, limits, price options) |
| 17 | - they have a foreign key to the containing event. |
| 18 | - Price options with a name and a cost as well as a foreign key to an EventPart |
| 19 | - Registration of a user to one element of a price option (5 tickets make 5 Registrations) |
| 20 | |
| 21 | The Event has no price option for the global event, it is handled by the main EventPart. |
| 22 | This is done to avoid duplicating code for main price options and part price options. |
| 23 | |
| 24 | |
| 25 | Alternate proposed implementation (1) |
| 26 | ------------------------------------- |
| 27 | |
| 28 | Same thing as above except that price options are only for the main event. |
| 29 | That way the code is a bit less ugly. |
| 30 | |
| 31 | |
| 32 | Alternate proposed implementation (2) |
| 33 | ------------------------------------- |
| 34 | |
| 35 | Have EventParts have a foreign key to the main event part. The "root" of the event becomes the main part. |