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

namespace Kufer\KuferTools\Oeffentlich\LoginAnfordern\LoginAnfordernFormular;

class LoginAnfordernFormularUseCase extends \Kufer\KuferTools\Basis\UseCase\UseCase
{
  
  protected $toolSettings;

  
  protected $allowedUserGroups;

  public function __construct($request, $pToolSettings, $response = null)
  {
    parent::__construct($request, $response ?? new LoginAnfordernFormularResponse());
    $this->toolSettings = $pToolSettings;
    $this->allowedUserGroups = \Kufer\KuferTools\Utils\LoginAnfordern\LoginAnfordernUtils::getBenutergruppenDatamodules(\AllgSettingsAPI::getAllgSettings());
  }

  public function hasAccess($pToolSectionId = null)
  {
    if (isset($this->toolSettings->dozAutoLogin) && $this->toolSettings->dozAutoLogin) {
      return false;
    }
    if (isset($this->toolSettings->tnAutoLogin) && $this->toolSettings->tnAutoLogin) {
      return false;
    }

    if (empty($this->allowedUserGroups)) {
      \Logger::logg('Debug: Keine Benutzergruppe zu Ihren Tools für manuelles Login-Anfordern freigeschaltet. '
        . 'Überprüfen Sie die Einstellungen im Webadmin und/oder freigeschaltete Tools/Benutzergruppen.', 40);

      return false;
    }

    return true;
  }

  public function action()
  {
    $this->setzeMenupunkte();
    $this->setVal2Session();

    $this->response->hinweis = $this->toolSettings->hint4Login;
    $this->response->showTelefonnummer = $this->toolSettings->telefonnummerBeiLoginAnforderung;
    $this->response->benutzergruppen = $this->allowedUserGroups;
    $this->response->benutzergruppenCount = count($this->response->benutzergruppen);

    if ($this->toolSettings->SSLLogin) {
      $this->response->https = \ConstantOperations::getHTTPSPath4Url(LOGIN);
    }
    $this->response->showDseZustimmung = $this->toolSettings->dseZustimmung4Login;
    $this->response->dseZustimmungLink = $this->toolSettings->dseZustimmungLink4Login;
    $this->response->dseZustimmungChecked = false;

    $this->response->adresseMandatory = $this->toolSettings->needAdress4Login;

    if ($this->toolSettings->freiesPflichtfeldZustimmung4Login) {
      $this->response->freiesPflichtfeld = true;
      $this->response->textFreiesPflichtfeld = $this->toolSettings->freiesPflichtfeldZustimmungText4Login;
    } else {
      $this->response->freiesPflichtfeld = false;
      $this->response->textFreiesPflichtfeld = '';
    }

    return $this->response;
  }

  private function setzeMenupunkte()
  {
    $menuBar = new \MenuBar();
    $menuBar->setMenuBarFromSettings(array(), 'LOGIN', null, true, true);
    $menuPunkte = $menuBar->getMenuPunkte();

    $zumLoginMenuPunkt = new \Kufer\Menu\MenuPunkt\MenuPunkt4LoginSeite();
    array_unshift($menuPunkte, $zumLoginMenuPunkt);

    $this->response->menuPunkte = $menuPunkte;
  }

  protected function setVal2Session()
  {
    \SessionOperations::setVarValueWTIntern('loginErfolgreichAngefordert', false);
  }
}

class LoginAnfordernFormularRequest
{
}

class LoginAnfordernFormularResponse extends \Kufer\KuferTools\Basis\UseCase\BasisResponse
{
  public $menuPunkte;
  public $hinweis;
  public $showTelefonnummer;
  public $https;
  public $showDseZustimmung;
  public $dseZustimmungLink;
  public $dseZustimmungChecked;
  public $benutzergruppen;
  public $adresseMandatory;

  public $freiesPflichtfeld;
  public $textFreiesPflichtfeld;
}