private function setRegionalParameters()

in app/Services/User/CreateUser.php [84:134]


    private function setRegionalParameters($user, $ipAddress): User
    {
        $infos = RequestHelper::infos($ipAddress);

        // Associate timezone and currency
        $currencyCode = $infos['currency'];
        $timezone = $infos['timezone'];
        if ($infos['country']) {
            $country = CountriesHelper::getCountry($infos['country']);
        } else {
            $country = CountriesHelper::getCountryFromLocale($user->locale);
        }

        // Timezone
        if (! is_null($timezone)) {
            $user->timezone = $timezone;
        } elseif (! is_null($country)) {
            $user->timezone = CountriesHelper::getDefaultTimezone($country);
        } else {
            $user->timezone = config('app.timezone');
        }

        // Currency
        if (! is_null($currencyCode)) {
            $this->associateCurrency($user, $currencyCode);
        } elseif (! is_null($country)) {
            foreach ($country->currencies as $currency) {
                if ($this->associateCurrency($user, $currency)) {
                    break;
                }
            }
        }

        // Temperature scale
        if (! is_null($country)) {
            switch ($country->cca2) {
                case 'US':
                case 'BZ':
                case 'KY':
                    $user->temperature_scale = 'fahrenheit';
                    break;
                default:
                    $user->temperature_scale = 'celsius';
                    break;
            }
        } else {
            $user->temperature_scale = 'celsius';
        }

        return $user;
    }