<?php

namespace Lc\CaracoleBundle\Container\Distribution;


use App\Entity\Distribution\Distribution;
use Lc\CaracoleBundle\Builder\Distribution\DistributionBuilder;
use Lc\CaracoleBundle\Factory\Distribution\DistributionFactory;
use Lc\CaracoleBundle\Repository\Distribution\DistributionRepositoryQuery;
use Lc\CaracoleBundle\Repository\Distribution\DistributionStore;
use Lc\CaracoleBundle\Solver\Distribution\DistributionSolver;

class DistributionContainer
{
    protected DistributionFactory $factory;
    protected DistributionRepositoryQuery $repositoryQuery;
    protected DistributionStore $store;
    protected DistributionBuilder $builder;
    protected DistributionSolver  $solver;

    public function __construct(
            DistributionFactory $factory,
            DistributionRepositoryQuery $repositoryQuery,
            DistributionStore $store,
            DistributionBuilder $builder,
            DistributionSolver  $solver
    ) {
        $this->factory = $factory;
        $this->repositoryQuery = $repositoryQuery;
        $this->store = $store;
        $this->solver = $solver;
        $this->builder = $builder;
    }


    public static function getEntityFqcn()
    {
        return Distribution::class;
    }
    public function getFactory(): DistributionFactory
    {
        return $this->factory;
    }

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

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

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

    public function getBuilder(): DistributionBuilder
    {
        return $this->builder;
    }

}