<?php namespace App\Libs\Composers;

use App\Libs\Facades\RequestContext;
use Illuminate\Support\Facades\Auth;
use App\Libs\Facades\Localization;

trait ObjectDetailTrait
{
    protected function checkIsPublished($object, $isPreview = false)
    {
        if (empty($object)) {
            abort(404);
        }

        if ($object->status != 'published') {
            $user = Auth::guard('admin')->user();
            if (!$user && !$isPreview) {
                abort(404);
            }
        }
        $availableLanguages = Localization::getSupportedLanguages()->keyBy('id');

        if ($object->lang_status != 'published') {
            $user = Auth::guard('admin')->user();
            if (!$user && !$isPreview) {
                $translatedUris = [];
                foreach ($object->websites->findByWebsite(1)->languages as $objectWebsiteLang) {
                    if (!empty($availableLanguages[$objectWebsiteLang->wo_language_id]) && $objectWebsiteLang->lang_status == 'published') {
                        $translatedUris[$objectWebsiteLang->wo_language_id] = $objectWebsiteLang->lang_uri;
                    }
                }
                if (!empty($translatedUris)) {
                    RequestContext::set('is_missing_translation', true);
                    RequestContext::set('translated_uris', $translatedUris);
                }
                RequestContext::set('no_cache', true);
                abort(404);
            }
        }
    }

    protected function addBreadcrumb($object, $breadcrumbs = [])
    {
        $breadcrumbs[] = [
            'title' => $object->title,
            'uri' => $object->lang_uri,
        ];
        return $breadcrumbs;
    }
}

?>
