<?php

namespace Lc\SovBundle\Container\Ticket;

use Lc\SovBundle\Builder\Ticket\TicketBuilder;
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;

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

    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;
    }
}