<?php

namespace App\Livewire;

use App\Models\Application;
use App\Services\SynapseService;

use Livewire\Component;
use Livewire\WithPagination;

class ApplicationList extends Component
{
    use WithPagination;

    public $hideApproved = true;

    public $error = false;

    public function updatingHideApproved()
    {
        $this->resetPage();
    }

    public function approveApplication($uuid)
    {
        $service = new SynapseService();
        $token = $service->createRegistrationToken();
        if (!$token) {
            $this->error = true;
            return;
        }

        Application::where('uuid', $uuid)->update(['status' => 1, 'registration_token' => $token]);
    }

    public function rejectApplication($uuid)
    {
        Application::where('uuid', $uuid)->update(['status' => 2]);
    }

    public function render()
    {
        $applications = Application::with('uploads')
            ->when($this->hideApproved !== false, fn($query) => $query->where('status', 0))
            ->latest()
            ->paginate(10);

        return view('livewire.application-list', compact('applications'));
    }
}