auditionadmin/app/Services/DrawService.php

44 lines
1.0 KiB
PHP

<?php
namespace App\Services;
use App\Models\Audition;
use Illuminate\Support\Facades\DB;
class DrawService
{
/**
* Create a new class instance.
*/
public function __construct()
{
//
}
public function runOneDraw(Audition $audition): void
{
// set draw number null on each entry before beginning
DB::table('entries')->where('audition_id', $audition->id)->update(['draw_number' => null]);
$randomizedEntries = $audition->entries->shuffle();
foreach ($randomizedEntries as $index => $entry) {
$entry->draw_number = $index + 1;
$entry->save();
}
$audition->addFlag('drawn');
}
public function runDrawsOnCollection($auditions): void
{
$auditions->each(fn ($audition) => $this->runOneDraw($audition));
}
public function checkCollectionForDrawnAuditions($auditions): bool
{
$auditions->loadMissing('flags');
return $auditions->contains(fn ($audition) => $audition->hasFlag('drawn'));
}
}