<?php

namespace common\logic\Order\Order\Wrapper;

use common\logic\AbstractContainer;
use common\logic\Order\Order\Model\Order;
use common\logic\Order\Order\Repository\OrderRepository;
use common\logic\Order\Order\Service\OrderBuilder;
use common\logic\Order\Order\Service\OrderSolver;
use common\logic\Order\Order\Service\OrderUtils;

class OrderContainer extends AbstractContainer
{
    public function getEntityFqcn(): string
    {
        return Order::class;
    }

    public function getServices(): array
    {
        return [
            OrderSolver::class,
            OrderRepository::class,
            OrderBuilder::class,
            OrderUtils::class
        ];
    }

    public function getSolver(): OrderSolver
    {
        return OrderSolver::getInstance();
    }

    public function getRepository(): OrderRepository
    {
        return OrderRepository::getInstance();
    }

    public function getBuilder(): OrderBuilder
    {
        return OrderBuilder::getInstance();
    }

    public function getUtils(): OrderUtils
    {
        return OrderUtils::getInstance();
    }
}