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

namespace Kufer\KuferTools\Utils\LoginAnfordern;

class LoginAnfordernUtils
{
  private function __construct()
  {
  }

  
  public static function getBenutergruppenDatamodules($toolSettings, $selected = null): array
  {
    $selected = $selected ?? '';

    return array_map(function(string $kurzbez) use ($selected) {
      $dm = new class() extends \Datamodul {
        public $kurz;
        public $lang;
        public $selected;
      };

      $dm->kurz = $kurzbez;
      $dm->lang = \ToolsAPI::getBezeichnungSingularForKurzBez($kurzbez);
      $dm->selected = $selected === $kurzbez ? 'selected' : '';

      return $dm;
    }, \Kufer\KuferTools\Utils\LoginAnfordern\LoginAnfordernUtils::getKurzbezManuellBenutzergruppe($toolSettings));
  }

  
  public static function getKurzbezManuellBenutzergruppe($toolSettings): array
  {
    return array_values(array_intersect(self::getErlaubteBenutzergruppenFromTools(), self::getErlaubteBenutzergruppenFromSettings($toolSettings)));
  }

  
  private static function getErlaubteBenutzergruppenFromSettings($toolSettings): array
  {
    $allBenutzergruppeKurz = self::getAlleBenutzergruppeKurz();
    $notAllowedAtDefault = array();
    $settingsAllowed = array_merge(explode(',', $toolSettings->blockLoginAnf), $notAllowedAtDefault);
    
    return array_diff($allBenutzergruppeKurz, $settingsAllowed);
  }

  
  private static function getErlaubteBenutzergruppenFromTools(): array
  {
    $dbwTools = \DBWorkTools::getDefaultInstance();

    return $dbwTools->getBenGruppen4Tools();
  }

  
  private static function getAlleBenutzergruppeKurz(): array
  {
    return array(
      KURZ_FIRMA,
      KURZ_DOZENT,
      KURZ_FIRMA,
      KURZ_TEILNEHMER,
      KURZ_HAUSMEISTER,
      KURZ_MITARBEITER,
      KURZ_VERANSTALTER
    );
  }
}