Commit Graph

15 Commits

Author SHA1 Message Date
91caa16e70 feat: Mailwizz overview vs wizard flow and wizard step guard
Load Weeztix config for coupon mapping context, redirect incomplete
configs to step one, and expand admin Mailwizz UI and tests.

Made-with: Cursor
2026-04-05 13:34:00 +02:00
7eda51f52a feat: clean Weeztix and Mailwizz when admin deletes subscriber
Run CleanupSubscriberIntegrationsService before delete: remove coupon code
in Weeztix via list+DELETE API; update Mailwizz contact to strip configured
source tag from the tag field and clear the mapped coupon field.

Extract MailwizzCheckboxlistTags and MailwizzSubscriberFormPayload for
shared sync/cleanup behaviour. Add WeeztixService list and delete helpers.

Integration failures are logged only; local delete always proceeds.
Feature tests cover Mailwizz strip+clear and Weeztix delete paths.

Made-with: Cursor
2026-04-05 11:57:16 +02:00
89931b817d feat(admin): Weeztix setup wizard, integration status badges
- Summary view when Weeztix is configured; edits only via 3-step wizard
- Step 1: reuse or replace OAuth client ID/secret; callback URL shown
- Step 2: OAuth connect (resume wizard after callback when started from wizard)
- Step 3: coupon, prefix, usage; finishing exits wizard
- PreregistrationPage: mailwizz/weeztix integration status helpers
- Pages index: Integrations column with MW/WZ badges; edit page: status cards

Made-with: Cursor
2026-04-05 11:12:10 +02:00
e0de8a05fa feat(weeztix): only list coupons with status enabled in admin
Made-with: Cursor
2026-04-05 11:04:10 +02:00
6561bda30d feat(weeztix): auto company from OAuth, remove company UI
Store company_guid after OAuth via profile API; drop company select and
companies endpoint. Coupons AJAX uses stored company only. Form request
no longer accepts company fields from the browser.

Made-with: Cursor
2026-04-05 10:56:29 +02:00
a3158ffa34 fix: use official Weeztix OAuth login and token URLs
Redirect to login.weeztix.com/login per docs; default token host to
auth.weeztix.com. Open Ticket setups can override via env.

Made-with: Cursor
2026-04-05 09:51:11 +02:00
d3abdb7ed9 feat: add Weeztix OAuth, coupon codes, and Mailwizz mapping
Implement Weeztix integration per documentation: database config and
subscriber coupon_code, OAuth redirect/callback, admin setup UI with
company/coupon selection via AJAX, synchronous coupon creation on public
subscribe with duplicate and rate-limit handling, Mailwizz field mapping
for coupon codes, subscriber table and CSV export, and connection hint
on the pages list.

Made-with: Cursor
2026-04-04 14:52:41 +02:00
17e784fee7 feat: E.164 phone validation and storage with libphonenumber
- Add giggsey/libphonenumber-for-php, PhoneNumberNormalizer, ValidPhoneNumber rule

- Store subscribers as E.164; mutator normalizes on save; optional phone required from form block

- Migration to normalize legacy subscriber phones; Mailwizz/search/UI/tests updated

- Add run-deploy-from-local.sh and PREREGISTER_DEFAULT_PHONE_REGION in .env.example

Made-with: Cursor
2026-04-04 14:25:52 +02:00
ed85e5c537 feat: delete subscribers from page subscriber list
Adds DELETE route, form request authorization, admin UI with confirm, Dutch strings, and feature tests.

Made-with: Cursor
2026-04-04 01:29:32 +02:00
ff58e82497 Implemented a block editor for changing the layout of the page 2026-04-04 01:17:05 +02:00
83e2158383 feat: Phase 4 - Mailwizz integration with subscriber sync and retry 2026-04-03 22:03:53 +02:00
a1d570254e feat: Phase 3 - public registration pages and Mailwizz config 2026-04-03 21:42:19 +02:00
cf026f46b0 feat: Phase 2 - page CRUD, subscriber management, user management 2026-04-03 21:15:40 +02:00
78e1be3e3b feat: Phase 2 - admin layout, dashboard, page CRUD, subscribers, user management 2026-04-03 20:09:20 +02:00
904cf1241b feat: initial project with Phase 1 complete 2026-04-03 19:56:38 +02:00