Clemens85 / runningdinner

Mono-Repo containing Java backend, React Frontend and Lambdas
https://runyourdinner.eu
MIT License
3 stars 2 forks source link

Customize waiting list size #72

Open danleh opened 1 month ago

danleh commented 1 month ago

Since quite some people cancel on short notice, it would be great if one could configure to have, e.g., x% or y people on the waiting list.

Clemens85 commented 1 month ago

This should already be possible with a workaround:

May look a little cumbersome, but actually it is quite easy and I know some guys do it that way. Maybe this is however a task for creating something like a short help / FAQ section or something like that.

danleh commented 1 month ago

Just so I understand correctly, this would mean the generated "example participants" would get assigned into teams/routes as well, right? Ideally, we would just like the waiting list to be longer than the default size (the remainder of division by numMeals * teamSize right now, correct?). That is, even if one could assign more people from the waiting list into teams, we don't want to, to make sure we have enough people to swap in even after the routes have been assigned.

To give an example: Let's say 180 people registered for "Mainz kocht", with team size 2 and 3 meals (minimumParticipantsNeeded is 18; nextParticipantsOffsetSize is 6, according to https://github.com/Clemens85/runningdinner/blob/b48383ad737b259d3b2439fb2150ad438370e245/runningdinner-backend/src/main/java/org/runningdinner/core/AssignableParticipantSizes.java#L27). Since 180 cleanly divides by 18 (and 6), we would have an empty waiting list. But we want to have at least ~15 people on the waiting list, since out of experience ~5-10% of participants cancel a couple days before the event.

If I understand correctly, this currently would not be possible with the workaround, right?

Clemens85 commented 1 month ago

Yes, the example participants would also be assigned into teams. This is however not that big issue as it sounds. You can swap the single teams in such a way that only example participants are assigned into one team each other (this is of course a little bit of work, but supposing that you only have a few of those example participants this should be quite fast). Depending on what is happening, you can later cancel them out and replace them by real participants (this is the N participants on your waiting list) or just delete them without replacement. This all should be done however before sending the final dinner routes. As soon you have sent the routes and something changes, you will always have some trouble in terms of notifying the affected teams / participants etc., I don't think that a customized waiting list size will be a big help at this point.

I know this is neither ideal nor comfortable, but it should also work. Anyway it is always sort of a hassle dealing with such things, most likely it would be easier if you can just put some participants manually to the waiting list, but in the end I think the complexity still remains.

And another important point from a technical point of view: Technically there currently doesn't exist a construct of a waiting list, this more a type of virtual construct, which is mostly computed on the fly. This has some advantages, but also some disadvantages, one of them is that it would cause some efforts for implementing such a feature.