<?php

namespace Lc\CaracoleBundle\Container\Reduction;

use Lc\CaracoleBundle\Definition\Field\Reduction\ReductionCatalogFieldDefinition;
use Lc\CaracoleBundle\Factory\Reduction\ReductionCatalogFactory;
use Lc\CaracoleBundle\Repository\Reduction\ReductionCatalogRepositoryQuery;
use Lc\CaracoleBundle\Repository\Reduction\ReductionCatalogStore;

class ReductionCatalogContainer
{
    protected ReductionCatalogFactory $factory;
    protected ReductionCatalogRepositoryQuery $repositoryQuery;
    protected ReductionCatalogStore $store;
    protected ReductionCatalogFieldDefinition $fieldDefinition;

    public function __construct(
            ReductionCatalogFactory $factory,
            ReductionCatalogRepositoryQuery $repositoryQuery,
            ReductionCatalogStore $store,
            ReductionCatalogFieldDefinition $fieldDefinition
    ) {
        $this->factory = $factory;
        $this->repositoryQuery = $repositoryQuery;
        $this->store = $store;
        $this->fieldDefinition = $fieldDefinition;
    }

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

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

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

        return $this->store;
    }

    public function getFieldDefinition(): ReductionCatalogFieldDefinition
    {
        return $this->fieldDefinition;
    }

}