<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use App\Seo;

/**
 * Class HomeController
 *
 * @package App\Http\Controllers
 */
class HomeController extends Controller
{
    public function index(Request $request)
    {
        $data = $this->detectSeoMeta($request->getRequestUri());

        return view('home', $data);
    }

    private function detectSeoMeta($uri)
    {
        $uri = urldecode($uri);
        $uri = $uri . "||";
        $uri = str_replace("/profile/", "", $uri);
        $uri = str_replace("//", "/", "/" . $uri);
        $uri = str_replace("/?", "?", $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 = env('APP_CACHE_PREFIX', 'app') . '_url_' . str_replace("/", "_", trim($uri));
        $seoMeta = Cache::remember($cacheName, env('APP_CACHE_TIME', 604800), function () use ($uri) {
            return Seo::where('uri', $uri)->first();
        });

        if (!isset($seoMeta) || $seoMeta->id == null) return ['title' => config('settings.site_name'), 'keywords' => '', 'description' => '', 'image' => url('favicon-16x16.png')];
        $imgSeo = ($seoMeta->image != "" && $seoMeta->image != null) ? $seoMeta->image : 'no-image.png';

        return [
            'title'       => $seoMeta->title,
            'keywords'    => $seoMeta->keywords,
            'description' => $seoMeta->description,
            'image'       => url("files/" . $imgSeo),
        ];
    }
}
