<?php
/**
 * @copyright (c) Kufer Software GmbH, Oderstraße 7, D-84453 Mühldorf
 */

namespace Kufer\Web\KuferTools\Allgemein\PersoenlicheDaten\AenderePersoenlicheDaten;

class AenderePersoenlicheDatenController extends \Kufer\Web\KuferTools\Basis\Controller\ToolController
{
  protected function getUseCase(): \Kufer\Web\KuferTools\Basis\UseCase\UseCase
  {
    $useCaseName = $this->getUseCaseClass();

    return new $useCaseName(
      $this->getRequestObj()
    );
  }

  protected function getUseCaseClass(): string
  {
    $user = \SessionOperations::getCurrentWebToolsUser();

    if (\DBWorkBASysSettings::isInnsbruckStadt()) {
      if ($user->ben > 0) {
        return \Kufer\Web\KuferTools\Allgemein\PersoenlicheDaten\AenderePersoenlicheDaten\AenderePersoenlicheDatenMaUseCase::class;
      }
    }

    if ($user->dnr >= 0) {
      return \Kufer\Web\KuferTools\Allgemein\PersoenlicheDaten\AenderePersoenlicheDaten\AenderePersoenlicheDatenDozUseCase::class;
    } elseif ($user->anr > 0) {
      return \Kufer\Web\KuferTools\Allgemein\PersoenlicheDaten\AenderePersoenlicheDaten\AenderePersoenlicheDatenHmUseCase::class;
    }
    
    elseif ($user->tnr > 0) {
      return \Kufer\Web\KuferTools\Allgemein\PersoenlicheDaten\AenderePersoenlicheDaten\AenderePersoenlicheDatenTnUseCase::class;
    } elseif ($user->ben > 0) {
      return \Kufer\Web\KuferTools\Allgemein\PersoenlicheDaten\AenderePersoenlicheDaten\AenderePersoenlicheDatenMaUseCase::class;
    }

    return new \Exception('Dieser Fall sollte nicht erreicht werden');
  }

  protected function getRequestObj()
  {
    $useCaseName = $this->getUseCaseClass();
    $requestObj = new AenderePersoenlicheDatenRequest();
    $wssHandler = new \Kufer\Web\KuferTools\Utils\WssHandler($useCaseName::getToolId(), $useCaseName::getToolSectionId(), $useCaseName::getUser());
    $requestObj->columnValues = $wssHandler->getColumnValuesFromPost();
    $requestObj->wssHandler = $wssHandler;

    $requestObj->passwort = \FilterBasis::filterPasswort(\PostOperations::getVarValue('passwort'));
    $action = $this->getActionVal();

    return $this->handleXsrf($requestObj, $action);
  }

  protected function getControllerToForward($pUseCaseResponse)
  {
    return new \Kufer\Web\KuferTools\Allgemein\PersoenlicheDaten\PersoenlicheDaten\PersoenlicheDatenNachAbsendenController($pUseCaseResponse->statusCode, $pUseCaseResponse->person, $pUseCaseResponse->wrongFields, $pUseCaseResponse->passwort);
  }

  protected function getPresenter($pUseCaseResponse)
  {
    return null;
  }
}