<?php

// SPDX-FileCopyrightText: 2018 Icinga GmbH <https://icinga.com>
// SPDX-License-Identifier: GPL-3.0-or-later

namespace Icinga\Module\Businessprocess\Controllers;

use Icinga\Module\Businessprocess\IcingaDbObject;
use Icinga\Module\Icingadb\Model\Service;
use Icinga\Web\Url;
use ipl\Html\HtmlString;
use ipl\Stdlib\Filter;
use ipl\Web\Compat\CompatController;

class ServiceController extends CompatController
{
    public function showAction(): void
    {
        $hostName = $this->params->shift('host');
        $serviceName = $this->params->shift('service');

        $query = Service::on(IcingaDbObject::fetchDb());
        IcingaDbObject::applyIcingaDbRestrictions($query);

        $query->filter(Filter::all(
            Filter::equal('service.name', $serviceName),
            Filter::equal('host.name', $hostName)
        ));

        $service = $query->first();

        $this->params->add('name', $serviceName);
        $this->params->add('host.name', $hostName);

        if ($service !== null) {
            $this->redirectNow(Url::fromPath('icingadb/service')->setParams($this->params));
        } else {
            $this->getTabs()->disableLegacyExtensions();

            $this->view->host = $hostName;
            $this->view->service = $serviceName;
            $this->view->tabs = null; // compatController already creates tabs
            $this->addContent(HtmlString::create($this->view->render('ido-service/show.phtml')));
        }
    }
}
