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

namespace Kufer\KuferTools\Mitarbeiter\DozentenInfo\NewDozent\HandleDozentInsert;

class HandleDozentInsertUseCase extends \Kufer\KuferTools\Basis\DozentenInfo\NewDozent\HandleDozentInsert\HandleDozentInsertUseCase
{
  public static function getToolSectionId()
  {
    return 402;
  }

  public static function getToolId()
  {
    return \ToolsAPI::TOOL_DOZENTENINFO_MA;
  }

  public function hasAccess($pToolSectionId = null)
  {
    if (!parent::hasAccess(54)) {
      return false;
    }
    if (!$this->isRechtAllowed('54.0.2')) { 
      return false;
    }
    
    
    
    return true;
  }

  protected function transformColumnValues($actualColumnValues)
  {
    if (!isset($actualColumnValues['dozent']['dse_unterschrieben_weg'])) {
      $actualColumnValues['dozent']['dse_unterschrieben_weg'] = ''; 
    }
    if ($actualColumnValues['dozent']['dse_unterschrieben_weg'] === '') {
      $dbwhl = new \DBWorkHLGrundSys();
      $dseAutoSetzenHl = $dbwhl->getFeldWert('DS_Automatisch_Setzen_Doz_Neuanlage', 'F');
      
      
      if ($dseAutoSetzenHl == 'W' && $actualColumnValues['dozent']['dse_unterschrieben_datum'] != '') {
        $dseDozNeuanlageWeg = $dbwhl->getFeldWert('DS_Automatisch_Setzen_Doz_Neuanlage_Weg', '');
        $actualColumnValues['dozent']['dse_unterschrieben_weg'] = $dseDozNeuanlageWeg;
      }
    }

    return $actualColumnValues;
  }

  
  protected function preDozentenInsertHook($dozent, $changedFields)
  {
    list($dozent, $changedFields) = parent::preDozentenInsertHook($dozent, $changedFields);

    $kennung = $this->getMitarbeiterKennung();
    if (!empty($kennung)) {
      $dozent->erstelltvon = $kennung;
      $changedFields[] = 'erstelltvon';

      $dozent->erstelltdatum = \DateTimeOperations::getDateTimeNow();
      $changedFields[] = 'erstelltdatum';

      $dozent->bearbeiter = $kennung;
      $changedFields[] = 'bearbeiter';
    }

    return array($dozent, $changedFields);
  }

  private function getMitarbeiterKennung(): string
  {
    return \SessionOperations::getCurrentWebToolsMitarbeiterOrEmpty()->kennung;
  }
}