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


namespace Kufer\KuferTools\Mitarbeiter\TeilnehmerInfo\UpdateTeilnehmer\HandleTeilnehmerUpdate;

class HandleTeilnehmerUpdateUseCase extends \Kufer\KuferTools\Basis\TeilnehmerInfo\UpdateTeilnehmer\HandleTeilnehmerUpdate\HandleTeilnehmerUpdateUseCase
{
  public static function getToolSectionId()
  {
    return 42;
  }

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

  public function hasAccess($pToolSectionId = null)
  {
    if (!parent::hasAccess($pToolSectionId)) {
      return false;
    }
    
    if (!$this->isRechtAllowed('411.0.1')) {
      return false;
    }
    
    if (!$this->request->isXsrfOk && !$this->request->isRefresh) {
      return false;
    }

    return true;
  }

  protected function preUpdateHook($teilnehmer, $changedFields)
  {
    list($teilnehmer, $changedFields) = parent::preUpdateHook($teilnehmer, $changedFields);
    $kennung = $this->getMitarbeiterKennung();
    if (!empty($kennung)) {
      $teilnehmer->bearbeiter = $kennung;
      $changedFields[] = 'bearbeiter';
    }

    return array($teilnehmer, $changedFields);
  }

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