80 lines
2.1 KiB
PHP
80 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire;
|
|
|
|
use App\Models\Contest;
|
|
use App\Models\Account;
|
|
use App\Jobs\ProcessTweet;
|
|
use Carbon\Carbon;
|
|
use Livewire\Component;
|
|
use Livewire\WithPagination;
|
|
|
|
class Contests extends Component
|
|
{
|
|
use WithPagination;
|
|
|
|
// Fonction appelée lors du chargement du composant
|
|
public function mount()
|
|
{
|
|
// Initial setup if needed
|
|
}
|
|
|
|
// Fonction pour participer automatiquement à un concours
|
|
public function auto($contestId)
|
|
{
|
|
$contest = Contest::find($contestId);
|
|
|
|
if (!$contest) {
|
|
session()->flash('error', 'Concours introuvable.');
|
|
return;
|
|
}
|
|
|
|
flash()->success('Concours '.$contest->name.' en cours de participation');
|
|
|
|
// Récupération des comptes activés
|
|
$accounts = Account::where('play', true)->get();
|
|
|
|
foreach ($accounts as $account) {
|
|
ProcessTweet::dispatch($contest->id, $account->id); // Envoi du tweet pour participer
|
|
}
|
|
|
|
// Mise à jour du concours pour indiquer qu'il a été participé
|
|
$contest->participated = true;
|
|
$contest->save();
|
|
|
|
// Recharger les concours
|
|
$this->resetPage(); // Reset pagination to the first page
|
|
}
|
|
|
|
// Fonction pour supprimer un concours
|
|
public function delete($contestId)
|
|
{
|
|
$contest = Contest::find($contestId);
|
|
|
|
if ($contest) {
|
|
$contest->enable = false;
|
|
$contest->save();
|
|
flash()->error('Concours suppimé');
|
|
}
|
|
|
|
// Recharger les concours après la suppression
|
|
$this->resetPage(); // Reset pagination to the first page
|
|
}
|
|
|
|
// Fonction pour afficher la vue
|
|
public function render()
|
|
{
|
|
$datefin = Carbon::now()->addDays(3)->format('Y-m-d');
|
|
$contests = Contest::where('fin', '>=', Carbon::now()->format('Y-m-d'))
|
|
->where('fin', '<=', $datefin)
|
|
->where('participated', '!=', true)
|
|
->where('enable', true)
|
|
->orderBy('fin', 'asc')
|
|
->paginate(20);
|
|
|
|
return view('livewire.contests', [
|
|
'contests' => $contests
|
|
]);
|
|
}
|
|
}
|