Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
12a9088
Add organizer dashboard
daveearley May 26, 2025
3e80c1b
Work on organizer dashboard styling
daveearley May 29, 2025
cba7afc
Redesign Create Event Modal
daveearley May 30, 2025
1d471a2
Add sidebar callout + clean up styles
daveearley May 30, 2025
6b0ab4d
Style fixes
daveearley May 30, 2025
b3b5452
Tanstack query hydration updates
daveearley May 30, 2025
b17bf69
Tanstack query hydration updates
daveearley May 30, 2025
5bfc20f
Update organizer themes
daveearley May 31, 2025
10a7d7d
Add schema.org organizer schema
daveearley Jun 1, 2025
1b51027
Cleanup
daveearley Jun 1, 2025
35b3779
Update event homepage design
daveearley Jun 3, 2025
101cf2f
Update event and organizer styles
daveearley Jun 4, 2025
5bfbc46
Update organizer sections on event and organizer page
daveearley Jun 5, 2025
a120441
Add status toggle on organizer page
daveearley Jun 6, 2025
bc4bbef
Update logo styles
daveearley Jun 7, 2025
649094f
Add organizer background image option
daveearley Jun 8, 2025
5de19e8
Simplify organizer dashboard event fetch logic
daveearley Jun 8, 2025
1d06fb7
refresh homepage designer on image delete
daveearley Jun 9, 2025
56bd877
Fix sidebar open/close
daveearley Jun 9, 2025
39e3c58
UI tweaks
daveearley Jun 11, 2025
6f24193
i18n
daveearley Jun 11, 2025
e66c5d5
Update settings update action fix organizer preview
daveearley Jun 11, 2025
7147a8f
Update tests
daveearley Jun 12, 2025
08905a8
Update .gitignore
daveearley Jun 12, 2025
1f58bcb
Update sidebar styles
daveearley Jun 12, 2025
1e0e7e0
Fix cover image being cut off
daveearley Jun 12, 2025
47dfb4c
Update the homepage designer pages
daveearley Jun 13, 2025
d29f683
Fix organizer page link
daveearley Jun 13, 2025
96ccf3c
Merge branch '2.0.0-alpha' into feature/add-public-organizer-pages
daveearley Jun 13, 2025
c27ec4f
update price tag color
daveearley Jun 13, 2025
01b8dae
Merge branch 'feature/add-public-organizer-pages' of github.com:HiEve…
daveearley Jun 13, 2025
2ec0885
Fix event description wrap
daveearley Jun 14, 2025
1836ada
Use Laravel Filesystem URL Generator for Images (#621)
creativeindustriesgroup Jun 14, 2025
9c248df
Add Laravel queue worker to startup (#613)
creativeindustriesgroup Jun 14, 2025
29e3f8e
Update it.po (#566)
albanobattistella Jun 14, 2025
8ab7eb0
Update German translations (#625)
daveearley Jun 14, 2025
b332963
Fix: Allow empty strings for event settings maps_url (#623)
carlosalaniz Jun 14, 2025
c250912
i18n
daveearley Jun 14, 2025
dc05c5c
Fix organizer logo positioning
daveearley Jun 15, 2025
836ae9b
Add create organizer action to top menu
daveearley Jun 15, 2025
413728e
Add create organizer button
daveearley Jun 17, 2025
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@
frontend/.env
backend/.env
todo.md
CLAUDE.md

.vercel
4 changes: 3 additions & 1 deletion backend/app/DataTransferObjects/AddressDTO.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

namespace HiEvents\DataTransferObjects;

class AddressDTO extends BaseDTO
use Spatie\LaravelData\Data;

class AddressDTO extends Data
{
public function __construct(
public readonly ?string $venue_name = null,
Expand Down
3 changes: 3 additions & 0 deletions backend/app/DataTransferObjects/BaseDTO.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
use RuntimeException;
use Throwable;

/**
* @deprecated Please use BaseDataObject instead.
*/
abstract class BaseDTO
{
/**
Expand Down
26 changes: 26 additions & 0 deletions backend/app/DataTransferObjects/BaseDataObject.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php

namespace HiEvents\DataTransferObjects;

use Spatie\LaravelData\Data;
use Spatie\LaravelData\Optional;

abstract class BaseDataObject extends Data
{
/**
* Check if a property was explicitly provided in the input data (even if the value is null).
* Useful for partial update.
*/
public function wasProvided(string $propertyName): bool
{
return property_exists($this, $propertyName) && !($this->{$propertyName} instanceof Optional);
}

/**
* Get the value of a provided property, or return default if not provided
*/
public function getProvided(string $propertyName, mixed $default = null): mixed
{
return $this->wasProvided($propertyName) ? $this->{$propertyName} : $default;
}
}
10 changes: 0 additions & 10 deletions backend/app/DomainObjects/Enums/EventImageType.php

This file was deleted.

6 changes: 3 additions & 3 deletions backend/app/DomainObjects/Enums/HomepageBackgroundType.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

namespace HiEvents\DomainObjects\Enums;

enum HomepageBackgroundType
enum HomepageBackgroundType: string
{
use BaseEnum;

case MIRROR_COVER_IMAGE;
case COLOR;
case MIRROR_COVER_IMAGE = 'MIRROR_COVER_IMAGE';
case COLOR = 'COLOR';
}
73 changes: 73 additions & 0 deletions backend/app/DomainObjects/Enums/ImageType.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<?php

namespace HiEvents\DomainObjects\Enums;

use HiEvents\DomainObjects\EventDomainObject;
use HiEvents\DomainObjects\OrganizerDomainObject;
use HiEvents\DomainObjects\UserDomainObject;
use InvalidArgumentException;

enum ImageType
{
use BaseEnum;

case GENERIC;

// Event images
case EVENT_COVER;

// Organizer images
case ORGANIZER_LOGO;
case ORGANIZER_COVER;

public static function eventImageTypes(): array
{
return [
self::EVENT_COVER,
];
}

public static function organizerImageTypes(): array
{
return [
self::ORGANIZER_LOGO,
self::ORGANIZER_COVER,
];
}

public static function genericImageTypes(): array
{
return [
self::GENERIC,
];
}

public static function getMinimumDimensionsMap(ImageType $imageType): array
{
$map = [
self::GENERIC->name => [50, 50],
self::EVENT_COVER->name => [600, 50],
self::ORGANIZER_LOGO->name => [100, 100],
self::ORGANIZER_COVER->name => [600, 50],
];

return $map[$imageType->name] ?? $map[self::GENERIC->name];
}

public function getEntityType(): string
{
if (in_array($this, self::eventImageTypes())) {
return EventDomainObject::class;
}

if (in_array($this, self::organizerImageTypes())) {
return OrganizerDomainObject::class;
}

if (in_array($this, self::genericImageTypes())) {
return UserDomainObject::class;
}

throw new InvalidArgumentException('Invalid image type: ' . $this->name);
}
}
10 changes: 0 additions & 10 deletions backend/app/DomainObjects/Enums/ImageTypes.php

This file was deleted.

11 changes: 11 additions & 0 deletions backend/app/DomainObjects/Enums/OrganizerHomepageVisibility.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

namespace HiEvents\DomainObjects\Enums;

enum OrganizerHomepageVisibility: string
{
use BaseEnum;

case PUBLIC = 'PUBLIC';
case PASSWORD_PROTECTED = 'PASSWORD_PROTECTED';
}
10 changes: 0 additions & 10 deletions backend/app/DomainObjects/Enums/OrganizerImageType.php

This file was deleted.

6 changes: 3 additions & 3 deletions backend/app/DomainObjects/Enums/Role.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

namespace HiEvents\DomainObjects\Enums;

enum Role
enum Role: string
{
use BaseEnum;

case ADMIN;
case ORGANIZER;
case ADMIN = 'ADMIN';
case ORGANIZER = 'ORGANIZER';
}
14 changes: 14 additions & 0 deletions backend/app/DomainObjects/Generated/ImageDomainObjectAbstract.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ abstract class ImageDomainObjectAbstract extends \HiEvents\DomainObjects\Abstrac
final public const SINGULAR_NAME = 'image';
final public const PLURAL_NAME = 'images';
final public const ID = 'id';
final public const ACCOUNT_ID = 'account_id';
final public const ENTITY_ID = 'entity_id';
final public const ENTITY_TYPE = 'entity_type';
final public const TYPE = 'type';
Expand All @@ -24,6 +25,7 @@ abstract class ImageDomainObjectAbstract extends \HiEvents\DomainObjects\Abstrac
final public const DELETED_AT = 'deleted_at';

protected int $id;
protected ?int $account_id = null;
protected ?int $entity_id = null;
protected ?string $entity_type = null;
protected ?string $type = null;
Expand All @@ -40,6 +42,7 @@ public function toArray(): array
{
return [
'id' => $this->id ?? null,
'account_id' => $this->account_id ?? null,
'entity_id' => $this->entity_id ?? null,
'entity_type' => $this->entity_type ?? null,
'type' => $this->type ?? null,
Expand All @@ -65,6 +68,17 @@ public function getId(): int
return $this->id;
}

public function setAccountId(?int $account_id): self
{
$this->account_id = $account_id;
return $this;
}

public function getAccountId(): ?int
{
return $this->account_id;
}

public function setEntityId(?int $entity_id): self
{
$this->entity_id = $entity_id;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ abstract class OrganizerDomainObjectAbstract extends \HiEvents\DomainObjects\Abs
final public const DELETED_AT = 'deleted_at';
final public const CURRENCY = 'currency';
final public const TIMEZONE = 'timezone';
final public const STATUS = 'status';

protected int $id;
protected int $account_id;
Expand All @@ -35,6 +36,7 @@ abstract class OrganizerDomainObjectAbstract extends \HiEvents\DomainObjects\Abs
protected ?string $deleted_at = null;
protected string $currency = 'USD';
protected string $timezone;
protected string $status = 'DRAFT';

public function toArray(): array
{
Expand All @@ -51,6 +53,7 @@ public function toArray(): array
'deleted_at' => $this->deleted_at ?? null,
'currency' => $this->currency ?? null,
'timezone' => $this->timezone ?? null,
'status' => $this->status ?? null,
];
}

Expand Down Expand Up @@ -185,4 +188,15 @@ public function getTimezone(): string
{
return $this->timezone;
}

public function setStatus(string $status): self
{
$this->status = $status;
return $this;
}

public function getStatus(): string
{
return $this->status;
}
}
Loading
Loading