Let the studio book a lesson for a student, and record intake collected elsewhere #182

Closed
opened 2026-08-24 17:05:56 +00:00 by thatguygriff · 0 comments
Owner

The gap

A private lesson can only be booked by the student, or by a guardian for their
own child. Nobody at the studio can book one for somebody: POST /bookings
takes a student_id, but BookingEndpoint::resolveStudent() rejects any caller
who is not that student's guardian, administrator or not. Staff can cancel a
lesson and fix its payment, but never create one.

That leaves two ordinary things impossible:

  • taking a booking over the phone, or at the front desk
  • an instructor slotting in a make-up lesson for a student who missed one

Group classes already have the equivalent — Add students directly on a class's
detail page — so the asymmetry is the odd part.

The second half of the problem

A registration the studio makes on someone's behalf has no intake answers and
no policy acceptances
, because nobody was at a keyboard to give them. This is
already true of every student added with Add students directly, and it would
become true of every staff-booked lesson.

Staff must not simply tick the boxes on the student's behalf at booking time —
that produces an audit trail which says something untrue. But the studio does
collect this information, just by other means: a paper form at the first lesson,
a phone call to a parent. There is currently nowhere to put it.

What is wanted

  1. Book a lesson for a student from wp-admin — reaching every instructor's
    open times for a studio admin, the instructor's own for an instructor.
    Single lessons and weekly term reservations, and an option to book at no
    charge for a make-up or goodwill lesson.

  2. Record intake collected elsewhere, afterwards, for a registration the
    studio made — a booked lesson or a directly-added group-class enrolment.
    It must:

    • offer only what is still missing, and never overwrite what is on file
    • be available only for staff-made registrations; one the student made
      already holds their own answers and those stay theirs
    • require saying how the answers were collected (paper form, in person,
      phone, email, other), recorded against every entry along with who typed it,
      and shown in the audit tables — so a policy ticked online and one
      transcribed from paper can never be mistaken for each other

Notes

Both halves touch Schema.php: something has to mark a registration as
staff-made, and the collection method has to live somewhere.

## The gap A private lesson can only be booked by the student, or by a guardian for their own child. Nobody at the studio can book one *for* somebody: `POST /bookings` takes a `student_id`, but `BookingEndpoint::resolveStudent()` rejects any caller who is not that student's guardian, administrator or not. Staff can cancel a lesson and fix its payment, but never create one. That leaves two ordinary things impossible: - taking a booking over the phone, or at the front desk - an instructor slotting in a make-up lesson for a student who missed one Group classes already have the equivalent — **Add students directly** on a class's detail page — so the asymmetry is the odd part. ## The second half of the problem A registration the studio makes on someone's behalf has **no intake answers and no policy acceptances**, because nobody was at a keyboard to give them. This is already true of every student added with **Add students directly**, and it would become true of every staff-booked lesson. Staff must not simply tick the boxes on the student's behalf at booking time — that produces an audit trail which says something untrue. But the studio does collect this information, just by other means: a paper form at the first lesson, a phone call to a parent. There is currently nowhere to put it. ## What is wanted 1. **Book a lesson for a student** from wp-admin — reaching every instructor's open times for a studio admin, the instructor's own for an instructor. Single lessons and weekly term reservations, and an option to book at no charge for a make-up or goodwill lesson. 2. **Record intake collected elsewhere**, afterwards, for a registration the studio made — a booked lesson or a directly-added group-class enrolment. It must: - offer only what is still missing, and never overwrite what is on file - be available *only* for staff-made registrations; one the student made already holds their own answers and those stay theirs - **require saying how the answers were collected** (paper form, in person, phone, email, other), recorded against every entry along with who typed it, and shown in the audit tables — so a policy ticked online and one transcribed from paper can never be mistaken for each other ## Notes Both halves touch `Schema.php`: something has to mark a registration as staff-made, and the collection method has to live somewhere.
thatguygriff added the feature label 2026-08-24 17:05:56 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Unsupervised/unsupervised-scheduler#182