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

namespace Kufer\KuferTools\Oeffentlich\LoginAnfordern\Utils;

use Kufer\Web\Classes\Identifier\Identifier;

class NeuesLoginAnlegenDozenten extends NeuesLoginAnlegen
{
  protected function getDmzFeature()
  {
    return \AbgleichAPI::ABGLEICH_NEUES_DOZLOGIN;
  }

  protected function setWebuserFields($webUser, $personGuid, $personNr)
  {
    $webUser->dnr_guid = $personGuid;
    $webUser->dnr = $personNr;

    return $webUser;
  }

  protected function getTyp()
  {
    return 'D';
  }

  protected function getXml4Dmz($dozent, $webUser)
  {
    $dozXml = $dozent->ToXml(array(), true, array(), 'dozent');
    $webUserXml = $webUser->ToXml(array(), true, array(), 'web_user');
    $message = new \XMLNode('neues_doz_login');
    $message->addChild($dozXml);
    $message->addChild($webUserXml);

    return $message;
  }

  protected function getPersonObj($pGeschlecht, $pName, $pVorname, $pEmail, $pDseUnterschriebenDatum)
  {
    $dozent = new \Dozent();
    $dozent->setValue2Var('name', $pName);
    $dozent->setValue2Var('vorname', $pVorname);
    $dozent->setValue2Var('email', $pEmail);
    $dozent->setValue2Var('email_anzeige', $pEmail);
    $dozent->setValue2Var('geschlecht', $pGeschlecht);
    $dozent->setValue2Var('dse_unterschrieben_datum', $pDseUnterschriebenDatum);

    return $dozent;
  }

  protected function getPersonFromDb($guid)
  {
    $dbwDoz = new \DBWorkDozenten(1, true);

    return $dbwDoz->getPerson(Identifier::fromGuid($guid));
  }

  protected function insertPerson($person)
  {
    $dbwDoz = new \DBWorkDozenten(1, true);
    $person->id = $dbwDoz->insertDozent($person);

    try {
      \DozentenAPI::insertDmzMappingAnhandGuid($person);
    } catch (\Exception $e) {
      \Logger::logg("Neues Login anlegen per DMZ: Beim Einfügen des Mappings ist ein Fehler aufgetreten'", 200);
      $dbwDoz->deleteDozent($person->id);

      return null;
    }

    return $dbwDoz->getPerson($person->getIdentifier(), true);
  }

  protected function getwebToolsStdTempl()
  {
    $dbwWebToolsStdTempl = new \DBWorkWebToolsStdTempl(1, true);

    return $dbwWebToolsStdTempl->get4Doz();
  }
}