<?php

namespace Xentral\Modules\AmaInvoice;

use Xentral\Core\DependencyInjection\ContainerInterface;

use Xentral\Modules\AmaInvoice\Scheduler\AmaInvoiceTask;
use Xentral\Modules\AmaInvoice\Service\AmaInvoiceService;
use Xentral\Modules\SuperSearch\Wrapper\CompanyConfigWrapper;


final class Bootstrap
{
    /**
     * @return array
     */
    public static function registerServices()
    {
        return [
            'AmaInvoiceService' => 'onInitAmaInvoiceService',
            // Cronjob-Tasks
            'AmaInvoiceTask'   => 'onInitAmaInvoiceTask',
        ];
    }


    /**
     * @param ContainerInterface $container
     *
     * @return AmaInvoiceTask
     */
    public static function onInitAmaInvoiceTask(ContainerInterface $container)
    {
        return new AmaInvoiceTask(
            $container->get('AmaInvoiceService'),
            self::onInitCompanyConfigWrapper($container)
        );
    }

    /**
     * @param ContainerInterface $container
     *
     * @return AmaInvoiceService
     */
    public static function onInitAmaInvoiceService(ContainerInterface $container)
    {
        return new AmaInvoiceService(
            $container->get('Database'),
            $container->get('FilesystemFactory'),
            $container->get('LegacyApplication')
        );
    }


    /**
     * @param ContainerInterface $container
     *
     * @return CompanyConfigWrapper
     */
    private static function onInitCompanyConfigWrapper(ContainerInterface $container)
    {
        /** @var \ApplicationCore $app */
        $app = $container->get('LegacyApplication');

        return new CompanyConfigWrapper($app->erp);
    }
}