<?php

namespace app;

use enums\LangEnum;

/**
 *
 */
class LangService
{

    /**
     * @return string[]
     */
    public static function getAllowLang(): array
    {
        return array_map(function ($item) {
            return $item->value;
        }, array_filter(LangEnum::cases(), function ($item) {
            return $item->is_open();
        }));
    }

    /**
     * @return array
     */
    public static function getLangCases(): array
    {
        return array_map(function ($item) {
            return [
                'value' => $item->value,
                'lang' => $item->lang(),
                'label' => $item->label()
            ];
        }, array_filter(LangEnum::cases(), function ($item) {
            return $item->is_open();
        }));
    }

    /**
     * @return array
     */
    public static function getLabelCases(): array
    {
        return array_map(function ($item) {
            return [
                'value' => $item->value,
                'label' => $item->label()
            ];
        }, array_filter(LangEnum::cases(), function ($item) {
            return $item->is_open();
        }));
    }

    /**
     * @return array
     */
    public static function getLangExtend(): array
    {
        $extend = [];
        foreach (array_filter(LangEnum::cases(), function ($item) {
            return $item->is_open();
        }) as $item) {
            $extend[$item->value] = $item->extend();
        }
        return $extend;
    }

    /**
     * @return array
     */
    public static function getAcceptLang(): array
    {
        $extend = [];
        foreach (array_filter(LangEnum::cases(), function ($item) {
            return $item->is_open();
        }) as $item) {
            foreach ($item->getLangList() as $langListitem) {
                $extend[$langListitem] = $item->value;
            }
        }
        return $extend;
    }
}