diff --git a/app/Http/Controllers/Admin/AuditionSettings.php b/app/Http/Controllers/Admin/AuditionSettings.php index 25f18a9..8d4bef4 100644 --- a/app/Http/Controllers/Admin/AuditionSettings.php +++ b/app/Http/Controllers/Admin/AuditionSettings.php @@ -26,7 +26,7 @@ class AuditionSettings extends Controller 'organizerName' => ['required'], 'organizerEmail' => ['required', 'email'], 'registrationCode' => ['required'], - 'fee_structure' => ['required', 'in:oneFeePerEntry,oneFeePerStudent'], + 'fee_structure' => ['required', 'in:oneFeePerEntry,oneFeePerStudent,oneFeePerStudentPerEvent'], // Options should align with the boot method of InvoiceDataServiceProvider 'late_fee' => ['nullable', 'numeric', 'min:0'], 'school_fee' => ['nullable', 'numeric', 'min:0'], diff --git a/app/Services/Invoice/InvoiceOneFeePerStudentPerEvent.php b/app/Services/Invoice/InvoiceOneFeePerStudentPerEvent.php index a1ad22e..ca37ddd 100644 --- a/app/Services/Invoice/InvoiceOneFeePerStudentPerEvent.php +++ b/app/Services/Invoice/InvoiceOneFeePerStudentPerEvent.php @@ -37,9 +37,10 @@ class InvoiceOneFeePerStudentPerEvent implements InvoiceDataService $entries = $school->entries()->with('audition')->orderBy('created_at', 'desc')->get()->groupBy('student_id'); foreach ($school->students as $student) { - $firstEntryForStudent = true; + $eventsEntered = []; foreach ($entries[$student->id] ?? [] as $entry) { - if ($firstEntryForStudent) { + if (! in_array($entry->audition->event_id, $eventsEntered)) { + $eventsEntered[] = $entry->audition->event_id; $entryFee = $entry->audition->entry_fee / 100; $lateFee = ($this->entryService->isEntryLate($entry) && ! $entry->hasFlag('late_fee_waived')) ? auditionSetting('late_fee') / 100 : 0;