Files
MyX/app/Livewire/Contests.php
2024-11-27 16:46:45 +01:00

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
]);
}
}