50 lines
994 B
PHP
50 lines
994 B
PHP
<?php
|
|
|
|
namespace App\Services;
|
|
|
|
use App\Models\CookieSession;
|
|
|
|
class SessionManagerService
|
|
{
|
|
/**
|
|
* Get the next available active session based on priority and last_used_at.
|
|
*/
|
|
public function getAvailableSession(): ?CookieSession
|
|
{
|
|
return CookieSession::active()
|
|
->orderByDesc('priority')
|
|
->orderBy('last_used_at', 'asc')
|
|
->first();
|
|
}
|
|
|
|
/**
|
|
* Mark a session as used.
|
|
*/
|
|
public function markAsUsed(CookieSession $session): void
|
|
{
|
|
$session->update([
|
|
'last_used_at' => now(),
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Mark a session as error.
|
|
*/
|
|
public function markAsError(CookieSession $session): void
|
|
{
|
|
$session->update([
|
|
'status' => 'error',
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Disable a session.
|
|
*/
|
|
public function disableSession(CookieSession $session): void
|
|
{
|
|
$session->update([
|
|
'status' => 'disabled',
|
|
]);
|
|
}
|
|
}
|