Closed
Conversation
…cts, questions, order management Implements the following GitHub issues: Event Settings & Configuration: - HiEventsDev#244: Hide event start date option - HiEventsDev#580: Disable attendee ticket email setting - HiEventsDev#475: Meta/Facebook Pixel tracking integration - HiEventsDev#186: Event password/access control protection - HiEventsDev#265: Event location type (physical/online/hybrid) - HiEventsDev#267: External ticket URL redirect support - HiEventsDev#206: Stripe payment method ordering - HiEventsDev#308: Order-level min/max quantity enforcement - HiEventsDev#184: Tax-inclusive price display mode - HiEventsDev#1118: Social links settings section - HiEventsDev#219: SEO settings improvements - HiEventsDev#774: Homepage theme color customization - HiEventsDev#772: Attendee details collection method Products & Pricing: - HiEventsDev#1076: Require attendee details per product - HiEventsDev#1075: Require attendee email per product - HiEventsDev#936: Hidden prices revealed by promo code - HiEventsDev#770: Product highlight fields - HiEventsDev#617: Start collapsed option for product categories - HiEventsDev#322: Product sort/reorder functionality Promo Codes: - HiEventsDev#414: Promo code valid_from date scheduling - HiEventsDev#933: Promo code custom message display - HiEventsDev#1136: Max attendee usages limit per promo code Questions: - HiEventsDev#972: Conditional question display logic - HiEventsDev#1124: Custom validation rules for questions Attendees: - HiEventsDev#576: Cancellation reason tracking - HiEventsDev#1117: Attendee notes field - HiEventsDev#182: Bulk check-in modal - HiEventsDev#743: QR code batch printing for attendees Orders: - HiEventsDev#1063: Order approval/rejection workflow - HiEventsDev#1024: Duplicate order detection - HiEventsDev#589: Order failed email notification improvements Organizer: - HiEventsDev#245: Legal URLs in organizer settings - HiEventsDev#170: Organizer event ICS calendar export - HiEventsDev#367: Public events listing endpoint Email & Messaging: - HiEventsDev#890: Email template service enhancements - HiEventsDev#727: Scheduled message support - HiEventsDev#1041: Message type enum expansion Other: - HiEventsDev#885: Event document head improvements - HiEventsDev#1055: About modal enhancements - HiEventsDev#716: Online event details component - HiEventsDev#490: Address utilities improvements - HiEventsDev#778: URL helper enhancements - HiEventsDev#32: Short event redirect loader - HiEventsDev#599: Event card improvements - HiEventsDev#360: Currency display component updates - HiEventsDev#1000: Checkout question improvements - HiEventsDev#993: Stripe checkout form enhancements - HiEventsDev#502: Tax online-only flag Includes 24 database migrations, domain object updates, API resource changes, frontend type definitions, and UI components.
…nd fees Implements GitHub issue HiEventsDev#879 - Per-order fees Adds TaxAndFeeApplicationType enum (PER_UNIT, PER_ORDER) allowing fees to be applied once per order rather than per ticket/product unit. - New TaxAndFeeApplicationType enum with PER_UNIT and PER_ORDER values - Migration to add application_type column to taxes_and_fees table - Backend calculation logic updated in TaxAndFeeCalculationService - Frontend TaxAndFeeForm updated with application type selector - OrderManagementService handles per-order fee rollup at order level Note: Shared service/resource changes included in base commit.
…order validation Implements GitHub issue HiEventsDev#1048 - Checkout validation webhook Allows event organizers to configure an external webhook URL that is called during checkout to validate orders before completion. Enables custom business rules like attendee blacklists, purchase limits, or external inventory checks. - New CheckoutValidationWebhookService with HTTP POST to configured URL - Migration for checkout_validation_webhook_url in event_settings - Integration into CompleteOrderHandler and CreateOrderHandler - Frontend settings UI in HomepageAndCheckoutSettings section Note: Shared handler/settings changes included in base commit.
Implements GitHub issue HiEventsDev#28 - Optional first/last name Adds a require_attendee_name event setting that controls whether first and last name fields are required during checkout. When disabled, name fields become optional in the attendee information collection form. - Migration for require_attendee_name boolean in event_settings (default true) - EventSettingDomainObjectAbstract updated with new property - CompleteOrderValidator conditionally validates name fields - ProductQuestionRule adapts required/nullable based on setting - Frontend HomepageAndCheckoutSettings toggle switch - CollectInformation form shows conditional asterisk on name fields Note: Shared domain/settings/validator changes included in base commit.
…ders Implements GitHub issue HiEventsDev#493 - Free ticket expiration Adds automatic cancellation of reserved free-ticket orders that remain incomplete beyond a configurable time window. Prevents inventory hoarding from abandoned free checkouts. - New CancelExpiredFreeOrdersJob scheduled every 5 minutes - Migration for free_ticket_expiration_minutes in event_settings - Queries orders with RESERVED status, no payment, past expiration window - Cancels expired orders and releases reserved product quantities - Frontend HomepageAndCheckoutSettings with expiration minutes input - Registered in Console/Kernel.php scheduler Note: Shared Kernel/settings changes included in base commit.
Implements GitHub issue HiEventsDev#128 - Tax inclusive pricing Enables taxes/fees to be configured as inclusive (already included in the displayed price) rather than exclusive (added on top). Uses the formula: tax_amount = price * rate / (100 + rate) to extract the inclusive tax component from the displayed price. - Migration adds is_tax_inclusive boolean to taxes_and_fees table - TaxCalculationResponse extended with inclusiveTaxTotal field - TaxAndFeeCalculationService handles inclusive formula calculation - TaxAndFeeRollupService aggregates inclusive vs exclusive amounts - OrderItemProcessingService adjusts totalGross to exclude inclusive tax - OrderManagementService handles per-order inclusive fee calculation - ProductPriceDomainObject and ProductFilterService price adjustments - Frontend TaxAndFeeForm with is_tax_inclusive toggle switch - Tax display in modals and Currency component updated Note: Shared service/resource/type changes included in base commit.
Implements GitHub issue HiEventsDev#759 - Abandoned checkout tracking Tracks orders that remain in RESERVED status past their session timeout by transitioning them to a new ABANDONED status. Provides visibility into checkout abandonment rates on the event dashboard. - New MarkExpiredOrdersAsAbandonedJob scheduled every 5 minutes - Migration adds orders_abandoned column to event_statistics and event_daily_statistics tables - EventStatisticDomainObject and EventDailyStatistic updated - EventStatsFetchService aggregates abandoned order counts - OrderRepository extended with findExpiredReservedOrders method - Frontend EventDashboard displays abandoned orders in stat boxes and chart - Frontend types updated with orders_abandoned field Note: Shared stats/Kernel/type changes included in base commit.
Implements GitHub issue HiEventsDev#187 - Box Office / Walk-in Tickets Enables event administrators to create orders directly from the admin panel, bypassing the public checkout flow. Designed for box office, walk-in, and phone order scenarios. Backend: - CreateManualOrderDTO with buyer info, products, promo_code, notes - CreateManualOrderRequest with full validation rules - CreateManualOrderHandler: transactional order creation with pg_advisory_lock, product availability validation, tax/fee/promo calculation via existing OrderItemProcessingService, attendee generation, quantity updates - CreateManualOrderAction: admin-authenticated endpoint - POST /events/{event_id}/orders route Frontend: - CreateManualOrderModal: full modal with buyer info fields, product cards with quantity selectors per price tier, sold-out badges, notes, send confirmation toggle - useCreateManualOrder mutation hook - 'Create Order' button added to orders page toolbar - order.client.ts extended with createManualOrder API method Orders created as COMPLETED with is_manually_created=true, triggering full event pipeline (statistics, emails, webhooks, invoicing).
Contributor
|
All contributors have signed the CLA ✍️ ✅ |
HiEventsDev#330, HiEventsDev#698, HiEventsDev#361, HiEventsDev#234, HiEventsDev#335, HiEventsDev#747) - HiEventsDev#714: Automatic sales report emails (daily/weekly/monthly) - HiEventsDev#712: Site-wide voucher codes (account-level promo codes) - HiEventsDev#330: Certificate of attendance PDF download - HiEventsDev#698: Custom document templates (Liquid-based) - HiEventsDev#361: Ticket packages/bundles with CRUD - HiEventsDev#234: Upselling capabilities on products - HiEventsDev#335: Provisional reservation (book now, pay later) - HiEventsDev#747: Multi-step checkout wizard configuration Backend: 8 migrations, 30+ new files, 18 modified files Frontend: 6 new API clients, types extended for all features Fix: GetSiteWideVouchersAction paginatedResourceResponse bug
Author
|
I have read the CLA Document and I hereby sign the CLA |
, HiEventsDev#338, HiEventsDev#33, HiEventsDev#32) - OAuth: Google & Apple login with token verification and account linking - MFA: TOTP-based multi-factor auth with encrypted secrets, hashed recovery codes - WebAuthn/Passkeys: Registration and passwordless login with challenge caching - Private Events: Access code validation with constant-time comparison, data filtering - Audit logging for all security events (MFA, OAuth, passkey actions) - 4 migrations: user OAuth/MFA fields, webauthn_credentials, event_settings privacy, mfa_audit_logs - 15 new API actions with routes, 5 domain services - Frontend: TypeScript types and API clients for MFA, WebAuthn, OAuth, auth config - Composer: added pragmarx/google2fa for TOTP support
…rid events Session 11: Reports, Mobile, PWA & Advanced Features Reports & Analytics: - HiEventsDev#744 Attendees by ticket type report (SQL CTE-based) - HiEventsDev#716 View generated invoices (paginated API endpoint) Mobile & Apps: - HiEventsDev#244 PWA support (vite-plugin-pwa, offline, service worker) - HiEventsDev#236 Flutter mobile app scaffold (check-in, QR scan) - HiEventsDev#189 Mobile wallet integration (Apple/Google Wallet) - HiEventsDev#186 QR code printing (PDF labels with DomPDF) Advanced Features: - HiEventsDev#1000 Subscribable ICS calendar feed - HiEventsDev#998 ActivityPub federation support - HiEventsDev#772 Subscribe to future events - HiEventsDev#759 Abandoned checkout recovery emails - HiEventsDev#39 Seating charts (3-table schema, CRUD, assignment) - HiEventsDev#589 Better hybrid events (per-product attendance mode) 4 migrations (000037-000040), 50+ new files, 75 files total
…memberships, POS, bulk import, Google Maps Session 12: Tier 2 High Priority Features (Competitive Advantage) Visual Seating Chart Builder (#7): - Interactive canvas-based builder with drag-and-drop sections - Pan/zoom (0.3x-2.5x), section property editor, live seat preview - API client, React Query hooks, route, and nav item Gift Cards (#8): - Batch creation, atomic redemption, balance tracking - Usage logging per order, public redeem and check-balance endpoints Memberships & Season Passes (HiEventsDev#9): - Plans with duration, renewal type, max events, benefits - Event access control, membership validation endpoint In-Person Sales / POS (HiEventsDev#10): - POS sessions with open/close/transaction tracking - Stripe Terminal integration for card reader support Bulk Attendee Import (HiEventsDev#11): - CSV parsing with validation and deduplication - File upload or inline CSV data support Google Maps on Event Pages (HiEventsDev#12): - Venue coordinates with admin UI fields - Google Maps iframe embed (no API key required) Social Sharing (HiEventsDev#13): Verified already implemented (WhatsApp, FB, X, etc.) 4 migrations (000041-000044), 47 files changed
Contributor
|
Hi @chmunyas, I appreciate the effort here but I can't accept this PR. It touches ~465 files, adds ~30k lines, and claims to close around 70 issues in one go. That's not reviewable unfortunately.
If you want to split this up, I'll happily look at the individual pieces. For each one please:
Closing this one for now. Thanks again for taking an interest in the project. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Thank you for creating a PR! We appreciate your contribution to Hi.Events.
To make the process as smooth as possible, please ensure you've read the contributing guidelines before proceeding.
Please include a summary of the changes and the issue being fixed or the feature being added. The more detail, the better!
Checklist
Thank you for your contribution! 🎉