44 lines
1.0 KiB
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'));
|
|
}
|
|
}
|