Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apply to attend #220

Open
shreyas-satish opened this issue Apr 23, 2018 · 7 comments
Open

Apply to attend #220

shreyas-satish opened this issue Apr 23, 2018 · 7 comments

Comments

@shreyas-satish
Copy link
Contributor

This feature will allow event managers curate their audience.

User workflow:

- The prospective attendee fills an application form on the widget.
- The admin reviews the applications, and invites prospects individually by clicking a button.
- An access link is sent to the selected attendees.
- The access link ensures that the widget shows the available tickets for purchase.

Engineering workflow:

- `ItemCollection` will need a `restrict_entry` flag.
- `ItemCollection` will need to be associated with multiple `applications`. Each application has a status, responses to custom fields (decided by the event manager) and an access code.
- When rendering the widget, the item collection is checked if it's restricted.
- If it's restricted, and if a valid access token is supplied, the ticket listing is rendered.
- If no access token is supplied, an application form is displayed.
- This access token is checked for other end points too.
@jace
Copy link
Member

jace commented Apr 23, 2018

Steps 1-3 in user workflow are outside the scope for Boxoffice.

@jace
Copy link
Member

jace commented Apr 23, 2018

Only 1, 3 and 4 are relevant in the engineering workflow. The rest can be removed from the spec.

@shreyas-satish
Copy link
Contributor Author

shreyas-satish commented Apr 23, 2018

Revised spec:

User workflow:

- The prospective attendee fills an application form outside Boxoffice, eg: Google Form.
- The admin reviews the applications outside Boxoffice.
- The admin generates one or multiple access links for an item collection _in_ Boxoffice.
- The admin uses these access links and shares it with the selected list of applicants, _outside_ of Boxoffice.

Engineering workflow:

- `ItemCollection` will need a `restrict_entry` flag.
- Access tokens can be generated like how discount coupons are generated. They are signed codes, which are not stored in the database.
- When rendering the widget, the item collection is checked if it's restricted.
- If it's restricted, and if a valid access token is supplied, the ticket listing is rendered.

@jace
Copy link
Member

jace commented Apr 23, 2018

Restrictions should be per item, not item collection. Some items may be public, some may require a token. Accesss can be zero value discount tokens, so a new model is not necessary. Sometimes an access token will include a discount as well, so it helps to use the regular discount token model.

@shreyas-satish
Copy link
Contributor Author

Restrictions should be per item, not item collection.

Sure.

Accesss can be zero value discount tokens, so a new model is not necessary.

I wasn't planning to add a new model. Simply to generate and verify tokens at runtime. There's a database constraint that ensures the percentage is greater than 0. Should this be changed?

@jace
Copy link
Member

jace commented Apr 23, 2018

I wasn't planning to add a new model. Simply to generate and verify tokens at runtime. There's a database constraint that ensures the percentage is greater than 0. Should this be changed?

Yes, let this be an app constraint that prevents 0% discounts if the item is not restricted.

@shreyas-satish
Copy link
Contributor Author

There's a problem with using 0% discount coupons. The discounting logic does not apply a zero value discount coupon to a line item, since there's no discount to be accounted for.

I'd prefer to not change the discounting logic at this moment, and instead, I propose we introduce a simple AccessCoupon model, that shares a many-to-one relationship with Item. This also helps segregate the discounting and access control logic.

Kiran, your thoughts?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants