<?php

declare(strict_types=1);

namespace Xentral\Modules\Postat\SOAP;

class Config
{
    private $clientid;

    private $orgunitid;

    private $orgunitguid;

    private $soapurl;

    /**
     * Config constructor.
     *
     * @param array $config
     *
     * @throws PostAtException
     */
    public function __construct(array $config)
    {
        $requiredSettings = [
            'soapurl',
            'clientid',
            'orgunitid',
            'orgunitguid',
        ];

        foreach ($requiredSettings as $setting) {
            if (empty($config[$setting])) {
                throw new PostAtException(
                    'Configuration of the Post.at module is invalid. Please verify the configuration.'
                );
            }

            $this->$setting = $config[$setting];
        }
    }

    /**
     * @return string The URL of the SOAP API endpoint.
     */
    public function getSoapUrl(): string
    {
        return $this->soapurl;
    }

    /**
     * Get ClientId (a.k.a DebitorID).
     *
     * @return int
     */
    public function getClientId(): int
    {
        return (int) $this->clientid;
    }

    /**
     * Get OrganisationID; unique for a customerID.
     *
     * @return int
     */
    public function getOrgUnitId(): int
    {
        return (int) $this->orgunitid;
    }

    /**
     * Get unique GUID of the customerID.
     *
     * @return string
     */
    public function getOrgUnitGuid(): string
    {
        return $this->orgunitguid;
    }
}