From aae9a0c2b59027c80cb4555d372c1c8ce3a82298 Mon Sep 17 00:00:00 2001
From: Vincent Hagen
Date: Fri, 27 Oct 2023 22:16:53 +0200
Subject: [PATCH 1/6] Add new discount percentages as requested by rvdl
---
app/Models/Participant.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/Models/Participant.php b/app/Models/Participant.php
index 74a41e80..de255951 100644
--- a/app/Models/Participant.php
+++ b/app/Models/Participant.php
@@ -20,9 +20,9 @@ class Participant extends Model
public const INCOME_DISCOUNT_TABLE = [
0 => 0,
- 1 => 25,
+ 1 => 20,
2 => 40,
- 3 => 60,
+ 3 => 100,
];
public const INFORMATION_CHANNEL_DESCRIPTION_TABLE = [
From 4d229cebab82e93e3996abe0f1757e0c7624a5f3 Mon Sep 17 00:00:00 2001
From: Vincent Hagen
Date: Sun, 29 Oct 2023 16:14:25 +0100
Subject: [PATCH 2/6] Fix discount description
---
app/Models/Participant.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/Models/Participant.php b/app/Models/Participant.php
index de255951..19170c89 100644
--- a/app/Models/Participant.php
+++ b/app/Models/Participant.php
@@ -13,9 +13,9 @@ class Participant extends Model
{
public const INCOME_DESCRIPTION_TABLE = [
0 => 'Meer dan € 3400 (geen korting)',
- 1 => 'Tussen € 2400 en € 3400 (korting: 25%)',
+ 1 => 'Tussen € 2400 en € 3400 (korting: 20%)',
2 => 'Tussen € 1600 en € 2400 (korting: 40%)',
- 3 => 'Minder dan € 1600 (korting: 60%)',
+ 3 => 'Minder dan € 1600 (korting: 100%)',
];
public const INCOME_DISCOUNT_TABLE = [
From 53cb466d3dfec994a5cf522ee780ccf79fcf2884 Mon Sep 17 00:00:00 2001
From: Vincent Hagen
Date: Sun, 29 Oct 2023 16:41:11 +0100
Subject: [PATCH 3/6] Add explaination for the register process with a 100%
discounted price
---
app/Helpers/Payment/EventPayment.php | 10 ++++++++++
app/Http/Controllers/RegistrationController.php | 7 +++----
.../ParticipantRegistrationConfirmation.php | 15 ++++++++-------
.../registrationConfirmation.blade.php | 13 +++++++++----
.../registration/participantStored.blade.php | 14 +++++++++-----
5 files changed, 39 insertions(+), 20 deletions(-)
diff --git a/app/Helpers/Payment/EventPayment.php b/app/Helpers/Payment/EventPayment.php
index 9a6904f1..59191073 100644
--- a/app/Helpers/Payment/EventPayment.php
+++ b/app/Helpers/Payment/EventPayment.php
@@ -58,6 +58,16 @@ public function getDiscount(): Discount
return Discount::max($this->participant->incomeBasedDiscount, $this->event->earlybirdDiscount);
}
+ public function isFree(): bool
+ {
+ return $this->event->prijs !== null && $this->getTotalAmount() === 0.0;
+ }
+
+ public function isUndetermined(): bool
+ {
+ return $this->event->prijs === null;
+ }
+
public function getTotalAmount(): float
{
return self::calculatePrice($this->event->prijs + $this->getPackagePrice(), $this->getDiscount());
diff --git a/app/Http/Controllers/RegistrationController.php b/app/Http/Controllers/RegistrationController.php
index e23e1fb3..6f0468a9 100644
--- a/app/Http/Controllers/RegistrationController.php
+++ b/app/Http/Controllers/RegistrationController.php
@@ -289,7 +289,6 @@ public function storeParticipant(NewParticipantRequest $request)
->participant($participant)
->package($package)
->existing(false);
- $toPay = $payment->getTotalAmount();
$iDeal = $request->iDeal;
// Send update to office committee
@@ -304,19 +303,19 @@ public function storeParticipant(NewParticipantRequest $request)
$participant,
$camp,
$package,
+ $payment,
$givenCourses,
$password,
- $toPay,
$iDeal
)
);
// If they want to pay with iDeal, set up the payment now
- if ($iDeal === '1' && $toPay > 0) {
+ if ($iDeal === '1' && $payment->getTotalAmount() > 0) {
$redirectUrl = Mollie::process($payment);
return redirect($redirectUrl);
}
// Return closing view
- return view('registration.participantStored', compact('participant', 'camp', 'toPay', 'incomeTable', 'package'));
+ return view('registration.participantStored', compact('participant', 'camp', 'incomeTable', 'package', 'payment'));
}
}
diff --git a/app/Mail/participants/ParticipantRegistrationConfirmation.php b/app/Mail/participants/ParticipantRegistrationConfirmation.php
index e632bd01..5a009dae 100644
--- a/app/Mail/participants/ParticipantRegistrationConfirmation.php
+++ b/app/Mail/participants/ParticipantRegistrationConfirmation.php
@@ -4,6 +4,7 @@
namespace App\Mail\participants;
+use App\Helpers\Payment\EventPayment;
use App\Models\Event;
use App\Models\EventPackage;
use App\Models\Participant;
@@ -18,29 +19,29 @@ class ParticipantRegistrationConfirmation extends Mailable
use SerializesModels;
- public $package;
+ public ?EventPackage $package;
- public $participant;
+ public Participant $participant;
- public $event;
+ public Event $event;
+
+ public EventPayment $payment;
public $givenCourses;
public $password;
- public $toPay;
-
public $iDeal;
- public function __construct(Participant $participant, Event $event, ?EventPackage $package, $givenCourses, $password, $toPay, $iDeal)
+ public function __construct(Participant $participant, Event $event, ?EventPackage $package, EventPayment $payment, $givenCourses, $password, $iDeal)
{
$this->participant = $participant;
$this->event = $event;
$this->givenCourses = $givenCourses;
$this->password = $password;
- $this->toPay = $toPay;
$this->iDeal = $iDeal;
$this->package = $package;
+ $this->payment = $payment;
}
public function build()
diff --git a/resources/views/emails/participants/registrationConfirmation.blade.php b/resources/views/emails/participants/registrationConfirmation.blade.php
index 0332c11e..e32ded21 100644
--- a/resources/views/emails/participants/registrationConfirmation.blade.php
+++ b/resources/views/emails/participants/registrationConfirmation.blade.php
@@ -32,18 +32,23 @@
vastgesteld. Zodra het kampgeld bekend is, ontvangt u daarover per e-mail bericht.
@else
- @if ($iDeal == 0)
+ @if ($payment->isFree())
+
+ Uw kind staat op dit moment voorlopig ingeschreven voor het kamp.
+ Er is geen betaling nodig voor deze inschrijving.
+
+ @elseif ($iDeal == 0)
Uw kind staat op dit moment voorlopig ingeschreven voor het kamp. Om de inschrijving definitief te maken,
dient u het kampgeld zoals hieronder vermeld over te maken op onze rekening. Beschikbare plaatsen op een
- kamp worden vegeven op volgorde van betaling, dus wacht hier niet te lang mee. Uiterlijk twee weken nadat u
+ kamp worden vergeven op volgorde van betaling, dus wacht hier niet te lang mee. Uiterlijk twee weken nadat u
het kampgeld heeft overgemaakt, ontvangt u per e-mail een bevestiging van de inschrijving.
@else
U heeft aangegeven het kampgeld direct via iDeal te betalen. Wanneer dit succesvol ontvangen is, ontvangt u
een aparte bevestiging daarvan. Is er onverhoopt toch iets misgegaan, dan dient u het kampgeld zoals
- hieronder vermeld over te maken op onze rekening. Beschikbare plaatsen op een kamp worden vegeven op
+ hieronder vermeld over te maken op onze rekening. Beschikbare plaatsen op een kamp worden vergeven op
volgorde van betaling, dus wacht hier niet te lang mee. Uiterlijk twee weken nadat u het kampgeld heeft
overgemaakt, ontvangt u per e-mail een bevestiging van de inschrijving.
@@ -51,7 +56,7 @@
BETALINGSINFORMATIE
- Te betalen bedrag: € {{ $toPay }}
+ Te betalen bedrag: € {{ $payment->getTotalAmount() }}
Rekeningnummer: NL68 TRIO 0198 4197 83 t.n.v. Vereniging Anderwijs te Utrecht
Onder vermelding van: naam deelnemer + deze kampcode: {{ $event->code }}
diff --git a/resources/views/registration/participantStored.blade.php b/resources/views/registration/participantStored.blade.php
index cebce901..15b592f8 100644
--- a/resources/views/registration/participantStored.blade.php
+++ b/resources/views/registration/participantStored.blade.php
@@ -11,11 +11,15 @@
- U heeft uw kind succesvol ingeschreven voor een Anderwijskamp. U ontvangt een automatische bevestigingsmail op het opgegeven emailadres. Om de inschrijving definitief te maken, dient u het kampgeld over te maken op onze rekening.
- @if ($toPay == 0)
- Voor dit kamp is de prijs echter nog niet definitief vastgesteld. Zodra dat is gebeurd, ontvangt u daarover per email bericht.
- @else
- De betalingsinformatie vindt u in de bevestigingsmail. Het is handig om dit zo snel mogelijk te doen, want plaatsing voor een kamp gebeurt op volgorde van betaling.
+ U heeft uw kind succesvol ingeschreven voor een Anderwijskamp.
+
+ @if (!$payment->isFree())
+ U ontvangt een automatische bevestigingsmail op het opgegeven emailadres. Om de inschrijving definitief te maken, dient u het kampgeld over te maken op onze rekening.
+ @if ($payment->isUndetermined())
+ Voor dit kamp is de prijs echter nog niet definitief vastgesteld. Zodra dat is gebeurd, ontvangt u daarover per email bericht.
+ @else
+ De betalingsinformatie vindt u in de bevestigingsmail. Het is handig om dit zo snel mogelijk te doen, want plaatsing voor een kamp gebeurt op volgorde van betaling.
+ @endif
@endif
From 5d12f47b6fc41936bc8a8852c1c3b39837292590 Mon Sep 17 00:00:00 2001
From: Vincent Hagen
Date: Sun, 29 Oct 2023 16:51:08 +0100
Subject: [PATCH 4/6] Mark free payments as payed during registration
---
app/Http/Controllers/RegistrationController.php | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/app/Http/Controllers/RegistrationController.php b/app/Http/Controllers/RegistrationController.php
index 6f0468a9..cd1b6299 100644
--- a/app/Http/Controllers/RegistrationController.php
+++ b/app/Http/Controllers/RegistrationController.php
@@ -291,6 +291,12 @@ public function storeParticipant(NewParticipantRequest $request)
->existing(false);
$iDeal = $request->iDeal;
+ if ($payment->isFree()) {
+ $camp->participants()->updateExistingPivot($participant->id, [
+ 'datum_betaling' => Carbon::now(),
+ ]);
+ }
+
// Send update to office committee
Mail::send(new NewParticipantNotification(
$participant,
From 9e12ee58024c88f8e89d3d1b84feaab4f7eff7fb Mon Sep 17 00:00:00 2001
From: Vincent Hagen
Date: Sun, 29 Oct 2023 17:00:11 +0100
Subject: [PATCH 5/6] Add 100% discount case for existing participants going on
camp
---
app/Http/Controllers/ProfileController.php | 9 ++++++++-
app/Mail/participants/OnEventConfirmation.php | 13 +++++++------
.../participants/onEventConfirmation.blade.php | 9 +++++++--
3 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php
index 01dd670a..1a6b6214 100644
--- a/app/Http/Controllers/ProfileController.php
+++ b/app/Http/Controllers/ProfileController.php
@@ -21,6 +21,7 @@
use App\Models\Member;
use App\Services\Chart\ChartServiceInterface;
use Illuminate\Http\Request;
+use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Mail;
@@ -387,6 +388,12 @@ public function onCampSave(Request $request)
$iDeal = $request->iDeal;
$type = 'existing';
+ if ($payment->isFree()) {
+ $camp->participants()->updateExistingPivot($participant->id, [
+ 'datum_betaling' => Carbon::now(),
+ ]);
+ }
+
// Send update to office committee
Mail::send(new ParticipantOnEventNotification(
$participant,
@@ -397,8 +404,8 @@ public function onCampSave(Request $request)
Mail::send(new ParticipantOnEventConfirmationMail(
$participant,
$camp,
+ $payment,
$givenCourses,
- $toPay,
$iDeal,
$type
));
diff --git a/app/Mail/participants/OnEventConfirmation.php b/app/Mail/participants/OnEventConfirmation.php
index e2daf959..cb0a1a52 100644
--- a/app/Mail/participants/OnEventConfirmation.php
+++ b/app/Mail/participants/OnEventConfirmation.php
@@ -4,6 +4,7 @@
namespace App\Mail\participants;
+use App\Helpers\Payment\EventPayment;
use App\Models\Event;
use App\Models\Participant;
use Illuminate\Bus\Queueable;
@@ -17,26 +18,26 @@ class OnEventConfirmation extends Mailable
use SerializesModels;
- public $participant;
+ public Participant $participant;
- public $event;
+ public Event $event;
- public $givenCourses;
+ public EventPayment $payment;
- public $toPay;
+ public $givenCourses;
public $iDeal;
public $type;
- public function __construct(Participant $participant, Event $event, $givenCourses, $toPay, $iDeal, $type)
+ public function __construct(Participant $participant, Event $event, EventPayment $payment, $givenCourses, $iDeal, $type)
{
$this->participant = $participant;
$this->event = $event;
$this->givenCourses = $givenCourses;
- $this->toPay = $toPay;
$this->iDeal = $iDeal;
$this->type = $type;
+ $this->payment = $payment;
}
public function build()
diff --git a/resources/views/emails/participants/onEventConfirmation.blade.php b/resources/views/emails/participants/onEventConfirmation.blade.php
index c8afa64d..54959134 100644
--- a/resources/views/emails/participants/onEventConfirmation.blade.php
+++ b/resources/views/emails/participants/onEventConfirmation.blade.php
@@ -18,7 +18,12 @@
Onderaan dit bericht kunt u zien voor welke vakken u uw kind heeft opgegeven.
-@if ($toPay == 0)
+@if ($payment->isFree())
+
+ Uw kind staat op dit moment voorlopig ingeschreven voor het kamp.
+ Er is geen betaling nodig voor deze inschrijving.
+
+@elseif ($payment->isUndetermined())
Uw kind staat op dit moment voorlopig ingeschreven voor het kamp. Om de inschrijving definitief te maken, dient u het kampgeld over te maken op onze rekening. Voor dit kamp is de prijs echter nog niet definitief vastgesteld. Zodra de prijs bekend is, ontvangt u daarover per e-mail bericht.
@@ -35,7 +40,7 @@
BETALINGSINFORMATIE
- Te betalen bedrag: € {{ $toPay }}
+ Te betalen bedrag: € {{ $payment->getTotalAmount() }}
Rekeningnummer: NL68 TRIO 0198 4197 83 t.n.v. Vereniging Anderwijs te Utrecht
Onder vermelding van: naam deelnemer + deze kampcode: {{ $event->code }}
From 6b80968bbf310c4cb7004c2b2bad358d93ed1e08 Mon Sep 17 00:00:00 2001
From: Vincent Hagen
Date: Sun, 29 Oct 2023 20:22:30 +0100
Subject: [PATCH 6/6] Processed feedback. Show payment info only when the event
is not free
---
.../participants/onEventConfirmation.blade.php | 3 ++-
.../registrationConfirmation.blade.php | 15 ++++++++-------
.../registration/participantStored.blade.php | 3 ++-
3 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/resources/views/emails/participants/onEventConfirmation.blade.php b/resources/views/emails/participants/onEventConfirmation.blade.php
index 54959134..29e3ff6e 100644
--- a/resources/views/emails/participants/onEventConfirmation.blade.php
+++ b/resources/views/emails/participants/onEventConfirmation.blade.php
@@ -37,13 +37,14 @@
U heeft aangegeven het kampgeld direct via iDeal te betalen. Wanneer dit succesvol ontvangen is, ontvangt u een aparte bevestiging daarvan. Is er onverhoopt toch iets misgegaan, dan dient u het kampgeld zoals hieronder vermeld over te maken op onze rekening. Beschikbare plaatsen op een kamp worden vergeven op volgorde van betaling, dus wacht hier niet te lang mee. Uiterlijk twee weken nadat u het kampgeld heeft overgemaakt, ontvangt u per e-mail een bevestiging van de inschrijving.
@endif
-
+
BETALINGSINFORMATIE
Te betalen bedrag: € {{ $payment->getTotalAmount() }}
Rekeningnummer: NL68 TRIO 0198 4197 83 t.n.v. Vereniging Anderwijs te Utrecht
Onder vermelding van: naam deelnemer + deze kampcode: {{ $event->code }}
+
@endif
@if ($type == 'new' && $participant->inkomen)
diff --git a/resources/views/emails/participants/registrationConfirmation.blade.php b/resources/views/emails/participants/registrationConfirmation.blade.php
index e32ded21..fc138c55 100644
--- a/resources/views/emails/participants/registrationConfirmation.blade.php
+++ b/resources/views/emails/participants/registrationConfirmation.blade.php
@@ -25,19 +25,19 @@
Anderwijskamp.
-@if ($event->prijs === null)
+@if ($payment->isUndetermined())
Uw kind staat op dit moment voorlopig ingeschreven voor het kamp. Om de inschrijving definitief te maken, dient
u het kampgeld over te maken op onze rekening. Voor dit kamp is de prijs echter nog niet definitief
vastgesteld. Zodra het kampgeld bekend is, ontvangt u daarover per e-mail bericht.
+@elseif($payment->isFree())
+
+ Uw kind staat op dit moment voorlopig ingeschreven voor het kamp.
+ Er is geen betaling nodig voor deze inschrijving.
+
@else
- @if ($payment->isFree())
-
- Uw kind staat op dit moment voorlopig ingeschreven voor het kamp.
- Er is geen betaling nodig voor deze inschrijving.
-
- @elseif ($iDeal == 0)
+ @if ($iDeal == 0)
Uw kind staat op dit moment voorlopig ingeschreven voor het kamp. Om de inschrijving definitief te maken,
dient u het kampgeld zoals hieronder vermeld over te maken op onze rekening. Beschikbare plaatsen op een
@@ -54,6 +54,7 @@
@endif
+
BETALINGSINFORMATIE
Te betalen bedrag: € {{ $payment->getTotalAmount() }}
diff --git a/resources/views/registration/participantStored.blade.php b/resources/views/registration/participantStored.blade.php
index 15b592f8..acf614eb 100644
--- a/resources/views/registration/participantStored.blade.php
+++ b/resources/views/registration/participantStored.blade.php
@@ -12,9 +12,10 @@
U heeft uw kind succesvol ingeschreven voor een Anderwijskamp.
+ U ontvangt een automatische bevestigingsmail op het opgegeven emailadres.
@if (!$payment->isFree())
- U ontvangt een automatische bevestigingsmail op het opgegeven emailadres. Om de inschrijving definitief te maken, dient u het kampgeld over te maken op onze rekening.
+ Om de inschrijving definitief te maken, dient u het kampgeld over te maken op onze rekening.
@if ($payment->isUndetermined())
Voor dit kamp is de prijs echter nog niet definitief vastgesteld. Zodra dat is gebeurd, ontvangt u daarover per email bericht.
@else