Serreau Jovann
179a0703f8
Add Billet entity, BilletDesign, ticket designer, CRUD billets, commissions
...
- Create Billet entity: name, position, priceHT, quantity (nullable=unlimited),
isGeneratedBillet, hasDefinedExit, notBuyable, type (billet/reservation_brocante/vote),
stripeProductId, description, picture (VichUploader), category (ManyToOne CASCADE)
- Create BilletDesign entity (OneToOne Event): accentColor, invitationTitle, invitationColor
- Billet CRUD: add/edit/delete with access control, Stripe product sync on connected account
- Billet reorder: drag & drop with position field, refactored sortable.js for both categories and billets
- Ticket designer tab (custom offer only): accent color, invitation title/color, live iframe preview
- A4 ticket preview: 4 zones (HG infos+billet, HD affiche, BG association, BD sortie+invitation), fake QR code SVG
- Commission calculator JS: live breakdown of E-Ticket fee, Stripe fee (1.5%+0.25EUR), net amount
- Sales recap on categories tab: qty sold, total HT, total commissions, total net
- DisableProfilerSubscriber: disable web profiler toolbar on preview iframe
- CSP: allow self in frame-src and frame-ancestors for preview iframe
- Flysystem: dedicated billets.storage for billet images
- Upload accept restricted to png/jpeg/webp/gif (no HEIC)
- Makefile: add force_sql_dev command
- CLAUDE.md: add rule to never modify existing migrations
- Consolidate all migrations into single Version20260321111125
- Tests: BilletTest (20), BilletDesignTest (6), DisableProfilerSubscriberTest (5),
billet-designer.test.js (7), commission-calculator.test.js (7),
AccountControllerTest billet CRUD tests (11)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-21 12:19:46 +01:00
Serreau Jovann
c054e9913e
Add assertion to dragend null test case
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-21 10:22:33 +01:00
Serreau Jovann
f2bce4f191
Sortable tests, deduplicate event hydration, disable php:S1448
...
- Add sortable.js tests (12 tests): drag/drop, reorder, early returns, edge cases
- Use target.before()/after() instead of list.insertBefore() in sortable.js
- Extract hydrateEventFromRequest() to eliminate duplicated code in createEvent/editEvent
- Disable SonarQube rule php:S1448 (too many methods per class)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-21 10:12:17 +01:00
Serreau Jovann
5ae948b94f
aa
2026-03-20 23:37:16 +01:00
Serreau Jovann
9290411652
Add isHidden to Category, category CRUD tests, coverage improvements
...
- Add isHidden field to Category entity with migration (DEFAULT false for existing rows)
- Add isHidden checkbox to edit category template and "Masquee" badge on category list
- Save isHidden in editCategory controller method
- Fix Category.isActive() indentation
- Create CategoryTest with full coverage (14 tests): defaults, setters, setEvent logic, isActive, isHidden
- Add category CRUD tests to AccountControllerTest: add/edit/delete/reorder categories with access control
- Add cookie-consent tests for dev env early return and Cloudflare tunnel script
- Exclude PayoutPdfService from phpunit coverage and SonarQube analysis
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 23:35:42 +01:00
Serreau Jovann
0358025fe7
Add category edit page, edit button, and drag & drop sortable with native HTML5
...
- Add /mon-compte/evenement/{id}/categorie/{categoryId}/modifier route (GET/POST)
- Create edit_category.html.twig with name and date fields
- Add edit button (pencil icon) on category list items
- Add sortable.js module: native HTML5 drag & drop with fetch reorder API
- Auto-correct endAt < startAt on category edit
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 23:16:52 +01:00
Serreau Jovann
ca0527b0db
Fix category dates: use event.endAt as default, auto-correct if endAt < startAt
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 23:13:53 +01:00
Serreau Jovann
ba55315977
Fix category dates: ensure endAt is after startAt, use event.startAt as default end
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 23:11:45 +01:00
Serreau Jovann
927f3e1260
Exclude StripeWebhookController and StripeService from SonarQube analysis
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 23:06:49 +01:00
Serreau Jovann
62865990b8
Exclude StripeWebhookController and StripeService from tests and coverage
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 23:05:59 +01:00
Serreau Jovann
42ded8fbbe
Add Category entity, edit event tabs (info/categories/stats/settings), CRUD categories
...
- Create Category entity: name, position (sortable), event, startAt, endAt, isActive()
- Default endAt: event.startAt - 1 day
- Add 4 tabs on edit event page: Informations, Categories/Billets, Statistiques, Parametres
- Add routes: add category, delete category, reorder categories (JSON API)
- Categories sorted by position, drag handle for future Sortable.js
- Active/Inactive badge based on date range
- Add migration for category table
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 22:51:25 +01:00
Serreau Jovann
847fc437de
Disable analytics in dev env, redirect to edit page after event update
...
- Skip loading /stats/script.js and /assets/perf.js when data-env=dev
- Add data-env="{{ app.environment }}" to body tag
- Redirect to edit event page instead of events list after saving
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 22:39:38 +01:00
Serreau Jovann
57ea5c33ac
Disable service worker in PWA config
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 22:37:21 +01:00
Serreau Jovann
1f6cb5db1e
Keep event online/secret status when editing, don't reset to false
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 22:35:42 +01:00
Serreau Jovann
615e1c2eab
Encrypt vault with updated Stripe webhook secrets
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 22:33:24 +01:00
Serreau Jovann
3e8eed4edb
Split Stripe webhooks: /stripe/webhook for payouts, /stripe/webhook/connect for v2 Connect
...
- Separate webhook routes with different secrets
- Add verifyConnectWebhookSignature() to StripeService
- Add STRIPE_WEBHOOK_SECRET_CONNECT env var
- Update vault with prod secrets for both endpoints
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 22:31:00 +01:00
Serreau Jovann
3ee1bffc2a
Add HomeController coverage: wrong orgaSlug redirect, contact 404, contact success with email
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:55:07 +01:00
Serreau Jovann
e8e56e226a
Refactor CspReportController to max 3 returns, extract methods, exclude editor/event-map from SonarQube
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:53:28 +01:00
Serreau Jovann
e0d12ba874
Add coverage tests: event picture upload (create/edit), searchEvents fallback/empty/results/no-hits
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:47:38 +01:00
Serreau Jovann
8d062cfd36
Add PHPStan type annotation for fallbackOrder parameter
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:45:02 +01:00
Serreau Jovann
0860c1b08c
Fix /sperf tunnel: keep rewrite to /cdn-cgi/rum (original Cloudflare endpoint)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:40:42 +01:00
Serreau Jovann
13321edd8e
Rename /rum to /sperf tunnel, exclude editor.js and event-map.js from coverage
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:39:39 +01:00
Serreau Jovann
361548d65c
Add /rum tunnel to bypass adblock for Cloudflare RUM endpoint
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:38:17 +01:00
Serreau Jovann
e154713878
Extract initCopyUrl to module, add tests for copy-url and event-map coverage
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:37:12 +01:00
Serreau Jovann
0cd1e0f061
Remove unused imports: MeilisearchService from HomeController, Event from AdminController
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:35:22 +01:00
Serreau Jovann
2ed17defe0
Extract searchEvents() to EventIndexService, reduce duplication across controllers
...
- Add searchEvents() method: Meilisearch search with DB fallback
- Use in HomeController, AdminController, AccountController (removes ~45 duplicated lines)
- Add assets/vendor/ to ESLint ignores
- Update EventIndexServiceTest for new constructor
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:33:37 +01:00
Serreau Jovann
13b6fd95be
Extract social icons to shared partial _social_icons.html.twig to reduce duplication
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:29:58 +01:00
Serreau Jovann
295f1cf633
Ignore php:S1192 duplicate literal in HomeController (Route requirements can't use constants)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:27:09 +01:00
Serreau Jovann
1f5a9105fa
Fix ESLint globals, parseFloat to Number.parseFloat, label for, add AccountController coverage tests
...
- Add setTimeout, globalThis, navigator, fetch, caches etc to ESLint globals
- Use Number.parseFloat in event-map.js
- Add for attribute to admin events search label
- Add tests: events search, toggle/delete access denied for other user
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:25:53 +01:00
Serreau Jovann
056b104536
Add tests: CSP GET 204, events page, event detail, slug redirect, offline event, contact empty fields, offline page
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:23:21 +01:00
Serreau Jovann
63a11721ee
Add tests for EventIndexService catch blocks when Meilisearch is unavailable
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:19:39 +01:00
Serreau Jovann
5fc329c2dd
Upgrade spomky-labs/pwa-bundle to 1.5.7
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:16:16 +01:00
Serreau Jovann
38f03086d8
fix error navbar
2026-03-20 21:14:24 +01:00
Serreau Jovann
edd22462a6
fix error navbar
2026-03-20 21:12:34 +01:00
Serreau Jovann
83a2c44d12
attemted fix error bg color footer
2026-03-20 21:12:01 +01:00
Serreau Jovann
f23bf28bf7
Add minimal serviceworker config with src only
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:06:16 +01:00
Serreau Jovann
942dc62112
Remove serviceworker from PWA config
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:05:27 +01:00
Serreau Jovann
b2c8ecf609
aa
2026-03-20 21:04:27 +01:00
Serreau Jovann
61ee9214dd
Remove asset_cache, image_cache, font_cache from workbox config
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:04:00 +01:00
Serreau Jovann
48da63625b
Remove unsupported max_entries from asset_cache config
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:02:57 +01:00
Serreau Jovann
5b3d9f96ab
Add workbox clear_cache: true for cache cleanup on SW update
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:02:30 +01:00
Serreau Jovann
a9e98faf39
Add service worker with workbox: asset/image/font cache, offline fallback
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 21:01:56 +01:00
Serreau Jovann
dee2d18438
Restore full PWA manifest: icons, display_override, categories, shortcuts, favicons
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 20:59:54 +01:00
Serreau Jovann
47cde556d6
Remove pwa:create:sw from Makefile, restore shortcuts without icons
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 20:59:19 +01:00
Serreau Jovann
156042a640
Simplify pwa() call to defaults
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 20:57:25 +01:00
Serreau Jovann
b10ac92b99
Simplify PWA config: manifest + favicons only, remove icons and image_processor
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 20:56:21 +01:00
Serreau Jovann
4ae23e1419
Downgrade spomky-labs/pwa-bundle to 1.4.*
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 20:55:49 +01:00
Serreau Jovann
e10b3bfa5c
Remove service worker and workbox from PWA config
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 20:50:43 +01:00
Serreau Jovann
16ddacff71
aa
2026-03-20 20:48:01 +01:00
Serreau Jovann
7cec1641e3
aa
2026-03-20 20:47:11 +01:00