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

namespace Kufer\Web\KuferTools\Utils\Anmeldung;

use Kufer\Web\Classes\Identifier\Identifier;
use Kufer\Web\Classes\Identifier\IdentifierFactory;

class AnmeldungGetKennzeichen
{
  
  public static function getKennzeichenNummern4Tn($pTnr)
  {
    $kennzeichen = static::getKennzeichen4Tn($pTnr);

    return \ArrayOperations::mapAttribut($kennzeichen, 'kennz');
  }

  
  public static function getKennzeichen4Tn($pTnr)
  {
    $pTnr = IdentifierFactory::createFromIdIfNecessary($pTnr);

    static $cache = array();
    $cacheKey = $pTnr->getCacheKey();
    if (is_null($result = $cache[$cacheKey] ?? null)) {
      $dbwKennzeichen = \DBWorkKennz::getDefaultInstance();
      $kennzTnAry = $dbwKennzeichen->getKennzeichen4Teilnehmer($pTnr);

      if (\DBWorkBASysSettings::isBlak()) {
        $blakKennzeichen = \ConstantOperations::getBlakBerufsgruppenKennz();

        $result = array();
        
        foreach ($kennzTnAry as $kennz) {
          if (in_array($kennz->kennz, $blakKennzeichen)) {
            $result[] = $kennz;
          }
        }
      } elseif (\DBWorkBASysSettings::isBadMergentheimFabi()) {
        $result = \ConstantOperations::filterBadMergenhteimBerufsgruppenKennz($kennzTnAry);
      } else {
        $result = $kennzTnAry;
      }

      $cache[$cacheKey] = $result;
    }

    return $result;
  }
}