<?php

namespace Lc\SovBundle\Container\Ticket;

use App\Entity\Ticket\Ticket;
use Lc\SovBundle\Builder\Ticket\TicketBuilder;
use Lc\SovBundle\Definition\Field\Ticket\TicketFieldDefinition;
use Lc\SovBundle\Factory\Ticket\TicketFactory;
use Lc\SovBundle\Repository\Ticket\TicketRepositoryQuery;
use Lc\SovBundle\Repository\Ticket\TicketStore;
use Lc\SovBundle\Solver\Ticket\TicketSolver;

class TicketContainer
{
    protected TicketFactory $factory;
    protected TicketBuilder $builder;
    protected TicketRepositoryQuery $repositoryQuery;
    protected TicketStore $store;
    protected TicketSolver $solver;
    protected TicketFieldDefinition $fieldDefinition;

    public function __construct(
            TicketFactory $factory,
            TicketBuilder $builder,
            TicketRepositoryQuery $repositoryQuery,
            TicketStore $store,
            TicketSolver $solver,
            TicketFieldDefinition $fieldDefinition
    ) {
        $this->factory = $factory;
        $this->builder = $builder;
        $this->repositoryQuery = $repositoryQuery;
        $this->store = $store;
        $this->solver = $solver;
        $this->fieldDefinition = $fieldDefinition;
    }


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

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

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

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

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

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

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