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

declare(strict_types = 1);

namespace Kufer\Web\Classes\Mail\Sender\Settings\RecipientEinrichtung;


class EMailEinrichtungRecipientToolsKursplanungSettings extends EMailEinrichtungRecipientToolsMitarbeiterSettings
{
  
  protected $kursplanung;

  
  protected $cacheKurs;

  
  public function __construct(\Kursplanung $kursplanung)
  {
    parent::__construct(null);
    $this->kursplanung = $kursplanung;
  }

  
  public function getKursplanung(): \Kursplanung
  {
    return $this->kursplanung;
  }

  
  public function getCopiedFromKurs(): ?\Kurs
  {
    if (!\is_null($this->cacheKurs)) {
      return $this->cacheKurs;
    }

    $kursplanung = $this->getKursplanung();
    $dbwKurse = new \DBWorkKurse();
    $kursId = $kursplanung->kopiertVon;
    if ($kursId === '') {
      return null;
    }

    $this->cacheKurs = $dbwKurse->getKurs($kursId);

    return $this->cacheKurs;
  }

  public function getVerwaltendenMitarbeiter(): ?\BASysBenutzer
  {
    $kurs = $this->getCopiedFromKurs();
    if (\is_null($kurs)) {
      return null;
    }

    $maKennungVerw = $kurs->getVarValue('verwaltung_ma');
    if (!\is_null($this->cacheVerwaltendenMitarbeiter)
        || $maKennungVerw == '') {
      return $this->cacheVerwaltendenMitarbeiter;
    }

    $dbwMitarbeiter = new \DBWorkBASysUser();
    $this->cacheVerwaltendenMitarbeiter = $dbwMitarbeiter->getBASysUserByKennung($maKennungVerw);

    return $this->cacheVerwaltendenMitarbeiter;
  }

  public function getPlanendenMitarbeiter(): ?\BASysBenutzer
  {
    if (!\is_null($this->cachePlanendenMitarbeiter)) {
      return $this->cachePlanendenMitarbeiter;
    }

    $kursplanung = $this->getKursplanung();
    if ($kursplanung->ma_planend_id != '') {
      $dbwMitarbeiter = new \DBWorkBASysUser();
      $this->cachePlanendenMitarbeiter = $dbwMitarbeiter->getBASysUser($kursplanung->ma_planend_id);

      return $this->cachePlanendenMitarbeiter;
    }

    $kurs = $this->getCopiedFromKurs();
    if (\is_null($kurs)) {
      return null;
    }

    $maKennungPla = $kurs->getVarValue('hpm');
    if ($maKennungPla == '') {
      return null;
    }

    $dbwMitarbeiter = new \DBWorkBASysUser();
    $this->cachePlanendenMitarbeiter = $dbwMitarbeiter->getBASysUserByKennung($maKennungPla);

    return $this->cachePlanendenMitarbeiter;
  }

  public function getVerantwortendenMitarbeiter(): ?\BASysBenutzer
  {
    $kurs = $this->getCopiedFromKurs();
    if (\is_null($kurs)) {
      return null;
    }

    $maKennungVerantw = $kurs->getVarValue('verantwortung_ma');
    if (!\is_null($this->cacheVerantwortendenMitarbeiter)
      || $maKennungVerantw == '') {
      return $this->cacheVerantwortendenMitarbeiter;
    }

    $dbwMitarbeiter = new \DBWorkBASysUser();
    $this->cacheVerantwortendenMitarbeiter = $dbwMitarbeiter->getBASysUserByKennung($maKennungVerantw);

    return $this->cacheVerantwortendenMitarbeiter;
  }
}