57 lines
1.4 KiB
PHP
Executable File
57 lines
1.4 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Support;
|
|
|
|
use App\Models\User;
|
|
|
|
class GestioneContext
|
|
{
|
|
public const SESSION_KEY = 'netgescon.gestione_attiva';
|
|
|
|
/**
|
|
* @return array<string, string>
|
|
*/
|
|
public static function availableGestioni(): array
|
|
{
|
|
return [
|
|
'ordinaria' => 'Gestione ordinaria',
|
|
'riscaldamento' => 'Gestione riscaldamento',
|
|
'straordinaria' => 'Gestione straordinaria',
|
|
];
|
|
}
|
|
|
|
public static function resolveActiveGestione(?User $user = null): string
|
|
{
|
|
$available = array_keys(self::availableGestioni());
|
|
|
|
$sessionValue = session(self::SESSION_KEY);
|
|
if (is_string($sessionValue) && in_array($sessionValue, $available, true)) {
|
|
return $sessionValue;
|
|
}
|
|
|
|
$default = (string) config('netgescon.defaults.default_gestione', 'ordinaria');
|
|
if (in_array($default, $available, true)) {
|
|
session([self::SESSION_KEY => $default]);
|
|
return $default;
|
|
}
|
|
|
|
session([self::SESSION_KEY => 'ordinaria']);
|
|
return 'ordinaria';
|
|
}
|
|
|
|
public static function setActiveGestione(?User $user, string $gestione): bool
|
|
{
|
|
$available = array_keys(self::availableGestioni());
|
|
if (! in_array($gestione, $available, true)) {
|
|
return false;
|
|
}
|
|
|
|
if (! $user) {
|
|
return false;
|
|
}
|
|
|
|
session([self::SESSION_KEY => $gestione]);
|
|
return true;
|
|
}
|
|
}
|