<?php

namespace Lc\CaracoleBundle\Container\Order;

use App\Entity\Order\OrderProduct;
use Lc\CaracoleBundle\Builder\Order\OrderProductBuilder;
use Lc\CaracoleBundle\Factory\Order\OrderProductFactory;
use Lc\CaracoleBundle\Repository\Order\OrderProductRepositoryQuery;
use Lc\CaracoleBundle\Repository\Order\OrderProductStore;
use Lc\CaracoleBundle\Solver\Order\OrderProductSolver;

class OrderProductContainer
{
    protected OrderProductFactory $factory;
    protected OrderProductSolver $solver;
    protected OrderProductBuilder $builder;
    protected OrderProductRepositoryQuery $repositoryQuery;
    protected OrderProductStore $store;

    public function __construct(
            OrderProductFactory $factory,
            OrderProductSolver $solver,
            OrderProductBuilder $builder,
            OrderProductRepositoryQuery $repositoryQuery,
            OrderProductStore $store
    ) {
        $this->factory = $factory;
        $this->solver = $solver;
        $this->builder = $builder;
        $this->repositoryQuery = $repositoryQuery;
        $this->store = $store;
    }


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

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

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

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

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