Your IP : 216.73.216.79


Current Path : /var/www/html/dynaweb-starter/plugin/dynaweb-site/src/Http/Livewire/
Upload File :
Current File : /var/www/html/dynaweb-starter/plugin/dynaweb-site/src/Http/Livewire/Frontend.php

<?php

namespace Dynaweb\DynawebSite\Http\Livewire;

use Livewire\Component;
use Dynaweb\DynawebSite\Classes\{GenerateComponent};
use Dynaweb\DynawebSite\Classes\PortalsHandler;
use Dynaweb\DynawebSite\Repositories\{FrontendSiteRepository, FrontendPageRepository, FrontendPageComponentRepository};
use Dynaweb\DynawebSite\Models\{FrontendSite, FrontendPage, FrontendPageComponent};
use Illuminate\Http\Response;

class Frontend extends Component
{

    public function handle()
    {
        $portal = PortalsHandler::getInstance()
                    ->siteRepository(new FrontendSiteRepository(new FrontendSite()))
                    ->pageRepository(new FrontendPageRepository(new FrontendPage()))
                    ->pageComponentRepository(new FrontendPageComponentRepository(new FrontendPageComponent()))
                    ->setSiteSlug($this->siteSlug())
                    ->setPageSlug($this->pageSlug())
                    ->handle();

        return $portal;

    }

    private function siteSlug(): ?String
    {
        return request()->segment(1);
    }

    private function pageSlug(): ?String
    {
        return request()->route('page');
    }

    public function render()
    {
        try {

            // handle portal
            $handle = $this->handle();

            return view('dynaweb-site::livewire.frontend')
                    ->layout($handle->exportSiteLayout(), $handle->exportComponent());
            // ->layout('dynaweb-site::components.layouts.app', $handle->exportComponent());
            ;

        } catch (\Throwable $t) {
            
            // return abort(404);

            // return '<pre>Error Ocurred!!</pre>';
            return view('dynaweb-site::livewire.error', ['t' => $t])
                    ->layout('dynaweb-site::components.layouts.app');
        }
    }
}