Skip to content

Instantly share code, notes, and snippets.

@aronmoshe-m
Last active August 4, 2023 17:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aronmoshe-m/3edbef79c025554611cc174c59775efa to your computer and use it in GitHub Desktop.
Save aronmoshe-m/3edbef79c025554611cc174c59775efa to your computer and use it in GitHub Desktop.
Community Volunteer Events

Summary

Unlike a company event, which can only be associated with one company, a community event is a new event type that is visible across multiple companies. A community event can receive user signups from any company that is associated with it, and functions almost identically to a company event — except that it is for more than one company at a time.

Business requirements

Community events:

  • always belong to multiple companies
  • will show in every company platform that the event is associated with
  • can accept users from any associated company for event signup
  • may have the number of participants caped (like company events) and the cap applies across all companies (e.g., a cap of 50 participants is reached if one company has 40 signups and another company has 10 signups)
  • will not be editable in the Admin dashboard UI
  • will only show a company's users in the participants area of the UI (e.g., will not show one company who is signed up from another company)
  • will only allow participant management of the company's users (e.g., will not let one company manage another company's users)
  • will only count a company's users toward the company's metrics (e.g., a community event may have 100 hours volunteered across all participants but if a company's users only account for 50 of those hours, the company will only have their hour total increase by 50)

Also, community events:

  • are only created in Rails Admin, not in the Admin dashboard UI
  • must be distinguishable on the frontend from a standard company event

Implementation notes

A community event and a company event have so much overlap that we don't yet see the purpose of creating a separate model for community events. Therefore, all changes will be made to the Event model.

  • update association between event and company to has_and_belongs_to_many
  • new method on model (community_event?) to check if event has greater than one company associated with it for use by frontend for UI differentiation between community and company event types --> could be a boolean or enum instead to differentiate but I'm not sure this is necessary yet
  • two new scopes for list view of events in Rails Admin: company event and community event
@joelpollick
Copy link

joelpollick commented Jul 31, 2023

@Percent-Pledge

Leaving some comments on the requirements above - to potentially clarify a few things in case helpful:

  • "always belong to multiple companies" above ... this is probably correct, but more accurately these events should belong to every company PP team associates with them ... in practice, this will likely always be multiple companies but it could be a single company for the moment, assumption that a community event has multiple companies still stands
  • "must be distinguishable on the frontend from a standard company event" ... correct, by like some tag or ribbon or something, nothing huge needed here but some visual queue
  • "will only allow participant management of the company's users (e.g., will not let one company manage another company's users)" ... CORRECTION on this one ... Admins should not have any participant management with these. Admins should be able to see the event and who signed up from their company but not be able to do anything for these events like they can do for normal events other than view / download list of participants/registrants from their company
  • "will only count a company's users toward the company's metrics (e.g., a community event may have 100 hours volunteered across all participants but if a company's users only account for 50 of those hours, the company will only have their hour total increase by 50)" ... might be obvious, but there should be volunteering logs visible to Admins for all the participants associated with their company
  • These events are only created in Rails Admin, by PP team internally
  • PP team needs to be able to see all registrants/sign-ups ... so we see a full view but company admins only see a limited view of who signed up from their company in their Dashboard
  • PP team needs to be able to download a list of registrants for community events with the following info: [1] first name [2] last name [3] email [4] associated company
  • Question from CS ... if we change something about one of these events after it has been created (e.g. date) - will it automatically email the registrants like we have set up with the new volunteer event features or would that not happen for this? CS would like it to happen but did not know if it matters that these events are created via Rails Admin vs. the new multi-step wizard event creation flow CS will manually handle event change emails for these with the MVP

@joelpollick
Copy link

Also ... possible addition - Admins should see total spots for the event and how many remain. For example...

  • 100 spots total
  • 95 spots have been taken
  • 5 of the 95 from their company (they see this)
  • 5 spots left (they see this too)

@aronmoshe-m
Copy link
Author

aronmoshe-m commented Aug 1, 2023

Updated requirements (after call with MoJo and Joel on 1 Aug 2023)

Changes to requirements:

  • Community events cannot have their participants managed. A company admin should be able to view/download their participants for a community event but should not be able to manage them (add or delete participants)

Net new requirements:

  • CS needs to be able to easily see the following somewhere (could be in the UI or in Rails Admin):
    • Total number of signups for a community event
    • Total number of remaining spots for a community event
  • CS needs to be able to download a participants list (users with EventSignup associated with the community event) that includes: [1] first name [2] last name [3] email [4] associated company

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment