<?php
class ControllerStartupCurrency extends Controller {
    public function index(): void {
        $code = '';

        // Currencies
        $this->load->model('localisation/currency');

        $currencies = $this->model_localisation_currency->getCurrencies();

        if (isset($this->session->data['currency'])) {
            $code = $this->session->data['currency'];
        }

        if (isset($this->request->cookie['currency']) && !array_key_exists($code, $currencies)) {
            $code = $this->request->cookie['currency'];
        }

        if (!array_key_exists($code, $currencies)) {
            $code = $this->config->get('config_currency');
        }

        if (!isset($this->session->data['currency']) || $this->session->data['currency'] != $code) {
            $this->session->data['currency'] = $code;
        }

        // Set a new currency cookie if the code does not match the current one
        if (!isset($this->request->cookie['currency']) || $this->request->cookie['currency'] != $code) {
            $option = [
                'expires'  => time() + 60 * 60 * 24 * 30,
                'path'     => '/',
                'SameSite' => 'Lax'
            ];

            setcookie('currency', $code, $option);
        }

        $this->registry->set('currency', new \Cart\Currency($this->registry));
    }
}