<?php

namespace Lc\CaracoleBundle\Container\Section;

use App\Entity\Section\Section;
use Lc\CaracoleBundle\Factory\Section\SectionFactory;
use Lc\CaracoleBundle\Repository\Section\SectionRepositoryQuery;
use Lc\CaracoleBundle\Repository\Section\SectionStore;
use Lc\CaracoleBundle\Resolver\SectionResolver;
use Lc\CaracoleBundle\Solver\Section\SectionSolver;

class SectionContainer
{
    protected SectionFactory $factory;
    protected SectionSolver $solver;
    protected SectionResolver $resolver;
    protected SectionRepositoryQuery $repositoryQuery;
    protected SectionStore $store;

    public function __construct(
            SectionFactory $factory,
            SectionSolver $solver,
            SectionResolver $resolver,
            SectionRepositoryQuery $repositoryQuery,
            SectionStore $store
    ) {
        $this->factory = $factory;
        $this->solver = $solver;
        $this->resolver = $resolver;
        $this->repositoryQuery = $repositoryQuery;
        $this->store = $store;
    }


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

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

    public function getSolver(): SectionSolver
    {
        return $this->solver;
    }

    public function getResolver(): SectionResolver
    {
        return $this->resolver;
    }

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

    public function getStore(): SectionStore
    {
        $this->store->resetContext();

        return $this->store;
    }
}