Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions backend/app/DomainObjects/Enums/EventCategory.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,17 @@ public function label(): string
};
}

public function terminology(): ProductTerminology
{
return match ($this) {
self::WELLNESS, self::SPIRITUALITY, self::DANCE => ProductTerminology::CLASSES,
self::WORKSHOP, self::EDUCATION => ProductTerminology::REGISTRATIONS,
self::TOURS => ProductTerminology::BOOKINGS,
self::BUSINESS, self::TECH => ProductTerminology::PASSES,
default => ProductTerminology::TICKETS,
};
}

public function emoji(): string
{
return match ($this) {
Expand Down
60 changes: 60 additions & 0 deletions backend/app/DomainObjects/Enums/ProductTerminology.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php

namespace HiEvents\DomainObjects\Enums;

enum ProductTerminology
{
case TICKETS;
case CLASSES;
case REGISTRATIONS;
case BOOKINGS;
case PASSES;

public static function forCategory(?string $category): self
{
if ($category === null) {
return self::TICKETS;
}

return EventCategory::tryFrom($category)?->terminology() ?? self::TICKETS;
}

public function defaultProductCategoryName(): string
{
return match ($this) {
self::TICKETS, self::BOOKINGS => __('Tickets'),
self::CLASSES => __('Classes'),
self::REGISTRATIONS => __('Registration'),
self::PASSES => __('Passes'),
};
}

public function defaultNoProductsMessage(): string
{
return match ($this) {
self::TICKETS, self::BOOKINGS => __('There are no tickets available for this event'),
self::CLASSES => __('There are no classes available for this event'),
self::REGISTRATIONS => __('Registration is not open for this event'),
self::PASSES => __('There are no passes available for this event'),
};
}

public function defaultContinueButtonText(): string
{
return match ($this) {
self::TICKETS => __('Continue'),
self::CLASSES, self::BOOKINGS => __('Book Now'),
self::REGISTRATIONS, self::PASSES => __('Register'),
};
}

public function defaultGetTicketsButtonText(): ?string
{
return match ($this) {
self::TICKETS => null,
self::CLASSES, self::BOOKINGS => __('Book Now'),
self::REGISTRATIONS => __('Register'),
self::PASSES => __('Get Passes'),
};
}
}
5 changes: 4 additions & 1 deletion backend/app/Services/Domain/Event/CreateEventService.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use HiEvents\DomainObjects\Enums\HomepageBackgroundType;
use HiEvents\DomainObjects\Enums\ImageType;
use HiEvents\DomainObjects\Enums\PaymentProviders;
use HiEvents\DomainObjects\Enums\ProductTerminology;
use HiEvents\DomainObjects\EventDomainObject;
use HiEvents\DomainObjects\EventSettingDomainObject;
use HiEvents\DomainObjects\OrganizerDomainObject;
Expand Down Expand Up @@ -207,6 +208,7 @@ private function createEventSettings(

$organizerSettings = $organizer->getOrganizerSettings();
$organizerThemeSettings = $organizerSettings->getHomepageThemeSettings() ?? [];
$terminology = ProductTerminology::forCategory($event->getCategory());

// Build the new homepage_theme_settings from organizer settings
$homepageThemeSettings = [
Expand Down Expand Up @@ -237,7 +239,8 @@ private function createEventSettings(
'homepage_secondary_text_color' => '#ffffff',
'homepage_secondary_color' => $homepageThemeSettings['accent'],

'continue_button_text' => __('Continue'),
'continue_button_text' => $terminology->defaultContinueButtonText(),
'get_tickets_button_text' => $terminology->defaultGetTicketsButtonText(),
'support_email' => $organizer->getEmail(),

'payment_providers' => [PaymentProviders::STRIPE->value],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace HiEvents\Services\Domain\Organizer;

use HiEvents\DomainObjects\Enums\AttendeeDetailsCollectionMethod;
use HiEvents\DomainObjects\Enums\ColorTheme;
use HiEvents\DomainObjects\Enums\OrganizerHomepageVisibility;
use HiEvents\DomainObjects\OrganizerDomainObject;
Expand All @@ -21,12 +22,9 @@ public function createOrganizerSettings(OrganizerDomainObject $organizer): void
$this->organizerSettingsRepository->create([
'organizer_id' => $organizer->getId(),
'homepage_visibility' => OrganizerHomepageVisibility::PUBLIC->name,

// Use the "Modern" theme as default
'homepage_theme_settings' => $defaultTheme->getThemeData(),

// Platform fee pass-through default from config
'default_pass_platform_fee_to_buyer' => config('app.saas_default_pass_platform_fee_to_buyer', false),
'default_attendee_details_collection_method' => AttendeeDetailsCollectionMethod::PER_ORDER->name,
'default_pass_platform_fee_to_buyer' => config('app.saas_default_pass_platform_fee_to_buyer', true),
]);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace HiEvents\Services\Domain\ProductCategory;

use HiEvents\DomainObjects\Enums\ProductTerminology;
use HiEvents\DomainObjects\EventDomainObject;
use HiEvents\DomainObjects\ProductCategoryDomainObject;
use HiEvents\Repository\Interfaces\ProductCategoryRepositoryInterface;
Expand All @@ -19,11 +20,13 @@ public function createCategory(ProductCategoryDomainObject $productCategoryDomai

public function createDefaultProductCategory(EventDomainObject $event): void
{
$terminology = ProductTerminology::forCategory($event->getCategory());

$this->createCategory((new ProductCategoryDomainObject)
->setEventId($event->getId())
->setName(__('Tickets'))
->setName($terminology->defaultProductCategoryName())
->setIsHidden(false)
->setNoProductsMessage(__('There are no tickets available for this event'))
->setNoProductsMessage($terminology->defaultNoProductsMessage())
);
}
}
2 changes: 1 addition & 1 deletion backend/config/app.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
'saas_mode_enabled' => env('APP_SAAS_MODE_ENABLED', false),
'saas_stripe_application_fee_percent' => env('APP_SAAS_STRIPE_APPLICATION_FEE_PERCENT', 1.5),
'saas_stripe_application_fee_fixed' => env('APP_SAAS_STRIPE_APPLICATION_FEE_FIXED', 0),
'saas_default_pass_platform_fee_to_buyer' => env('APP_SAAS_DEFAULT_PASS_PLATFORM_FEE_TO_BUYER', false),
'saas_default_pass_platform_fee_to_buyer' => env('APP_SAAS_DEFAULT_PASS_PLATFORM_FEE_TO_BUYER', true),
'disable_registration' => env('APP_DISABLE_REGISTRATION', false),
'api_rate_limit_per_minute' => env('APP_API_RATE_LIMIT_PER_MINUTE', 180),
'stripe_connect_account_type' => env('APP_STRIPE_CONNECT_ACCOUNT_TYPE', 'express'),
Expand Down
11 changes: 10 additions & 1 deletion backend/lang/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -690,5 +690,14 @@
"Your :appName account has been permanently deleted.": "Ihr :appName-Konto wurde endgültig gelöscht.",
"All personal information has been removed. Anonymized transaction records (amounts, dates, and invoice details) have been retained as required for legal and tax purposes.": "Alle personenbezogenen Daten wurden entfernt. Anonymisierte Transaktionsdaten (Beträge, Daten und Rechnungsdetails) wurden gemäß rechtlichen und steuerlichen Anforderungen aufbewahrt.",
"All of your account data has been permanently removed.": "Alle Ihre Kontodaten wurden dauerhaft entfernt.",
"Thank you for using :appName. You are welcome back at any time.": "Vielen Dank, dass Sie :appName genutzt haben. Sie sind jederzeit wieder willkommen."
"Thank you for using :appName. You are welcome back at any time.": "Vielen Dank, dass Sie :appName genutzt haben. Sie sind jederzeit wieder willkommen.",
"Classes": "Kurse",
"There are no classes available for this event": "Für diese Veranstaltung sind keine Kurse verfügbar",
"Book Now": "Jetzt buchen",
"Registration": "Anmeldung",
"Registration is not open for this event": "Die Anmeldung für diese Veranstaltung ist nicht geöffnet",
"Register": "Anmelden",
"Passes": "Pässe",
"There are no passes available for this event": "Für diese Veranstaltung sind keine Pässe verfügbar",
"Get Passes": "Pässe sichern"
}
11 changes: 10 additions & 1 deletion backend/lang/el.json
Original file line number Diff line number Diff line change
Expand Up @@ -690,5 +690,14 @@
"Your :appName account has been permanently deleted.": "Ο λογαριασμός σας στο :appName διαγράφηκε οριστικά.",
"All personal information has been removed. Anonymized transaction records (amounts, dates, and invoice details) have been retained as required for legal and tax purposes.": "Όλα τα προσωπικά δεδομένα έχουν διαγραφεί. Ανωνυμοποιημένα αρχεία συναλλαγών (ποσά, ημερομηνίες και στοιχεία τιμολογίων) έχουν διατηρηθεί όπως απαιτείται για νομικούς και φορολογικούς σκοπούς.",
"All of your account data has been permanently removed.": "Όλα τα δεδομένα του λογαριασμού σας έχουν διαγραφεί οριστικά.",
"Thank you for using :appName. You are welcome back at any time.": "Ευχαριστούμε που χρησιμοποιήσατε το :appName. Είστε ευπρόσδεκτοι ξανά οποιαδήποτε στιγμή."
"Thank you for using :appName. You are welcome back at any time.": "Ευχαριστούμε που χρησιμοποιήσατε το :appName. Είστε ευπρόσδεκτοι ξανά οποιαδήποτε στιγμή.",
"Classes": "Μαθήματα",
"There are no classes available for this event": "Δεν υπάρχουν διαθέσιμα μαθήματα για αυτήν την εκδήλωση",
"Book Now": "Κράτηση τώρα",
"Registration": "Εγγραφή",
"Registration is not open for this event": "Οι εγγραφές για αυτήν την εκδήλωση δεν είναι ανοιχτές",
"Register": "Εγγραφή",
"Passes": "Πάσα",
"There are no passes available for this event": "Δεν υπάρχουν διαθέσιμα πάσα για αυτήν την εκδήλωση",
"Get Passes": "Αποκτήστε πάσα"
}
11 changes: 10 additions & 1 deletion backend/lang/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -735,5 +735,14 @@
"Your :appName account has been permanently deleted.": "Tu cuenta de :appName ha sido eliminada permanentemente.",
"All personal information has been removed. Anonymized transaction records (amounts, dates, and invoice details) have been retained as required for legal and tax purposes.": "Toda la información personal ha sido eliminada. Los registros de transacciones anonimizados (importes, fechas y detalles de facturas) se han conservado según lo exigido por motivos legales y fiscales.",
"All of your account data has been permanently removed.": "Todos los datos de tu cuenta han sido eliminados permanentemente.",
"Thank you for using :appName. You are welcome back at any time.": "Gracias por usar :appName. Eres bienvenido de nuevo en cualquier momento."
"Thank you for using :appName. You are welcome back at any time.": "Gracias por usar :appName. Eres bienvenido de nuevo en cualquier momento.",
"Classes": "Clases",
"There are no classes available for this event": "No hay clases disponibles para este evento",
"Book Now": "Reservar ahora",
"Registration": "Inscripción",
"Registration is not open for this event": "La inscripción para este evento no está abierta",
"Register": "Inscribirse",
"Passes": "Pases",
"There are no passes available for this event": "No hay pases disponibles para este evento",
"Get Passes": "Obtener pases"
}
11 changes: 10 additions & 1 deletion backend/lang/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -690,5 +690,14 @@
"Your :appName account has been permanently deleted.": "Votre compte :appName a été définitivement supprimé.",
"All personal information has been removed. Anonymized transaction records (amounts, dates, and invoice details) have been retained as required for legal and tax purposes.": "Toutes les informations personnelles ont été supprimées. Des enregistrements de transactions anonymisés (montants, dates et détails de factures) ont été conservés conformément aux exigences légales et fiscales.",
"All of your account data has been permanently removed.": "Toutes les données de votre compte ont été définitivement supprimées.",
"Thank you for using :appName. You are welcome back at any time.": "Merci d'avoir utilisé :appName. Vous êtes le bienvenu à tout moment."
"Thank you for using :appName. You are welcome back at any time.": "Merci d'avoir utilisé :appName. Vous êtes le bienvenu à tout moment.",
"Classes": "Cours",
"There are no classes available for this event": "Aucun cours disponible pour cet événement",
"Book Now": "Réserver maintenant",
"Registration": "Inscription",
"Registration is not open for this event": "Les inscriptions pour cet événement ne sont pas ouvertes",
"Register": "S'inscrire",
"Passes": "Pass",
"There are no passes available for this event": "Aucun pass disponible pour cet événement",
"Get Passes": "Obtenir un pass"
}
11 changes: 10 additions & 1 deletion backend/lang/hu.json
Original file line number Diff line number Diff line change
Expand Up @@ -690,5 +690,14 @@
"Your :appName account has been permanently deleted.": "Az Ön :appName fiókja véglegesen törölve lett.",
"All personal information has been removed. Anonymized transaction records (amounts, dates, and invoice details) have been retained as required for legal and tax purposes.": "Minden személyes adat törlésre került. Az anonimizált tranzakciós adatok (összegek, dátumok és számlaadatok) jogi és adózási követelményeknek megfelelően megőrzésre kerültek.",
"All of your account data has been permanently removed.": "Fiókjának minden adata véglegesen törlésre került.",
"Thank you for using :appName. You are welcome back at any time.": "Köszönjük, hogy a :appName szolgáltatást használta. Bármikor szívesen látjuk újra."
"Thank you for using :appName. You are welcome back at any time.": "Köszönjük, hogy a :appName szolgáltatást használta. Bármikor szívesen látjuk újra.",
"Classes": "Órák",
"There are no classes available for this event": "Ehhez az eseményhez nincsenek elérhető órák",
"Book Now": "Foglalás most",
"Registration": "Regisztráció",
"Registration is not open for this event": "A regisztráció nem elérhető ehhez az eseményhez",
"Register": "Regisztráció",
"Passes": "Belépők",
"There are no passes available for this event": "Ehhez az eseményhez nincsenek elérhető belépők",
"Get Passes": "Belépők vásárlása"
}
11 changes: 10 additions & 1 deletion backend/lang/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -691,5 +691,14 @@
"Your :appName account has been permanently deleted.": "Il tuo account :appName è stato eliminato in modo permanente.",
"All personal information has been removed. Anonymized transaction records (amounts, dates, and invoice details) have been retained as required for legal and tax purposes.": "Tutte le informazioni personali sono state rimosse. I record delle transazioni anonimizzati (importi, date e dettagli delle fatture) sono stati conservati come richiesto per scopi legali e fiscali.",
"All of your account data has been permanently removed.": "Tutti i dati del tuo account sono stati rimossi in modo permanente.",
"Thank you for using :appName. You are welcome back at any time.": "Grazie per aver usato :appName. Sarai sempre il benvenuto."
"Thank you for using :appName. You are welcome back at any time.": "Grazie per aver usato :appName. Sarai sempre il benvenuto.",
"Classes": "Lezioni",
"There are no classes available for this event": "Non ci sono lezioni disponibili per questo evento",
"Book Now": "Prenota ora",
"Registration": "Iscrizione",
"Registration is not open for this event": "Le iscrizioni per questo evento non sono aperte",
"Register": "Iscriviti",
"Passes": "Pass",
"There are no passes available for this event": "Non ci sono pass disponibili per questo evento",
"Get Passes": "Ottieni pass"
}
11 changes: 10 additions & 1 deletion backend/lang/nl.json
Original file line number Diff line number Diff line change
Expand Up @@ -690,5 +690,14 @@
"Your :appName account has been permanently deleted.": "Je :appName-account is permanent verwijderd.",
"All personal information has been removed. Anonymized transaction records (amounts, dates, and invoice details) have been retained as required for legal and tax purposes.": "Alle persoonlijke gegevens zijn verwijderd. Geanonimiseerde transactiegegevens (bedragen, datums en factuurgegevens) zijn bewaard zoals vereist voor juridische en fiscale doeleinden.",
"All of your account data has been permanently removed.": "Alle gegevens van je account zijn permanent verwijderd.",
"Thank you for using :appName. You are welcome back at any time.": "Bedankt voor het gebruik van :appName. Je bent altijd weer welkom."
"Thank you for using :appName. You are welcome back at any time.": "Bedankt voor het gebruik van :appName. Je bent altijd weer welkom.",
"Classes": "Lessen",
"There are no classes available for this event": "Er zijn geen lessen beschikbaar voor dit evenement",
"Book Now": "Nu boeken",
"Registration": "Inschrijving",
"Registration is not open for this event": "De inschrijving voor dit evenement is niet geopend",
"Register": "Inschrijven",
"Passes": "Passen",
"There are no passes available for this event": "Er zijn geen passen beschikbaar voor dit evenement",
"Get Passes": "Passen kopen"
}
11 changes: 10 additions & 1 deletion backend/lang/pl.json
Original file line number Diff line number Diff line change
Expand Up @@ -690,5 +690,14 @@
"Your :appName account has been permanently deleted.": "Twoje konto :appName zostało trwale usunięte.",
"All personal information has been removed. Anonymized transaction records (amounts, dates, and invoice details) have been retained as required for legal and tax purposes.": "Wszystkie dane osobowe zostały usunięte. Zanonimizowane zapisy transakcji (kwoty, daty i szczegóły faktur) zostały zachowane zgodnie z wymogami prawnymi i podatkowymi.",
"All of your account data has been permanently removed.": "Wszystkie dane Twojego konta zostały trwale usunięte.",
"Thank you for using :appName. You are welcome back at any time.": "Dziękujemy za korzystanie z :appName. Zapraszamy ponownie w każdej chwili."
"Thank you for using :appName. You are welcome back at any time.": "Dziękujemy za korzystanie z :appName. Zapraszamy ponownie w każdej chwili.",
"Classes": "Zajęcia",
"There are no classes available for this event": "Brak dostępnych zajęć dla tego wydarzenia",
"Book Now": "Zarezerwuj teraz",
"Registration": "Rejestracja",
"Registration is not open for this event": "Rejestracja na to wydarzenie nie jest otwarta",
"Register": "Zarejestruj się",
"Passes": "Karnety",
"There are no passes available for this event": "Brak dostępnych karnetów dla tego wydarzenia",
"Get Passes": "Kup karnet"
}
Loading
Loading