Participant mangement

This commit is contained in:
2026-04-11 22:17:38 +02:00
parent e6bd8c684d
commit ed7f887e3a
47 changed files with 1641 additions and 269 deletions

View File

@@ -0,0 +1,53 @@
<?php
namespace App\Domains\Event\Actions\SetParticipationState;
use App\Mail\ParticipantParticipationMails\EventSignUpSuccessfullMail;
use App\Mail\ParticipantParticipationMails\ParticipantSignOffMail;
use Illuminate\Support\Facades\Mail;
class SetParticipationStateCommand {
function __construct(private SetParticipationStateSignoffRequest|SetParticipationStateReSignonRequest $request) {}
public function execute() : SetParticipationStateResponse {
$response = new SetParticipationStateResponse();
switch (true) {
case $this->request instanceof SetParticipationStateSignoffRequest:
$this->request->participant->unregistered_at = $this->request->date;
$this->request->participant->save();
$response->success = true;
Mail::to($this->request->participant->email_1)->send(new ParticipantSignOffMail(
participant: $this->request->participant,
));
if ($this->request->participant->email_2 !== null) {
Mail::to($this->request->participant->email_2)->send(new ParticipantSignOffMail(
participant: $this->request->participant,
));
}
break;
case $this->request instanceof SetParticipationStateReSignonRequest:
$this->request->participant->unregistered_at = null;
$this->request->participant->save();
Mail::to($this->request->participant->email_1)->send(new EventSignUpSuccessfullMail(
participant: $this->request->participant,
));
if ($this->request->participant->email_2 !== null) {
Mail::to($this->request->participant->email_2)->send(new EventSignUpSuccessfullMail(
participant: $this->request->participant,
));
}
break;
}
return $response;
}
}

View File

@@ -0,0 +1,9 @@
<?php
namespace App\Domains\Event\Actions\SetParticipationState;
use App\Models\EventParticipant;
class SetParticipationStateReSignonRequest {
function __construct(public EventParticipant $participant) {}
}

View File

@@ -0,0 +1,7 @@
<?php
namespace App\Domains\Event\Actions\SetParticipationState;
class SetParticipationStateResponse {
function __construct(public bool $success = false) {}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Domains\Event\Actions\SetParticipationState;
use App\Models\EventParticipant;
class SetParticipationStateSignoffRequest {
function __construct(public EventParticipant $participant, public \DateTime $date) {
}
}