Dandelion is a fair source project. View the code on Github

Commits on Mar 23, 2026
dc82aac

🐛 (emails): fix evergreen events to not show tickets table and adjust greeting text

The tickets table email partial and tickets email template were not properly handling evergreen events: - The tickets table partial was conditionally hiding only some rows instead of the entire table - The tickets email greeting was including time/location placeholders that don't apply to evergreen events - Test was using incorrect URL path for checking evergreen events visibility


✨ (server.ts): add environment variable support for port configuration

56d77e0

💬 (event_validation.rb): set no_tickets_pdf to true by default in default_values method

6497249

♻️ Refactor evergreen filter to use cleaner MongoDB syntax

9adee61

♻️ (test): refactor tests to use Rack::Test methods instead of custom raw_get helper

This commit replaces the custom raw_get helper method with standard Rack::Test methods. The app method is now the conventional way to define the application for testing, and using get with last_response provides a cleaner, more idiomatic approach to testing HTTP requests in Rack-based applications.

6d64e17

♻️ (evm.rb): remove unused _account parameter and add keyword splat for flexibility

95ee679

💄 Update tests to match new UI copy and interaction for evergreen events

8879494

♻️ Prefixed unused account parameter with underscore in EVM payment method to follow Ruby convention

a5aeed5

✨ Add evergreen/on-demand event type for courses without fixed dates

Commits on Mar 22, 2026
a025b0d

♻️ Split PaymentMethod into EventPaymentMethod and GatheringPaymentMethod

Refactor payment methods to separate concerns between events and gatherings. The monolithic PaymentMethod class is replaced by two distinct classes, each with their own payment processors, improving maintainability and clarity of the codebase.

e0f03ce

🐛 (tickets.erb): remove "tickets are attached" message when no tickets PDF exists

e5eeb84

♻️ Extract payment handlers into dedicated modules for events and gatherings

45b6465

♻️ Extract duplicated EVM payment logic into reusable runEvmPaymentFlow function

3e7a44f

♻️ Normalize payment API response field names by removing evm_ prefix from value fields

d8bc0e0

♻️ (stripe.rb): rename organisationship variable to revenue_sharer_organisationship for clarity

918e1eb

⚰️ Remove outdated comment from order_currency_for method

60f046b

♻️ Refactor payment condition logic to separate org and event concerns This commit: - Renames condition to event_condition for clarity - Consolidates org_condition checks into available? method to avoid duplication - Simplifies lambda syntax using method references where applicable

bfb2776

♻️ Remove logo and url attributes from PaymentMethod class

Simplify PaymentMethod model by moving logo and URL data directly into the view, eliminating unnecessary attributes and options.

7f693b6

🐛 Fix payment method validation to check availability per event

This change adds a critical available? check in the payment processing flow to ensure payment methods are genuinely available for a specific event before attempting to process payments. The check complements the existing condition validation by providing an additional availability layer that can evaluate dynamic per-event constraints.

082dc3b

♻️ Extract payment method processing logic into separate module files

c7e70ec

♻️ Move order currency logic to PaymentMethod class

Extract currency mapping from helper to allow payment methods to define their own order_currency_for behavior