<?php

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

class BereichsrechteAPIDozent extends BereichsrechteAPI
{
  protected static function _getTyp()
  {
    return 'D';
  }

  protected static function _getBenRechtberName()
  {
    return 'rechtber_d';
  }

  protected static function _buildPartialBereichsrechtSQL($pBereichsrecht, $pPraefix, $pParser)
  {
    switch ($pBereichsrecht->feld) {
      case 'Fachbereich':
        return static::_getSqlFachBereichDoz($pBereichsrecht);
      case 'Fachbereiche von bis':
        return static::_getSqlFachBereichVonBisDoz($pBereichsrecht);
      case 'Kennzeichen':
        return static::_getSqlKennzeichen($pBereichsrecht);
      case 'Kennzeichen von bis':
        return static::_getSqlKennzeichenVonBis($pBereichsrecht);
      case 'Dozent 0':
        $pBereichsrecht->inhalt = 0;

        return static::_caseInsensitiveLike('nr', $pBereichsrecht, $pPraefix, $pParser);
      case 'Dienststelle':
        return static::_caseInsensitiveLike('dienstst', $pBereichsrecht, $pPraefix, $pParser);
      case 'Organisationseinheit':
        return static::_caseInsensitiveLike('orgaeinh', $pBereichsrecht, $pPraefix, $pParser);
      default:
        return ' (0=1) '; 
    }
  }

  private static function _getSqlFachBereichDoz($pBereichsrecht)
  {
    $dbwFachAdr = new DBWorkFachAdr(1, true);
    $fachAdr = $dbwFachAdr->findByKennz($pBereichsrecht->inhalt);

    $nrAry = ArrayOperations::mapAttribut($fachAdr, 'nr');

    return static::_getSqlTnrIn($nrAry);
  }

  private static function _getSqlFachBereichVonBisDoz($pBereichsrecht)
  {
    $dbwFachAdr = new DBWorkFachAdr(1, true);
    $fachAdr = $dbwFachAdr->findByKennzBereich(static::getStrPartFromTo($pBereichsrecht->inhalt, true), static::getStrPartFromTo($pBereichsrecht->inhalt, false));

    $nrAry = ArrayOperations::mapAttribut($fachAdr, 'nr');

    return static::_getSqlTnrIn($nrAry);
  }
}