Skip to content

Commit e11d6f8

Browse files
authored
Merge pull request #1058 from HiEventsDev/develop
2 parents ac7aec0 + f02e8c5 commit e11d6f8

382 files changed

Lines changed: 31735 additions & 10539 deletions

File tree

Some content is hidden

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

.github/workflows/post-release-push-images.yml

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,39 @@ jobs:
1717
token: ${{ secrets.GITHUB_TOKEN }}
1818
persist-credentials: true
1919

20+
- name: Set up QEMU (for multi-arch builds)
21+
uses: docker/setup-qemu-action@v3
22+
23+
- name: Set up Docker Buildx
24+
uses: docker/setup-buildx-action@v3
25+
2026
- name: Log in to Docker Hub
21-
uses: docker/login-action@v2
27+
uses: docker/login-action@v3
2228
with:
2329
username: ${{ secrets.DOCKER_USERNAME }}
2430
password: ${{ secrets.DOCKER_PASSWORD }}
2531

26-
# All-in-one Image Steps
32+
# All-in-one Image Steps (multi-arch: amd64 + arm64)
2733
- name: Extract metadata (tags, labels) for All-in-one Docker
2834
id: meta_all_in_one
29-
uses: docker/metadata-action@v3
35+
uses: docker/metadata-action@v5
3036
with:
3137
images: daveearley/hi.events-all-in-one
3238
tags: |
3339
type=ref,event=tag
3440
type=raw,value=latest,enable=${{ github.event.release.prerelease == false }}
3541
3642
- name: Build and push All-in-one Docker image
37-
uses: docker/build-push-action@v3
43+
uses: docker/build-push-action@v5
3844
with:
3945
context: ./
4046
file: ./Dockerfile.all-in-one
47+
platforms: linux/amd64,linux/arm64
4148
push: true
4249
tags: ${{ steps.meta_all_in_one.outputs.tags }}
4350
labels: ${{ steps.meta_all_in_one.outputs.labels }}
51+
cache-from: type=gha
52+
cache-to: type=gha,mode=max
4453

4554
# Backend Image Steps
4655
- name: Extract metadata (tags, labels) for Backend Docker

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,6 @@ prompts/
1717

1818
/playground/**
1919
/playground/
20+
21+
/plans/**
22+
/plans

Dockerfile.all-in-one

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,32 @@ WORKDIR /app/frontend
44

55
RUN apk add --no-cache yarn
66

7+
# Increase network timeout for slow ARM emulation builds
8+
RUN yarn config set network-timeout 600000
9+
710
COPY ./frontend/package.json ./frontend/yarn.lock ./
811

912
COPY ./frontend .
13+
COPY ./VERSION /app/VERSION
1014

11-
RUN yarn install && yarn build
15+
RUN yarn install --network-timeout 600000 --frozen-lockfile && yarn build
1216

13-
FROM serversideup/php:beta-8.3.2-fpm-alpine
17+
# Use stable multi-arch serversideup/php image
18+
FROM serversideup/php:8.3-fpm-alpine
1419

1520
ENV PHP_OPCACHE_ENABLE=1
1621

22+
# Switch to root for installing extensions and packages
23+
USER root
24+
1725
RUN install-php-extensions intl
1826

19-
RUN apk add --no-cache nodejs yarn nginx supervisor
27+
RUN apk add --no-cache nodejs yarn nginx supervisor dos2unix
2028

2129
COPY --from=node-frontend /app/frontend /app/frontend
2230

2331
COPY ./backend /app/backend
32+
COPY ./VERSION /app/backend/VERSION
2433
RUN mkdir -p /app/backend/bootstrap/cache \
2534
&& mkdir -p /app/backend/storage \
2635
&& chown -R www-data:www-data /app/backend \

VERSION

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1.7.0-beta

backend/app/Console/Kernel.php

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

33
namespace HiEvents\Console;
44

5+
use HiEvents\Jobs\Message\SendScheduledMessagesJob;
6+
use HiEvents\Jobs\Waitlist\ProcessExpiredWaitlistOffersJob;
7+
use Illuminate\Console\Scheduling\Schedule;
58
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
69

710
class Kernel extends ConsoleKernel
811
{
12+
protected function schedule(Schedule $schedule): void
13+
{
14+
$schedule->job(new SendScheduledMessagesJob)->everyMinute()->withoutOverlapping();
15+
$schedule->job(new ProcessExpiredWaitlistOffersJob)->everyMinute()->withoutOverlapping();
16+
}
17+
918
protected function commands(): void
1019
{
1120
$this->load(__DIR__ . '/Commands');

backend/app/DomainObjects/AccountConfigurationDomainObject.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,9 @@ public function getPercentageApplicationFee(): float
1313
{
1414
return $this->getApplicationFees()['percentage'] ?? config('app.default_application_fee_percentage');
1515
}
16+
17+
public function getApplicationFeeCurrency(): string
18+
{
19+
return $this->getApplicationFees()['currency'] ?? 'USD';
20+
}
1621
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
3+
namespace HiEvents\DomainObjects\Enums;
4+
5+
enum CapacityChangeDirection
6+
{
7+
use BaseEnum;
8+
9+
case INCREASED;
10+
case DECREASED;
11+
}

backend/app/DomainObjects/Generated/EventSettingDomainObjectAbstract.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ abstract class EventSettingDomainObjectAbstract extends \HiEvents\DomainObjects\
6464
final public const HOMEPAGE_THEME_SETTINGS = 'homepage_theme_settings';
6565
final public const PASS_PLATFORM_FEE_TO_BUYER = 'pass_platform_fee_to_buyer';
6666
final public const ALLOW_ATTENDEE_SELF_EDIT = 'allow_attendee_self_edit';
67+
final public const WAITLIST_ENABLED = 'waitlist_enabled';
68+
final public const WAITLIST_AUTO_PROCESS = 'waitlist_auto_process';
69+
final public const WAITLIST_OFFER_TIMEOUT_MINUTES = 'waitlist_offer_timeout_minutes';
6770

6871
protected int $id;
6972
protected int $event_id;
@@ -119,6 +122,9 @@ abstract class EventSettingDomainObjectAbstract extends \HiEvents\DomainObjects\
119122
protected array|string|null $homepage_theme_settings = null;
120123
protected bool $pass_platform_fee_to_buyer = false;
121124
protected bool $allow_attendee_self_edit = true;
125+
protected bool $waitlist_enabled = false;
126+
protected bool $waitlist_auto_process = false;
127+
protected ?int $waitlist_offer_timeout_minutes = null;
122128

123129
public function toArray(): array
124130
{
@@ -177,6 +183,9 @@ public function toArray(): array
177183
'homepage_theme_settings' => $this->homepage_theme_settings ?? null,
178184
'pass_platform_fee_to_buyer' => $this->pass_platform_fee_to_buyer ?? null,
179185
'allow_attendee_self_edit' => $this->allow_attendee_self_edit ?? null,
186+
'waitlist_enabled' => $this->waitlist_enabled ?? null,
187+
'waitlist_auto_process' => $this->waitlist_auto_process ?? null,
188+
'waitlist_offer_timeout_minutes' => $this->waitlist_offer_timeout_minutes ?? null,
180189
];
181190
}
182191

@@ -774,4 +783,37 @@ public function getAllowAttendeeSelfEdit(): bool
774783
{
775784
return $this->allow_attendee_self_edit;
776785
}
786+
787+
public function setWaitlistEnabled(bool $waitlist_enabled): self
788+
{
789+
$this->waitlist_enabled = $waitlist_enabled;
790+
return $this;
791+
}
792+
793+
public function getWaitlistEnabled(): bool
794+
{
795+
return $this->waitlist_enabled;
796+
}
797+
798+
public function setWaitlistAutoProcess(bool $waitlist_auto_process): self
799+
{
800+
$this->waitlist_auto_process = $waitlist_auto_process;
801+
return $this;
802+
}
803+
804+
public function getWaitlistAutoProcess(): bool
805+
{
806+
return $this->waitlist_auto_process;
807+
}
808+
809+
public function setWaitlistOfferTimeoutMinutes(?int $waitlist_offer_timeout_minutes): self
810+
{
811+
$this->waitlist_offer_timeout_minutes = $waitlist_offer_timeout_minutes;
812+
return $this;
813+
}
814+
815+
public function getWaitlistOfferTimeoutMinutes(): ?int
816+
{
817+
return $this->waitlist_offer_timeout_minutes;
818+
}
777819
}

backend/app/DomainObjects/Generated/MessageDomainObjectAbstract.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ abstract class MessageDomainObjectAbstract extends \HiEvents\DomainObjects\Abstr
2727
final public const UPDATED_AT = 'updated_at';
2828
final public const DELETED_AT = 'deleted_at';
2929
final public const ELIGIBILITY_FAILURES = 'eligibility_failures';
30+
final public const SCHEDULED_AT = 'scheduled_at';
3031

3132
protected int $id;
3233
protected int $event_id;
@@ -45,6 +46,7 @@ abstract class MessageDomainObjectAbstract extends \HiEvents\DomainObjects\Abstr
4546
protected ?string $updated_at = null;
4647
protected ?string $deleted_at = null;
4748
protected array|string|null $eligibility_failures = null;
49+
protected ?string $scheduled_at = null;
4850

4951
public function toArray(): array
5052
{
@@ -66,6 +68,7 @@ public function toArray(): array
6668
'updated_at' => $this->updated_at ?? null,
6769
'deleted_at' => $this->deleted_at ?? null,
6870
'eligibility_failures' => $this->eligibility_failures ?? null,
71+
'scheduled_at' => $this->scheduled_at ?? null,
6972
];
7073
}
7174

@@ -255,4 +258,15 @@ public function getEligibilityFailures(): array|string|null
255258
{
256259
return $this->eligibility_failures;
257260
}
261+
262+
public function setScheduledAt(?string $scheduled_at): self
263+
{
264+
$this->scheduled_at = $scheduled_at;
265+
return $this;
266+
}
267+
268+
public function getScheduledAt(): ?string
269+
{
270+
return $this->scheduled_at;
271+
}
258272
}

backend/app/DomainObjects/Generated/ProductDomainObjectAbstract.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ abstract class ProductDomainObjectAbstract extends \HiEvents\DomainObjects\Abstr
3636
final public const START_COLLAPSED = 'start_collapsed';
3737
final public const IS_HIGHLIGHTED = 'is_highlighted';
3838
final public const HIGHLIGHT_MESSAGE = 'highlight_message';
39+
final public const WAITLIST_ENABLED = 'waitlist_enabled';
3940

4041
protected int $id;
4142
protected int $event_id;
@@ -63,6 +64,7 @@ abstract class ProductDomainObjectAbstract extends \HiEvents\DomainObjects\Abstr
6364
protected bool $start_collapsed = false;
6465
protected bool $is_highlighted = false;
6566
protected ?string $highlight_message = null;
67+
protected ?bool $waitlist_enabled = null;
6668

6769
public function toArray(): array
6870
{
@@ -93,6 +95,7 @@ public function toArray(): array
9395
'start_collapsed' => $this->start_collapsed ?? null,
9496
'is_highlighted' => $this->is_highlighted ?? null,
9597
'highlight_message' => $this->highlight_message ?? null,
98+
'waitlist_enabled' => $this->waitlist_enabled ?? null,
9699
];
97100
}
98101

@@ -381,4 +384,15 @@ public function getHighlightMessage(): ?string
381384
{
382385
return $this->highlight_message;
383386
}
387+
388+
public function setWaitlistEnabled(?bool $waitlist_enabled): self
389+
{
390+
$this->waitlist_enabled = $waitlist_enabled;
391+
return $this;
392+
}
393+
394+
public function getWaitlistEnabled(): ?bool
395+
{
396+
return $this->waitlist_enabled;
397+
}
384398
}

0 commit comments

Comments
 (0)