<?php

namespace Lc\CaracoleBundle\Container\PointSale;

use Lc\CaracoleBundle\Definition\Field\PointSale\PointSaleFieldDefinition;
use Lc\CaracoleBundle\Factory\PointSale\PointSaleFactory;
use Lc\CaracoleBundle\Repository\PointSale\PointSaleRepositoryQuery;
use Lc\CaracoleBundle\Repository\PointSale\PointSaleStore;
use Lc\CaracoleBundle\Solver\PointSale\PointSaleSolver;

class PointSaleContainer
{
    protected PointSaleFactory $factory;
    protected PointSaleSolver $solver;
    protected PointSaleFieldDefinition $fieldDefinition;
    protected PointSaleRepositoryQuery $repositoryQuery;
    protected PointSaleStore $store;

    public function __construct(
            PointSaleFactory $factory,
            PointSaleSolver $solver,
            PointSaleFieldDefinition $fieldDefinition,
            PointSaleRepositoryQuery $repositoryQuery,
            PointSaleStore $store
    ) {
        $this->factory = $factory;
        $this->solver = $solver;
        $this->fieldDefinition = $fieldDefinition;
        $this->repositoryQuery = $repositoryQuery;
        $this->store = $store;
    }

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

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

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

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

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