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
⚠️ **GitHub.com Fallback** ⚠️