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

class PageFaAnmeldungMitarbeiterBLAK extends PageFaAnmeldungMitarbeiter
{
  private $_dbwKennz;
  private $_kennzKursAry;
  private $_kennzKursAryFull;
  private $tnKennzInputCache;
  private $tnKennzCache;
  private $_blakKennzeichen;

  public function __construct($pTool, $pData)
  {
    parent::__construct($pTool, $pData);
    if (is_a($this->_data, 'Kurs')) {
      $this->_dbwKennz = new DBWorkKennz();
      $this->_kennzKursAry = array();
      $this->_kennzKursAryFull = $this->_dbwKennz->getKennzeichen4Kurs($this->_data->id);
      foreach ($this->_kennzKursAryFull as $kennz) {
        $this->_kennzKursAry[] = $kennz->kennz;
      }
    }
    $this->_blakKennzeichen = ConstantOperations::getBlakBerufsgruppenKennz();
  }

  protected function _getJSDeclaration4BLAK()
  {
    return JsOperations::getDeclarationBoolean('KuferTools.isBLAK', true);
  }

  protected function _getTnKennzInput($pTnr)
  {
    if (!is_array($this->tnKennzInputCache) || !isset($this->tnKennzInputCache[$pTnr])) {
      throw new Exception('Ungültiger Aufruf: _getTnKennzInput darf erst nach isAnmeldenOk aufgerufen werden!! TNR: ' . $pTnr);
    }

    return $this->tnKennzInputCache[$pTnr];
  }

  protected function _getTnKennz($pTnr)
  {
    if (!is_array($this->tnKennzCache) || !isset($this->tnKennzCache[$pTnr])) {
      throw new Exception('Ungültiger Aufruf: _getTnKennz darf erst nach isAnmeldenOk aufgerufen werden!! TNR: ' . $pTnr);
    }

    return $this->tnKennzCache[$pTnr];
  }

  protected function _getTnKennzNr($pTnr)
  {
    $kennzeichen = $this->_dbwKennz->getKennzShort4Teilnehmer($pTnr);
    foreach ($kennzeichen as $kennz) {
      if (in_array($kennz, $this->_blakKennzeichen) && in_array($kennz, $this->_kennzKursAry)) {
        return $kennz;
      }
    }

    return '';
  }

  protected function _isAnmeldenOk($pTnr, $pIndex)
  {
    $tnKennzAry = $this->_dbwKennz->getKennzeichen4Teilnehmer($pTnr);

    if (!is_array($this->tnKennzInputCache)) {
      $this->tnKennzInputCache = array();
    }

    if (!is_array($this->tnKennzCache)) {
      $this->tnKennzCache = array();
    }

    foreach ($tnKennzAry as $tnKennz) {
      if (isset($this->tnKennzCache[$pTnr])) {
        $this->tnKennzCache[$pTnr] .= ', ' . $tnKennz->text;
      } else {
        $this->tnKennzCache[$pTnr] = $tnKennz->text;
      }

      if (in_array($tnKennz->kennz, $this->_blakKennzeichen) && in_array($tnKennz->kennz, $this->_kennzKursAry)) {
        $this->tnKennzInputCache[$pTnr] = '<input type="hidden" id="famatkennz_' . CleanOperations::cleanStringForHtml($pIndex) . '" value="' . CleanOperations::cleanStringForHtml($tnKennz->kennz) . '">';

        return true;
      }
    }
    if (!isset($this->tnKennzCache[$pTnr])) {
      $this->tnKennzCache[$pTnr] = '';
    }

    $this->tnKennzInputCache[$pTnr] = '';

    return false;
  }

  protected function _getBerufsgruppenHeaderPart()
  {
    $result = '<div  class="fa_mitarbeitereingabe_head_left">';
    $result .= '<div class="floatleft">';
    $result .= 'zugelassene Berufsgruppen:';
    $result .= '</div>';
    $result .= '<div class="berufsgruppenHead">';
    if (count($this->_kennzKursAryFull) === 0) {
      $result .= 'keine Gruppe hinterlegt';
    } else {
      foreach ($this->_kennzKursAryFull as $kennz) {
        $result .= CleanOperations::cleanStringForHtml($kennz->text) . ', ';
      }
      $result = StringOperations::substr($result, 0, -2);
    }
    $result .= '</div>';
    $result .= '</div>';

    return $result;
  }

  
  protected function _getFreiPlaetzeHeaderPart($pFreiePlaetze)
  {
    return '';
  }

  protected function _getBezMitBerufsgruppen()
  {
    return ' mitBerufsgruppe';
  }

  
  protected function _getDivBerufsgruppe()
  {
    return '<div class="fa_ma_kennz stdZelle blak">Berufsgruppe</div>';
  }

  
  protected function _getDivGeschlecht()
  {
    return '<div class="fa_ma_geschlecht stdZelle blak">Geschlecht</div>';
  }

  
  protected function _getDivAnredetitel()
  {
    
    return '<div class="fa_ma_anredetitel stdZelle blak">Titel<br>(z.B. Dr.)</div>';
  }

  
  protected function getDivGebdatum()
  {
    return '<div class="fa_ma_gebdat stdZelle blak">Geburts<br>-datum</div>';
  }

  
  protected function _getJsKennzData()
  {
    $result = array();
    
    foreach ($this->_kennzKursAryFull as $kennz) {
      if (in_array($kennz->kennz, $this->_blakKennzeichen)) {
        $result[] = $kennz;
      }
    }

    return $result;
  }

  
  protected function _getJsGeschlechtData()
  {
    return ComboboxAPI::getGeschlechtAuswahl('W');
  }

  protected function _getKursData4Js($pGebuehr)
  {
    $result = parent::_getKursData4Js($pGebuehr);
    $result['isBlak'] = true;

    return $result;
  }
}