<?php

namespace D3\GoogleAnalytics4\Application\Model;

class ManagerTypes
{
    #ToDo: make own classes for each of the manager


    const EXTERNAL_SERVICE          = "externalService";
    const NET_COOKIE_MANAGER        = "net_cookie_manager";

    /**
     * Further information's:
     * https://github.com/aggrosoft/oxid-cookie-compliance
     */
    const AGCOOKIECOMPLIANCE        = "agcookiecompliance";

    /**
     * Used the OXID Module.
     *
     * Further information's:
     * https://docs.oxid-esales.com/modules/usercentrics/de/latest/einfuehrung.html
     *
     * Usercentrics homepage:
     * https://usercentrics.com
     */
    const USERCENTRICS_MODULE       = "oxps_usercentrics";

    /**
     * manually included usercentrics script
     */
    const USERCENTRICS_MANUALLY     = "USERCENTRICS";

    const CONSENTMANAGER            = "CONSENTMANAGER";

    const COOKIEFIRST               = "COOKIEFIRST";

    const COOKIEBOT               = "COOKIEBOT";

    /**
     * @return array
     */
    public function getManagerList(): array
    {
        return [
            "externalService"       => self::EXTERNAL_SERVICE,
            "agcookiecompliance"    => self::AGCOOKIECOMPLIANCE,
            "net_cookie_manager"    => self::NET_COOKIE_MANAGER,
            "oxps_usercentrics"     => self::USERCENTRICS_MODULE,
            "usercentrics"          => self::USERCENTRICS_MANUALLY,
            "consentmanager"        => self::CONSENTMANAGER,
            "cookiefirst"           => self::COOKIEFIRST,
            "cookiebot"             => self::COOKIEBOT,
        ];
    }

    /**
     * @param string $sManager
     * @return bool
     */
    public function isManagerInList(string $sManager) :bool
    {
        return in_array($sManager, $this->getManagerList(), true);
    }
}