<?php

namespace App\Http\Controllers;

use App\Http\Resources\AreaResource;
use Illuminate\Support\Facades\Cache;
use App\Seo;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;

class SeoController extends Controller
{
    public function index(Request $request)
    {
        $params = $request->all();
        $uri = Arr::get($params, 'uri', '/');
        if (strpos($uri, "/profile/") !== false) {
            $uri = str_replace("/profile/", "", $uri);
            $uri = "/" . $uri;
        }
        $uri = str_replace("//", "/", $uri);
        $uri = str_replace("/?", "?", $uri);
        $uri = str_replace("?&", "?", $uri);
        $uri = str_replace("&&", "&", $uri);
        $uri = preg_replace('/(?:&|(\?))page=[^&]*(?(1)&|)?/i', "$1", $uri);

        $cacheName = 'seo_index_' . str_replace("/", "_", $uri);
        $cacheName = str_replace("__", "_", trim($cacheName));
        $cacheName = strip_tags($cacheName);

        $result = Cache::remember($cacheName, (7*24*60*60), function () use ($uri) {
            $seoMeta = Seo::select('title', 'keywords', 'description', 'image')->where('uri', $uri)->first();
            $data = ['title' => config('settings.site_name'), 'keywords' => '', 'description' => '', 'image' => url('favicon-16x16.png')];
            if(isset($seoMeta) && $seoMeta->title != null) {
                $data['title'] = ($seoMeta->title != null) ? $seoMeta->title : "";
                $data['keywords'] = ($seoMeta->keywords != null) ? $seoMeta->keywords : "";
                $data['description'] = ($seoMeta->description != null) ? $seoMeta->description : "";
                $data['image'] = url("files/" . $seoMeta->image);
            }
            return ['items' => $data, 'lastModify' => (gmdate('D, d M Y H:i:s') . ' GMT')];
        });

        return response()->json(['data' => $result['items']], 200)->header('Last-Modified', $result['lastModify']);
    }
}
