<?php

use Illuminate\Support\Str;

if (! function_exists('is_empty')) {
    /**
     * A better function to check if a value is empty or null. Strings, arrays, and Objects are supported.
     *
     * @param  mixed  $value
     */
    function is_empty($value): bool
    {
        if (is_null($value)) {
            return true;
        }

        if (is_string($value)) {
            if ($value === '') {
                return true;
            }
        }

        if (is_array($value)) {
            if (count($value) === 0) {
                return true;
            }
        }

        if (is_object($value)) {
            $value = (array) $value;

            if (count($value) === 0) {
                return true;
            }
        }

        return false;
    }
}

if (! function_exists('get_country_name_by_iso')) {
    function get_country_name_by_iso($country_iso)
    {
        if (! is_empty($country_iso)) {

            $country_iso = strtoupper($country_iso);

            try {
                return config("platform.country_codes.{$country_iso}")['name'];
            } catch (\Exception $e) {
            }

        }

        return 'International';
    }
}

if (! function_exists('get_country_emoji_by_iso')) {
    function get_country_emoji_by_iso($country_iso)
    {
        if (! is_empty($country_iso)) {

            $country_iso = strtoupper($country_iso);

            try {
                return config("platform.country_codes.{$country_iso}")['emoji'];
            } catch (\Exception $e) {
            }

        }

        return '🌎';
    }
}

if (! function_exists('str_random')) {
    function str_random($length = 10)
    {
        return Str::random($length);
    }
}
