<?php

namespace MintyPHP\Service\Auth;

use MintyPHP\Service\Settings\SettingsApiPolicyGateway;
use MintyPHP\Service\Settings\SettingsAppGateway;
use MintyPHP\Service\Settings\SettingsDefaultsGateway;
use MintyPHP\Service\Settings\SettingsLoginPersistenceGateway;
use MintyPHP\Service\Settings\SettingsMicrosoftGateway;

class AuthSettingsGateway
{
    public function __construct(
        private readonly SettingsMicrosoftGateway $settingsMicrosoftGateway,
        private readonly SettingsApiPolicyGateway $settingsApiPolicyGateway,
        private readonly SettingsDefaultsGateway $settingsDefaultsGateway,
        private readonly SettingsAppGateway $settingsAppGateway,
        private readonly SettingsLoginPersistenceGateway $settingsLoginPersistenceGateway
    ) {
    }

    public function getMicrosoftSharedClientId(): string
    {
        return (string) $this->settingsMicrosoftGateway->getMicrosoftSharedClientId();
    }

    public function getMicrosoftSharedClientSecret(): string
    {
        return (string) $this->settingsMicrosoftGateway->getMicrosoftSharedClientSecret();
    }

    public function getMicrosoftAuthority(): string
    {
        return (string) $this->settingsMicrosoftGateway->getMicrosoftAuthority();
    }

    public function getApiTokenMaxTtlDays(): int
    {
        return $this->settingsApiPolicyGateway->getApiTokenMaxTtlDays();
    }

    public function getApiTokenDefaultTtlDays(): int
    {
        return $this->settingsApiPolicyGateway->getApiTokenDefaultTtlDays();
    }

    public function getAppTheme(): string
    {
        return (string) $this->settingsAppGateway->getAppTheme();
    }

    public function getDefaultRoleId(): int
    {
        return (int) $this->settingsDefaultsGateway->getDefaultRoleId();
    }

    public function getDefaultDepartmentId(): int
    {
        return (int) $this->settingsDefaultsGateway->getDefaultDepartmentId();
    }

    public function isMicrosoftAutoRememberDefault(): bool
    {
        return $this->settingsLoginPersistenceGateway->isMicrosoftAutoRememberDefault();
    }

    public function getRememberTokenLifetimeDays(): int
    {
        return $this->settingsLoginPersistenceGateway->getRememberTokenLifetimeDays();
    }
}
