Introduce the Offering concept that pricing, billing mode, and intake questions hang off. An offering is either a private-lesson type (30/60 min, single or weekly) or a group class.
Spec:docs/features/offerings.md
Scope
New table {prefix}us_offerings (kind, duration, price, currency, billing_mode one_time/full_term, allow_weekly, capacity, term dates, schedule_note, is_active)
REST: GET /offerings (public, active only), POST/PATCH/DELETE /offerings (manage_offerings + owner)
Admin Offerings page; studio admin manages all, instructors manage their own
Acceptance
Offerings CRUD via admin + REST with capability checks
Schema added to Schema.php / dbDelta
Unit tests under tests/Unit/Offering/ pass; composer test green
Introduce the **Offering** concept that pricing, billing mode, and intake questions hang off. An offering is either a private-lesson type (30/60 min, single or weekly) or a group class.
**Spec:** `docs/features/offerings.md`
## Scope
- New table `{prefix}us_offerings` (kind, duration, price, currency, billing_mode `one_time`/`full_term`, allow_weekly, capacity, term dates, schedule_note, is_active)
- Domain package `src/Offering/`: `Offering`, `OfferingRepository`, `OfferingController`, `OfferingEndpoint`
- REST: `GET /offerings` (public, active only), `POST/PATCH/DELETE /offerings` (`manage_offerings` + owner)
- Admin **Offerings** page; studio admin manages all, instructors manage their own
## Acceptance
- Offerings CRUD via admin + REST with capability checks
- Schema added to `Schema.php` / dbDelta
- Unit tests under `tests/Unit/Offering/` pass; `composer test` green
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.
Introduce the Offering concept that pricing, billing mode, and intake questions hang off. An offering is either a private-lesson type (30/60 min, single or weekly) or a group class.
Spec:
docs/features/offerings.mdScope
{prefix}us_offerings(kind, duration, price, currency, billing_modeone_time/full_term, allow_weekly, capacity, term dates, schedule_note, is_active)src/Offering/:Offering,OfferingRepository,OfferingController,OfferingEndpointGET /offerings(public, active only),POST/PATCH/DELETE /offerings(manage_offerings+ owner)Acceptance
Schema.php/ dbDeltatests/Unit/Offering/pass;composer testgreenClosing as complete. Implemented and merged in PR #10 (Offerings domain).