I plan to add some semi-custom functionality and I'm not sure if the best way to implement this would be through participants, activities, cases or perhaps even something else.
Here is a sketch of what I hope to put together:
- A teacher fills out a form to request a field trip for their class, providing various details.
- The coordinator selects certain requests for approval, assigning an educator to that request. An email is sent to the educator, with the details the teacher submitted.
- One of the details that the teachers submit are three date options for their field trip. The email to the educator contains a link that takes them to a form that allows the educator to select one of these three dates — or enter an alternate date if none of these dates work (after emailing the teacher, but that doesn't need to be in CiviCRM).
- Once the date has been selected, the teacher and the educator receive a confirmation email that lists all of the details of their field trip. This email contains a link to pay online and details to submit payment offline (this could also be a separate invoice email). Ideally, invoices that remain unpaid 7 days before the field trip receive a follow up email, but this is not essential.
- Once the field trip date has passed, the teacher receives an additional email asking them to fill out a feedback form. Ideally, the fact that they have filled out the form is linked to the field trip.
- Our admin team pays the educator, ideally with the fact that they have been paid attached to the field trip (though we don't need the payment details).
My intent is to use FormBuilder, Search Tasks and CiviRules for this. I think I can sketch this out as an activity or a participant, but neither are ideal. A case seems to make sense as well, but I'm less familiar with cases so this is less clear to me.
I'm not entirely sure how I'll implement the form in Step 3 (selecting one date from a set of three options) in FormBuilder. Worst case, the educator has to copy-paste their selected date into a date field.
I'd appreciate anyone's thoughts on which entity to use or other aspects of the implementation. Thanks!