Implement OneFeePerStudentPerEvent option
This commit is contained in:
parent
340fae6747
commit
1953eedb0b
|
|
@ -26,7 +26,7 @@ class AuditionSettings extends Controller
|
||||||
'organizerName' => ['required'],
|
'organizerName' => ['required'],
|
||||||
'organizerEmail' => ['required', 'email'],
|
'organizerEmail' => ['required', 'email'],
|
||||||
'registrationCode' => ['required'],
|
'registrationCode' => ['required'],
|
||||||
'fee_structure' => ['required', 'in:oneFeePerEntry,oneFeePerStudent'],
|
'fee_structure' => ['required', 'in:oneFeePerEntry,oneFeePerStudent,oneFeePerStudentPerEvent'],
|
||||||
// Options should align with the boot method of InvoiceDataServiceProvider
|
// Options should align with the boot method of InvoiceDataServiceProvider
|
||||||
'late_fee' => ['nullable', 'numeric', 'min:0'],
|
'late_fee' => ['nullable', 'numeric', 'min:0'],
|
||||||
'school_fee' => ['nullable', 'numeric', 'min:0'],
|
'school_fee' => ['nullable', 'numeric', 'min:0'],
|
||||||
|
|
|
||||||
|
|
@ -37,9 +37,10 @@ class InvoiceOneFeePerStudentPerEvent implements InvoiceDataService
|
||||||
|
|
||||||
$entries = $school->entries()->with('audition')->orderBy('created_at', 'desc')->get()->groupBy('student_id');
|
$entries = $school->entries()->with('audition')->orderBy('created_at', 'desc')->get()->groupBy('student_id');
|
||||||
foreach ($school->students as $student) {
|
foreach ($school->students as $student) {
|
||||||
$firstEntryForStudent = true;
|
$eventsEntered = [];
|
||||||
foreach ($entries[$student->id] ?? [] as $entry) {
|
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;
|
$entryFee = $entry->audition->entry_fee / 100;
|
||||||
$lateFee = ($this->entryService->isEntryLate($entry) && ! $entry->hasFlag('late_fee_waived'))
|
$lateFee = ($this->entryService->isEntryLate($entry) && ! $entry->hasFlag('late_fee_waived'))
|
||||||
? auditionSetting('late_fee') / 100 : 0;
|
? auditionSetting('late_fee') / 100 : 0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue