<?php

namespace Lc\SovBundle\Container\Setting;

use App\Entity\Setting\SiteSetting;
use Lc\SovBundle\Definition\SiteSettingDefinition;
use Lc\SovBundle\Factory\Setting\SiteSettingFactory;
use Lc\SovBundle\Repository\Setting\SiteSettingRepositoryQuery;
use Lc\SovBundle\Repository\Setting\SiteSettingStore;
use Lc\SovBundle\Solver\Setting\SettingSolver;

class SiteSettingContainer
{
    protected SiteSettingFactory $factory;
    protected SiteSettingDefinition $definition;
    protected SiteSettingRepositoryQuery $repositoryQuery;
    protected SiteSettingStore $store;
    protected SettingSolver $settingSolver;

    public function __construct(
            SiteSettingFactory $factory,
            SiteSettingDefinition $definition,
            SiteSettingRepositoryQuery $repositoryQuery,
            SiteSettingStore $store,
            SettingSolver $settingSolver
    ) {
        $this->factory = $factory;
        $this->definition = $definition;
        $this->repositoryQuery = $repositoryQuery;
        $this->store = $store;
        $this->settingSolver = $settingSolver;
    }


    public static function getEntityFqcn()
    {
        return SiteSetting::class;
    }

    public function getFactory(): SiteSettingFactory
    {
        return $this->factory;
    }

    public function getDefinition(): SiteSettingDefinition
    {
        return $this->definition;
    }

    public function getRepositoryQuery(): SiteSettingRepositoryQuery
    {
        return $this->repositoryQuery;
    }

    public function getStore(): SiteSettingStore
    {
        return $this->store;
    }

    public function getSettingSolver(): SettingSolver
    {
        return $this->settingSolver;
    }
}
