<?php
/**
 * @copyright (c) Kufer Software GmbH, Loisachstrasse 4, D-84453 Mühldorf
 */

namespace Kufer\KuferTools\Dozent\KursUebersicht\KursUebersicht\RechnungsStatus;

use Kufer\KuferTools\Basis\UseCase\BasisResponse;
use Kufer\KuferTools\Basis\UseCase\ToolUseCase;
use Kufer\KuferTools\Dozent\KursUebersicht\KursUebersicht\KursUebersichtUseCase;

class KursUebersichtRechnungsStatusUseCase extends ToolUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new KursUebersichtRechnungsStatusResponse());
  }

  public function hasAccess($pToolSectionId = null)
  {
    if (!parent::hasAccess($pToolSectionId)) {
      return false;
    }

    if (!\DBWorkBASysSettings::isMVHS()) {
      return false;
    }

    if (!is_array($this->request->knrAry) || empty($this->request->knrAry)) {
      return false;
    }

    if (!empty(array_diff($this->request->knrAry, $this->getKursHelper()->getIdsOhneFilter()))) {
      return false;
    }

    return true;
  }

  public static function getToolId()
  {
    return KursUebersichtUseCase::getToolId();
  }

  public static function getToolSectionId()
  {
    return KursUebersichtUseCase::getToolSectionId();
  }

  protected function getKursHelper()
  {
    return \Kufer\KuferTools\Utils\DatamodulHelper\KursHelper\KursHelperFactory::getKursHelperByToolID($this->getToolId(), $this->toolSettings);
  }

  public function action()
  {
    $dmzResp = array_map(
      static function($x) { return (int)$x; },
      KursUebersichtUseCase::getRechnungsOrVertragsStatus($this->request->knrAry, \AbgleichAPI::ABGLEICH_GET_KURS_RECHNUNGSSTATUS, $this->getUser())
    );
    $this->response->rechnungsstatus = $dmzResp;

    return $this->response;
  }
}

class KursUebersichtRechnungsStatusRequest
{
  public $knrAry;
}

class KursUebersichtRechnungsStatusResponse extends BasisResponse
{
  
  public $rechnungsstatus;
}