CRC cards - CMPUT301W26opcode/opcode GitHub Wiki
Event
EventActivity
| Responsibilities | Collaborators |
|---|---|
| Display details about the event | EventController |
| Display a button that lets the user join the waiting list for the event | EventController, UserController |
| After the end date for the event registration, if the entrant is chosen then display an “accept invitation” button and a “decline invitation” button | EventController, Event |
EventsDisplayActivity
| Responsibilities | Collaborators |
|---|---|
| Display a list of events that somehow match what the user searched for | EventController |
| Clicking on an event brings you to the EventActivity (which lets you join a waiting list) | EventActivity |
EventsBrowseActivity
| Responsibilities | Collaborators |
|---|---|
| Display a search bar at the top to search for an event | EventController (gets the events) |
| Display a button that lets the user scan a QR code | ScanQRActivity |
| Display an interactive widget that lets the user provide their availability for an event (start date and an end date) | EventController |
ScanQRActivity
| Responsibilities | Collaborators |
|---|---|
| Use the camera and display a square through which a qr code can be scanned | EventController, Event |
EventController
| Responsibilities | Collaborators |
|---|---|
| Store a EventList which contains all the Events that are in EventDB | EventDB |
| Get and keeps the most current values of every event in EventList | EventDB |
| Get the most current brief description for every event in EventList from EventDB | EventDB |
| Get the most current event name for every event in EventList from EventDB | EventDB |
| Get the most current place for every event in EventList from EventDB | EventDB |
| Get the most current registration start time for every event in EventList from EventDB | EventDB |
| Get the most current registration end time for every event in EventList from EventDB | EventDB |
| Get the most current event timing for every event in EventList from EventDB | EventDB |
| Get the most current image file for every event in EventList from EventDB | EventDB |
| Get the most current list of entrants that are in the waiting list for every event in EventList from EventDB | EventDB |
| Tell EventDB to remove an Event | EventDB |
| Send the EventList to EventsDisplayActivity to be displayed | EventsDisplayActivity |
| Send an Event in EventList to EventActivity to be displayed | EventActivity |
| Tell the EventDB each time a user registers for the event | EventDB |
| Tell the Event class to update its values | Event |
| Tell EventDB to add an Event | EventDB, Event |
EventDB
| Responsibilities | Collaborators |
|---|---|
| Create a new Event with all its values in the Firebase Firestore database | Event, EventDBConnector |
| Update the values of an Event in the Firebase Firestore database | Event, EventDBConnector |
| Read the values of an Event in the Firebase Firestore database | EventDBConnector |
| Delete an event in the Firebase Firestore database | EventDBConnector |
EventDBConnector
| Responsibilities | Collaborators |
|---|---|
| Connects to the Firebase Firestore database | |
EventsJoinedActivity
| Responsibilities | Collaborators |
|---|---|
| Display a list of events for which you have joined the waitlist | UserController |
| When you click on an event you can go to its EventActivity | EventActivity |
CreateEventActivity
| Responsibilities | Collaborators |
|---|---|
| Display textboxes for the user to type the event name, description, how many people will be sampled, a time and place, registration start time and end time. | |
| Display a “Create” button that the user can press after all the information is provided. Consequently, create an organizer instance for that user if they are not already an organizer. Otherwise, find the Organizer instance for the user and add this event to the list of events for the organizer. | EventController, OrganizerController |
| Provide a widget that lets the user upload image file (for visuals) | EventController |
| Create a QR code for the event |
ManageEventsActivity
| Responsibilities | Collaborators |
|---|---|
| Display a list of activities created by the user (organizer). | OrganizerController |
| Clicking on an event lets the user see event details (OrganizerEventActivity) | OrganizerEventActivity |
OrganizerEventActivity
| Responsibilities | Collaborators |
|---|---|
| Lists the details of the event that the user (organizer) clicked on (from ManageEventsActivity) | OrganizerController, Event |
| Display a button that lets the user see the list of invited entrants (InvitedEntrantsActivity) (only visible after the end date of the registration period) | OrganizerController, InvitedEntrantsActivity |
| Display the number of people in the waiting list | OrganizerController, Event |
| Automatically sample entrants and send an invitation notification to all the entrants | EventController, UserController |
InvitedEntrantsActivity
| Responsibilities | Collaborators |
|---|---|
| Display the list of names and the emails of invited entrants | EventController |
| Beside each entrant, display the invitation status (whether the entrant accepted, declined or did not respond to the invitation yet) | EventController |
| If an entrant declined the invitation then there should be a “cancel” button beside the entrant that lets the organizer cancel the entrant. This automatically causes a new entrant to be invited randomly. | EventController |
Event
| Responsibilities | Collaborators |
|---|---|
| Keeps the name of the event | |
| Keeps the place of the event | |
| Keeps a brief description of the event | |
| Keeps the start time of the event | |
| Keeps the end time of the event | |
| Keeps the organizer of the event | Organizer |
| Keeps the array of entrants that are in the waiting list | User |
| Keeps the array of attendees (accepted) | User |
| Keep a unique QR code that links to the event | CreateEventActivity |
Organizer
| Responsibilities | Collaborators |
|---|---|
| An instance of this class is created for a user as soon as they create an Event | |
| Since an Organizer is also a user, keep the user instance for that organizer | UserController |
| Keep the list of events that the organizer has created | Event/EventController |
OrganizerController
| Responsibilities | Collaborators |
|---|---|
| Store a OrganizerList which contains all the Organizers that are in OrganizerDB | OrganizerDB |
| Get and keeps the most current values of every Organizer in OrganizerList | OrganizerDB |
| Get the most current User for every Organizer in OrganizerList from OrganizerDB | OrganizerDB |
| Get the most current list of Events for every Organizer in OrganizerList from OrganizerDB | OrganizerDB |
| Tell OrganizerDB to remove an Organizer | OrganizerDB |
| Send the OrganizerList to admins | |
| Send the list of events of an Organizer to ManageEventsActivity to be displayed | ManageEventsActivity |
| Tell the OrganizerDB each time a user creates an Event (update the list of events for that organizer) | OrganizerDB, Organizer |
| Tell the Organizer class to update its values | Organizer |
| Tell OrganizerDB to add an Organizer | OrganizerDB, Organizer |
OrganizerDB
| Responsibilities | Collaborators |
|---|---|
| Create a new Organizer with all its values in the Firebase Firestore database | Organizer, OrganizerDBConnector |
| Update the values of an Organizer in the Firebase Firestore database | Organizer, OrganizerDBConnector |
| Read the values of an Organizer in the Firebase Firestore database | OrganizerDBConnector |
| Delete an Organizer in the Firebase Firestore database | OrganizerDBConnector |
OrganizerDBConnector
| Responsibilities | Collaborators |
|---|---|
| Connects to the Firebase Firestore database |
User
| Responsibilities | Collaborators |
|---|---|
| Keep the name of the user | |
| Keep the email of the user | |
| Keep the phone number of the user | |
| Keep the list of events for which the user has joined their waiting lists. | EventActivity |
UserController
| Responsibilities | Collaborators |
|---|---|
| Store a UserList which contains all the Users that are in UserDB | UserDB |
| Get and keeps the most current values of every User in UserList | UserDB |
| Get the most current name for every User in UserList from UserDB | UserDB |
| Get the most current email for every User in UserList from UserDB | UserDB |
| Get the most current phone number for every User in UserList from UserDB | UserDB |
| Get the most current list of events a user has joined for every User in UserList from UserDB | UserDB |
| Tell UserDB to remove an User | UserDB |
| Send the UserList to admins | |
| Send the list of events a User has joined to ManageEventsActivity to be displayed | EventsJoinedActivity |
| Tell the UserDB each time a user joins an Event (update the list of events for that organizer) | UserDB, User |
| Tell the User class to update its values | User |
| Tell UserDB to add an User | UserDB, User |
UserDB
| Responsibilities | Collaborators |
|---|---|
| Create a new User with all its values in the Firebase Firestore database | User, UserDBConnector |
| Update the values of an User in the Firebase Firestore database | User, UserDBConnector |
| Read the values of an User in the Firebase Firestore database | UserDBConnector |
| Delete an User in the Firebase Firestore database | UserDBConnector |
UserDBConnector
| Responsibilities | Collaborators |
|---|---|
| Connects to the Firebase Firestore database |
LoginActivity
| Responsibilities | Collaborators |
|---|---|
| Display a field where a user can type their name | |
| Display a field where a user can type their email | |
| Display a field where a user can type their phone number | |
| Display a “Sign In” button that the user can press to create their profile (after their information is provided). This will create an instance of the User class. | User, UserController |