netgescon-day0/app/Support/GestioneContext.php

57 lines
1.4 KiB
PHP

<?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;
}
}