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
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.
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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 /bookingstakes a
student_id, butBookingEndpoint::resolveStudent()rejects any callerwho 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:
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
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.
Record intake collected elsewhere, afterwards, for a registration the
studio made — a booked lesson or a directly-added group-class enrolment.
It must:
already holds their own answers and those stay theirs
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 asstaff-made, and the collection method has to live somewhere.