Skip to content

Commit 52f9f83

Browse files
daveearleycreativeindustriesgroupalbanobattistellacarlosalaniz
authored
v1.1.0-alpha (#628)
Co-authored-by: Dave Earley <[email protected]> Co-authored-by: creativeindustriesgroup <[email protected]> Co-authored-by: albanobattistella <[email protected]> Co-authored-by: Carlos Alaniz <[email protected]>
1 parent d48fb8d commit 52f9f83

File tree

456 files changed

+52961
-10026
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

456 files changed

+52961
-10026
lines changed

β€Ž.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,9 @@
66
frontend/.env
77
backend/.env
88
todo.md
9+
CLAUDE.md
10+
/prompts/**
11+
/prompts
912

10-
.vercel
13+
.vercel
14+
prompts/

β€Žbackend/app/DataTransferObjects/AddressDTO.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
namespace HiEvents\DataTransferObjects;
44

5-
class AddressDTO extends BaseDTO
5+
use Spatie\LaravelData\Data;
6+
7+
class AddressDTO extends Data
68
{
79
public function __construct(
810
public readonly ?string $venue_name = null,

β€Žbackend/app/DataTransferObjects/BaseDTO.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
use RuntimeException;
1010
use Throwable;
1111

12+
/**
13+
* @deprecated Please use BaseDataObject instead.
14+
*/
1215
abstract class BaseDTO
1316
{
1417
/**
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
namespace HiEvents\DataTransferObjects;
4+
5+
use Spatie\LaravelData\Data;
6+
use Spatie\LaravelData\Optional;
7+
8+
abstract class BaseDataObject extends Data
9+
{
10+
/**
11+
* Check if a property was explicitly provided in the input data (even if the value is null).
12+
* Useful for partial update.
13+
*/
14+
public function wasProvided(string $propertyName): bool
15+
{
16+
return property_exists($this, $propertyName) && !($this->{$propertyName} instanceof Optional);
17+
}
18+
19+
/**
20+
* Get the value of a provided property, or return default if not provided
21+
*/
22+
public function getProvided(string $propertyName, mixed $default = null): mixed
23+
{
24+
return $this->wasProvided($propertyName) ? $this->{$propertyName} : $default;
25+
}
26+
}
Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,45 @@
11
<?php
22

3+
declare(strict_types=1);
4+
35
namespace HiEvents\DomainObjects;
46

5-
class AffiliateDomainObject extends Generated\AffiliateDomainObjectAbstract
7+
use HiEvents\DomainObjects\Interfaces\IsSortable;
8+
use HiEvents\DomainObjects\SortingAndFiltering\AllowedSorts;
9+
10+
class AffiliateDomainObject extends Generated\AffiliateDomainObjectAbstract implements IsSortable
611
{
12+
public static function getAllowedSorts(): AllowedSorts
13+
{
14+
return new AllowedSorts(
15+
[
16+
self::CREATED_AT => [
17+
'asc' => __('Oldest First'),
18+
'desc' => __('Newest First'),
19+
],
20+
self::NAME => [
21+
'asc' => __('Name A-Z'),
22+
'desc' => __('Name Z-A'),
23+
],
24+
self::TOTAL_SALES => [
25+
'asc' => __('Sales Ascending'),
26+
'desc' => __('Sales Descending'),
27+
],
28+
self::TOTAL_SALES_GROSS => [
29+
'asc' => __('Revenue Ascending'),
30+
'desc' => __('Revenue Descending'),
31+
],
32+
],
33+
);
34+
}
35+
36+
public static function getDefaultSort(): string
37+
{
38+
return self::CREATED_AT;
39+
}
40+
41+
public static function getDefaultSortDirection(): string
42+
{
43+
return 'desc';
44+
}
745
}
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
<?php
2+
3+
namespace HiEvents\DomainObjects\Enums;
4+
5+
enum ColorTheme: string
6+
{
7+
case CLASSIC = 'Classic';
8+
case ELEGANT = 'Elegant';
9+
case MODERN = 'Modern';
10+
case OCEAN = 'Ocean';
11+
case FOREST = 'Forest';
12+
case SUNSET = 'Sunset';
13+
case MIDNIGHT = 'Midnight';
14+
case ROYAL = 'Royal';
15+
case CORAL = 'Coral';
16+
case ARCTIC = 'Arctic';
17+
case NOIR = 'Noir';
18+
19+
public function getThemeData(): array
20+
{
21+
return match ($this) {
22+
self::MIDNIGHT => [
23+
'name' => self::MIDNIGHT->value,
24+
'homepage_background_color' => '#737373ff',
25+
'homepage_content_background_color' => '#0f172a9c',
26+
'homepage_primary_color' => '#ffffffff',
27+
'homepage_primary_text_color' => '#ffffffff',
28+
'homepage_secondary_color' => '#b3b3b3ff',
29+
'homepage_secondary_text_color' => '#ffffff',
30+
],
31+
self::CLASSIC => [
32+
'name' => self::CLASSIC->value,
33+
'homepage_background_color' => '#fafafa',
34+
'homepage_content_background_color' => '#ffffffbf',
35+
'homepage_primary_color' => '#171717',
36+
'homepage_primary_text_color' => '#171717',
37+
'homepage_secondary_color' => '#737373',
38+
'homepage_secondary_text_color' => '#ffffff',
39+
],
40+
self::ELEGANT => [
41+
'name' => self::ELEGANT->value,
42+
'homepage_background_color' => '#1a1523',
43+
'homepage_content_background_color' => '#2d2438bf',
44+
'homepage_primary_color' => '#d4af37',
45+
'homepage_primary_text_color' => '#f5e6d3',
46+
'homepage_secondary_color' => '#b8860b',
47+
'homepage_secondary_text_color' => '#faf0e6',
48+
],
49+
self::MODERN => [
50+
'name' => self::MODERN->value,
51+
'homepage_background_color' => '#2c0838',
52+
'homepage_content_background_color' => '#32174fbf',
53+
'homepage_primary_color' => '#c7a2db',
54+
'homepage_primary_text_color' => '#ffffff',
55+
'homepage_secondary_color' => '#c7a2db',
56+
'homepage_secondary_text_color' => '#ffffff',
57+
],
58+
self::OCEAN => [
59+
'name' => self::OCEAN->value,
60+
'homepage_background_color' => '#c3e3f7',
61+
'homepage_content_background_color' => '#ffffffbf',
62+
'homepage_primary_color' => '#0ea5e9',
63+
'homepage_primary_text_color' => '#075985',
64+
'homepage_secondary_color' => '#0891b2',
65+
'homepage_secondary_text_color' => '#e9f6ff',
66+
],
67+
self::FOREST => [
68+
'name' => self::FOREST->value,
69+
'homepage_background_color' => '#91b89e',
70+
'homepage_content_background_color' => '#ffffffbf',
71+
'homepage_primary_color' => '#91b89e',
72+
'homepage_primary_text_color' => '#14532d',
73+
'homepage_secondary_color' => '#16a34a',
74+
'homepage_secondary_text_color' => '#eefff3',
75+
],
76+
self::SUNSET => [
77+
'name' => self::SUNSET->value,
78+
'homepage_background_color' => '#e8c47b',
79+
'homepage_content_background_color' => '#ffffffbf',
80+
'homepage_primary_color' => '#f97316',
81+
'homepage_primary_text_color' => '#7c2d12',
82+
'homepage_secondary_color' => '#ea580c',
83+
'homepage_secondary_text_color' => '#fad9cd',
84+
],
85+
self::ROYAL => [
86+
'name' => self::ROYAL->value,
87+
'homepage_background_color' => '#f3e8ff',
88+
'homepage_content_background_color' => '#ffffffbf',
89+
'homepage_primary_color' => '#a855f7',
90+
'homepage_primary_text_color' => '#581c87',
91+
'homepage_secondary_color' => '#9333ea',
92+
'homepage_secondary_text_color' => '#f6eeff',
93+
],
94+
self::CORAL => [
95+
'name' => self::CORAL->value,
96+
'homepage_background_color' => '#ffe4e6',
97+
'homepage_content_background_color' => '#ffffffbf',
98+
'homepage_primary_color' => '#f87171',
99+
'homepage_primary_text_color' => '#991b1b',
100+
'homepage_secondary_color' => '#ef4444',
101+
'homepage_secondary_text_color' => '#ffd4d4',
102+
],
103+
self::ARCTIC => [
104+
'name' => self::ARCTIC->value,
105+
'homepage_background_color' => '#71bdad',
106+
'homepage_content_background_color' => '#ffffffbf',
107+
'homepage_primary_color' => '#14b8a6',
108+
'homepage_primary_text_color' => '#134e4a',
109+
'homepage_secondary_color' => '#0d9488',
110+
'homepage_secondary_text_color' => '#ffffff',
111+
],
112+
self::NOIR => [
113+
'name' => self::NOIR->value,
114+
'homepage_background_color' => '#09090b',
115+
'homepage_content_background_color' => '#18181bbf',
116+
'homepage_primary_color' => '#f87171',
117+
'homepage_primary_text_color' => '#fafafa',
118+
'homepage_secondary_color' => '#f87172ff',
119+
'homepage_secondary_text_color' => '#ffffff',
120+
],
121+
};
122+
}
123+
124+
public static function getAllThemes(): array
125+
{
126+
return array_map(
127+
static fn(self $theme) => $theme->getThemeData(),
128+
self::cases()
129+
);
130+
}
131+
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?php
2+
3+
namespace HiEvents\DomainObjects\Enums;
4+
5+
enum EventCategory: string
6+
{
7+
use BaseEnum;
8+
9+
// Community
10+
case SOCIAL = 'SOCIAL';
11+
case FOOD_DRINK = 'FOOD_DRINK';
12+
case CHARITY = 'CHARITY';
13+
14+
// Creative & Culture
15+
case MUSIC = 'MUSIC';
16+
case ART = 'ART';
17+
case COMEDY = 'COMEDY';
18+
case THEATER = 'THEATER';
19+
20+
// Professional & Learning
21+
case BUSINESS = 'BUSINESS';
22+
case TECH = 'TECH';
23+
case EDUCATION = 'EDUCATION';
24+
case WORKSHOP = 'WORKSHOP';
25+
26+
// Leisure & Nightlife
27+
case SPORTS = 'SPORTS';
28+
case FESTIVAL = 'FESTIVAL';
29+
case NIGHTLIFE = 'NIGHTLIFE';
30+
31+
// Catch-all
32+
case OTHER = 'OTHER';
33+
34+
public function label(): string
35+
{
36+
return match ($this) {
37+
self::SOCIAL => __('Social'),
38+
self::FOOD_DRINK => __('Food & Drink'),
39+
self::CHARITY => __('Charity'),
40+
self::MUSIC => __('Music'),
41+
self::ART => __('Art'),
42+
self::COMEDY => __('Comedy'),
43+
self::THEATER => __('Theater'),
44+
self::BUSINESS => __('Business'),
45+
self::TECH => __('Tech'),
46+
self::EDUCATION => __('Education'),
47+
self::WORKSHOP => __('Workshop'),
48+
self::SPORTS => __('Sports'),
49+
self::FESTIVAL => __('Festival'),
50+
self::NIGHTLIFE => __('Nightlife'),
51+
self::OTHER => __('Other'),
52+
};
53+
}
54+
55+
public function emoji(): string
56+
{
57+
return match ($this) {
58+
self::SOCIAL => '🀝',
59+
self::FOOD_DRINK => '🍽️',
60+
self::CHARITY => 'πŸŽ—οΈ',
61+
self::MUSIC => '🎡',
62+
self::ART => '🎨',
63+
self::COMEDY => 'πŸ˜‚',
64+
self::THEATER => '🎭',
65+
self::BUSINESS => 'πŸ’Ό',
66+
self::TECH => 'πŸ’»',
67+
self::EDUCATION => 'πŸ“š',
68+
self::WORKSHOP => 'πŸ› οΈ',
69+
self::SPORTS => '⚽',
70+
self::FESTIVAL => 'πŸŽ‰',
71+
self::NIGHTLIFE => 'πŸͺ©',
72+
self::OTHER => 'πŸ“',
73+
};
74+
}
75+
}

β€Žbackend/app/DomainObjects/Enums/EventImageType.php

Lines changed: 0 additions & 10 deletions
This file was deleted.

β€Žbackend/app/DomainObjects/Enums/HomepageBackgroundType.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
namespace HiEvents\DomainObjects\Enums;
44

5-
enum HomepageBackgroundType
5+
enum HomepageBackgroundType: string
66
{
77
use BaseEnum;
88

9-
case MIRROR_COVER_IMAGE;
10-
case COLOR;
9+
case MIRROR_COVER_IMAGE = 'MIRROR_COVER_IMAGE';
10+
case COLOR = 'COLOR';
1111
}

0 commit comments

Comments
Β (0)