<?php

namespace App\Services;

class ThemeService
{
    protected $themes = [];
    protected $settings;

    public function __construct(SettingsService $settingsService)
    {
        $this->settings = $settingsService;
        $_themes        = glob(env('THEMES_PATH') . '/*', GLOB_ONLYDIR);
        foreach ($_themes as $theme) {
            array_push(
                $this->themes,
                json_decode(file_get_contents($theme . '/theme.json'), true)
            );
        }
    }

    public function getThemes()
    {
        return $this->themes;
    }

    public function getCustomViews($layout)
    {
        $views = [];
        if (str_contains($layout, 'index')) {
            $views = $this->findCustomIndex();
        } else {
            $views = $this->findCustomViews();
        }
        return $views;
    }

    public function findCustomIndex()
    {
        $currentTheme = $this->settings->getGlobal()['theme'];
        $folder       = '../content/themes/' . $currentTheme;
        $files        = array_filter(glob("$folder/*twig"), 'is_file');
        $views        = [];

        foreach ($files as $file) {
            $path     = explode('/', $file);
            $fileName = $path[4];
            if (str_contains($fileName, 'index')) {
                $page    = explode('.', $fileName);
                $views[] = $page[0];
            }
        }
        return $views;
    }

    public function findCustomViews()
    {
        $currentTheme = $this->settings->getGlobal()['theme'];
        $folder       = '../content/themes/' . $currentTheme;
        $files        = array_filter(glob("$folder/*twig"), 'is_file');
        $views        = [];

        foreach ($files as $file) {
            $path     = explode('/', $file);
            $fileName = $path[4];
            if (str_contains($fileName, 'page')) {
                $page    = explode('.', $fileName);
                $views[] = $page[0];
            }
        }
        return $views;
    }
}