<?php

namespace App\Helpers;

use App\Enums\ArticleStyleEnum;
use App\Enums\LocationEnum;

class TitleHelper
{
    public static function translate(string $englishTitle)
    {
        $map = [
            'Madrid' => [
                [
                    'preg' => '/Madrid Spring ([0-9]*?)/',
                    'trans' => '春季',
                    'style' => ArticleStyleEnum::NULL->value,
                    'location' => LocationEnum::MADRID->value,
                ],[
                    'preg' => '/Madrid Fall ([0-9]*?)/',
                    'trans' => '秋季',
                    'style' => ArticleStyleEnum::NULL->value,
                    'location' => LocationEnum::MADRID->value,
                ],
            ],
            'Spain' => [
                [
                    'preg' => '/Spain Spring ([0-9]*?)/',
                    'trans' => '春季',
                    'style' => ArticleStyleEnum::NULL->value,
                    'location' => LocationEnum::SPAIN->value,
                ],[
                    'preg' => '/Spain Fall ([0-9]*?)/',
                    'trans' => '秋季',
                    'style' => ArticleStyleEnum::NULL->value,
                    'location' => LocationEnum::SPAIN->value,
                ],
            ],
            'Istanbul' => [
                [
                    'preg' => '/Istanbul Spring ([0-9]*?)/',
                    'trans' => '春季',
                    'style' => ArticleStyleEnum::NULL->value,
                    'location' => LocationEnum::ISTANBUL->value,
                ],[
                    'preg' => '/Istanbul Fall ([0-9]*?)/',
                    'trans' => '秋季',
                    'style' => ArticleStyleEnum::NULL->value,
                    'location' => LocationEnum::ISTANBUL->value,
                ],
            ],
            'Lagos' => [
                [
                    'preg' => '/Lagos Spring ([0-9]*?)/',
                    'trans' => '春季',
                    'style' => ArticleStyleEnum::NULL->value,
                    'location' => LocationEnum::LAGOS->value,
                ],[
                    'preg' => '/Lagos Fall ([0-9]*?)/',
                    'trans' => '秋季',
                    'style' => ArticleStyleEnum::NULL->value,
                    'location' => LocationEnum::LAGOS->value,
                ],
            ],
            'Russia' => [
                [
                    'preg' => '/Russia Spring ([0-9]*?)/',
                    'trans' => '春季',
                    'style' => ArticleStyleEnum::NULL->value,
                    'location' => LocationEnum::RUSSIA->value,
                ],[
                    'preg' => '/Russia Fall ([0-9]*?)/',
                    'trans' => '秋季',
                    'style' => ArticleStyleEnum::NULL->value,
                    'location' => LocationEnum::RUSSIA->value,
                ],
            ],
            'Shanghai' => [
                [
                    'preg' => '/Shanghai Spring ([0-9]*?)/',
                    'trans' => '春季',
                    'style' => ArticleStyleEnum::NULL->value,
                    'location' => LocationEnum::SHANGHAI->value,
                ],[
                    'preg' => '/Shanghai Fall ([0-9]*?)/',
                    'trans' => '秋季',
                    'style' => ArticleStyleEnum::NULL->value,
                    'location' => LocationEnum::SHANGHAI->value,
                ],
            ],
            'Bridal' => [
                [
                    'preg' => '/Bridal Spring ([0-9]*?)/',
                    'trans' => '春季婚纱礼服',
                    'style' => ArticleStyleEnum::BRIDAL->value,
                    'location' => LocationEnum::NULL->value,
                ],[
                    'preg' => '/Bridal Fall ([0-9]*?)/',
                    'trans' => '秋季婚纱礼服',
                    'style' => ArticleStyleEnum::BRIDAL->value,
                    'location' => LocationEnum::NULL->value,
                ],
            ],
            'Australia' => [
                [
                    'preg' => '/Australia Resort ([0-9]*)/',
                    'trans' => '度假系列',
                    'style' => 1,
                    'location' => LocationEnum::AUSTRALIA->value,
                ],[
                    'preg' => '/Australia Spring ([0-9]*)/',
                    'trans' => '春季',
                    'style' => 0,
                    'location' => LocationEnum::AUSTRALIA->value,
                ],
            ],
            'Menswear' => [
                [
                    'preg' => '/Spring ([0-9]*?) Menswear/',
                    'trans' => '春季男装',
                    'style' => 0,
                    'location' => 0,
                ],[
                    'preg' => '/Fall ([0-9]*?) Menswear/',
                    'trans' => '秋季男装',
                    'style' => 0,
                    'location' => 0,
                ]
            ],
            'Ukraine' => [
                [
                    'preg' => '/Ukraine Fall ([0-9]*)/',
                    'trans' => '秋季',
                    'style' => 0,
                    'location' => LocationEnum::UKRAINE->value, // 乌克兰
                ],
                [
                    'preg' => '/Ukraine Spring ([0-9]*)/',
                    'trans' => '春季',
                    'style' => 0,
                    'location' => LocationEnum::UKRAINE->value, // 乌克兰
                ],
            ],
            'Kiev' => [
                [
                    'preg' => '/Kiev Fall ([0-9]*)/',
                    'trans' => '秋季',
                    'style' => 0,
                    'location' => LocationEnum::KIEV->value, // 基辅
                ],[
                    'preg' => '/Kiev Spring ([0-9]*)/',
                    'trans' => '春季',
                    'style' => 0,
                    'location' => LocationEnum::KIEV->value, // 基辅
                ]
            ],
            'Stockholm' => [
                [
                    'preg' => '/Stockholm Fall ([0-9]*)/',
                    'trans' => '秋季',
                    'style' => 0,
                    'location' => LocationEnum::STOCKHOLM->value, // 斯德哥尔摩
                ],
                [
                    'preg' => '/Stockholm Spring ([0-9]*)/',
                    'trans' => '春季',
                    'style' => 0,
                    'location' => LocationEnum::STOCKHOLM->value, // 斯德哥尔摩
                ],
            ],
            'Tbilisi' => [
                [
                    'preg' => '/Tbilisi Fall ([0-9]*)/',
                    'trans' => '秋季',
                    'style' => 0,
                    'location' => LocationEnum::TBILISI->value, // 斯德哥尔摩
                ],
                [
                    'preg' => '/Tbilisi Spring ([0-9]*)/',
                    'trans' => '春季',
                    'style' => 0,
                    'location' => LocationEnum::TBILISI->value, // 斯德哥尔摩
                ],
            ],
            'Mexico' => [
                [
                    'preg' => '/Mexico Fall ([0-9]*)/',
                    'trans' => '秋季',
                    'style' => 0,
                    'location' => LocationEnum::MEXICO->value, // 斯德哥尔摩
                ],[
                    'preg' => '/Mexico Spring ([0-9]*)/',
                    'trans' => '秋季',
                    'style' => 0,
                    'location' => LocationEnum::MEXICO->value, // 斯德哥尔摩
                ],[
                    'preg' => '/Mexico City Fall ([0-9]*)/',
                    'trans' => '城市秋季',
                    'style' => 0,
                    'location' => LocationEnum::MEXICO->value, // 斯德哥尔摩
                ],[
                    'preg' => '/Mexico City Spring ([0-9]*)/',
                    'trans' => '城市春季',
                    'style' => 0,
                    'location' => LocationEnum::MEXICO->value, // 斯德哥尔摩
                ],
            ],
            'Tokyo' => [
                [
                    'preg' => '/Tokyo Spring ([0-9]*)/',
                    'trans' => '春季',
                    'style' => 0,
                    'location' => LocationEnum::TOKYO->value, // 东京
                ],[
                    'preg' => '/Tokyo Fall ([0-9]*)/',
                    'trans' => '秋季',
                    'style' => 0,
                    'location' => LocationEnum::TOKYO->value, // 东京
                ],
            ],
            'Berlin' => [
                [
                    'preg' => '/Berlin Fall ([0-9]*)/',
                    'trans' => '秋季',
                    'style' => 0,
                    'location' => LocationEnum::BERLIN->value, // 柏林
                ],
                [
                    'preg' => '/Berlin Spring ([0-9]*)/',
                    'trans' => '春季',
                    'style' => 0,
                    'location' => LocationEnum::BERLIN->value, // 柏林
                ],
            ],
            'Copenhagen' => [
                [
                    'preg' => '/Copenhagen Fall ([0-9]*)/',
                    'trans' => '秋季',
                    'style' => 0,
                    'location' => LocationEnum::COPENHAGEN->value, // 哥本哈根
                ],[
                    'preg' => '/Copenhagen Spring ([0-9]*)/',
                    'trans' => '春季',
                    'style' => 0,
                    'location' => LocationEnum::COPENHAGEN->value, // 哥本哈根
                ],
            ],
            'São Paulo' => [
                [
                    'preg' => '/São Paulo Fall ([0-9]*)/',
                    'trans' => '秋季',
                    'style' => 0,
                    'location' => LocationEnum::SAO_PAULO->value, // 哥本哈根
                ],[
                    'preg' => '/São Paulo Spring ([0-9]*)/',
                    'trans' => '春季',
                    'style' => 0,
                    'location' => LocationEnum::SAO_PAULO->value, // 哥本哈根
                ],
            ],
            'SEOUL' => [
                [
                    'preg' => '/Seoul Spring ([0-9]*)/',
                    'trans' => '春季',
                    'style' => 0,
                    'location' => LocationEnum::SEOUL->value,
                ],[
                    'preg' => '/Seoul Fall ([0-9]*)/',
                    'trans' => '秋季',
                    'style' => 0,
                    'location' => LocationEnum::SEOUL->value,
                ],
            ],
            'Spring' => [
                [
                    'preg' => '/([0-9]*?) Spring Summer/',
                    'trans' => '春夏',
                    'style' => 0,
                    'location' => 0,
                ],
            ],
            'Autumn Winter' => [
                [
                    'preg' => '/([0-9]*?) Autumn Winter/',
                    'trans' => '秋冬',
                    'style' => 0,
                    'location' => 0,
                ],
            ],
            'Ready-to-Wear' => [
                [
                    'preg' => '/Fall ([0-9]*?) Ready-to-Wear/',
                    'trans' => '秋季成衣',
                    'style' => 0,
                    'location' => 0,
                ],[
                    'preg' => '/Spring ([0-9]*?) Ready-to-Wear/',
                    'trans' => '春季成衣',
                    'style' => 0,
                    'location' => 0,
                ],
            ],
            'Resort' => [
                [
                    'preg' => '/Resort ([0-9]*?)/',
                    'trans' => '度假系列',
                    'style' => ArticleStyleEnum::RESORT->value,
                    'location' => LocationEnum::NULL->value,
                ],
            ],
            'Couture' => [
                [
                    'preg' => '/Spring ([0-9]*?) Couture/',
                    'trans' => '春季高订系列',
                    'style' => ArticleStyleEnum::RESORT->value,
                    'location' => LocationEnum::NULL->value,
                ],
                [
                    'preg' => '/Fall ([0-9]*?) Couture/',
                    'trans' => '秋季高订系列',
                    'style' => ArticleStyleEnum::RESORT->value,
                    'location' => LocationEnum::NULL->value,
                ],
            ],
            'Pre-Fall' => [
                [
                    'preg' => '/Pre-Fall ([0-9]*)/',
                    'trans' => '早秋',
                    'style' => 0,
                    'location' => 0,
                ],
            ],
        ];

        $res = $englishTitle;
        foreach ($map as $keyword => $pregMap) {
            if (stripos($englishTitle, $keyword) !== false) {
                foreach ($pregMap as $pregItem) {
                    preg_match_all($pregItem['preg'], $englishTitle, $matches);

                    if (count($matches) > 1 && $matches[1]) {
                        $res = trim(current($matches[1]) . " {$pregItem['trans']}");
                        break;
                    }
                }

                if ($res) {
                    break;
                }
            }
        }

        return $res;
    }
}