<?php
/**
 * 谷歌趋势api
 * @copyright 2021-浙江引擎力营销策划有限公司
 * @author Lc<sunshinecc1@163.com>
 * @since 2021-08-23
 */

namespace App\Http\Controllers\Wap\GoogleTrendsApi;

use App\Http\Controllers\Controller;
use Google\GTrends;
use Illuminate\Http\Request;

class GoogleTrendsApiController extends Controller
{
    public function getKeyWordResult(Request $request)
    {
        try {
            $gt = new GTrends([
                'hl' => 'zh-CN',
                'tz' => -480, # last hour
                'geo' => '',
            ]);

            $keyWold = $request->input('keyWold');
            if (empty($keyWold)) {
                return response()->json([
                    'status' => 500,
                    'message' => 'error',
                    'data' => [],
                ]);
            }
            $relatedInformation = $gt->getRelatedSearchQueries([$keyWold]);
            $relatedInformation = $relatedInformation[$keyWold]['default']['rankedList'][0]['rankedKeyword'] ?? [];
            if (!empty($relatedInformation)) {
                foreach ($relatedInformation as $key => $value) {
                    if ($key > 4) {
                        unset($relatedInformation[$key]);
                    }
                }
            }

            $cache['relatedInformation'] = $relatedInformation;

            $relatedTopic = $gt->getRelatedTopics($keyWold);
            $relatedTopic = $relatedTopic['default']['rankedList'][0]['rankedKeyword'] ?? [];
            if (!empty($relatedTopic)) {
                foreach ($relatedTopic as $key => $value) {
                    if ($key > 4) {
                        unset($relatedTopic[$key]);
                    }
                }
            }

            $cache['relatedTopic'] = $relatedTopic;

            $interestOverTime = $gt->interestOverTime($keyWold, 0, 'today 5-y') ?? [];
            $dateList = [];
            if (!empty($interestOverTime)) {
                foreach ($interestOverTime as $item) {
                    $dateList['date'][] = $item['formattedAxisTime'];
                    $dateList['value'][] = $item['value'][0];
                }
            }

            $cache['dateList'] = $dateList;

            $interestByCountry = $gt->interestByCountry([$keyWold], 0, 'today 5-y') ?? [];
            $countryList = [];
            if (!empty($interestByCountry)) {
                foreach ($interestByCountry[$keyWold] as $item) {
                    $countryList[] = [
                        'name' => $item['geoName'] ?? '',
                        'value' => $item['value'][0] ?? 0,
                    ];
                }
            }

            $cache['countryList'] = $countryList;
            return response()->json([
                'status' => 200,
                'message' => 'success',
                'data' => $cache,
            ]);

        } catch (\Exception $e) {
            return response()->json([
                'status' => 500,
                'message' => 'error',
                'data' => $e->getMessage(),
            ]);
        }
    }
}