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

namespace Kufer\KuferTools\Utils\WssField;

class WssFieldTeilnehmerNewslInteressensgebiete extends WssFieldMultiselect
{
  protected function createNewValueDatamodulArray($kennzArray, $datamodul)
  {
    $interessensgebieteArray = array();
    $dbwNewslFb = new \DBWorkNewsletterFb();
    if (!isset($datamodul->id)) {
      $datamodul->id = -1;
      $intGebForTn = array();
    } else {
      $intGebForTn = $dbwNewslFb->getInteressensgebieteForNrUndTyp($datamodul->id, 'T');
    }
    foreach ($kennzArray as $kennz) {
      $newIntGeb = new \NewsletterFb();
      $newIntGeb->nr = $datamodul->id;
      $newIntGeb->typ = $datamodul->typ;
      $newIntGeb->kennz = $kennz;
      $newIntGeb->bearbeiter = \SessionOperations::getCurrentWebToolsUserKennung();
      $newIntGeb->bearbdatum = \DateTimeOperations::getDateNow();

      $newIntGeb = $this->setOriginalBearbdatumIfIntGebAlreadyExists($newIntGeb, $intGebForTn);
      $interessensgebieteArray[] = $newIntGeb;
    }

    return $interessensgebieteArray;
  }

  private function setOriginalBearbdatumIfIntGebAlreadyExists($newIntGebObj, $oldIntGebObj)
  {
    $interessnesGebieteByKennz = \ArrayOperations::setAttributAsKey($oldIntGebObj, 'kennz');
    if (isset($interessnesGebieteByKennz[$newIntGebObj->kennz])) {
      $newIntGebObj->bearbdatum = $interessnesGebieteByKennz[$newIntGebObj->kennz]->bearbdatum;
    }

    return $newIntGebObj;
  }

  protected function getDatamoduleForAvailableItems()
  {
    $dbwHlNewslInt = new \DBWorkHLNewsletterInteressensgebiete();

    return $dbwHlNewslInt->getNewsletterInteressensgebiete();
  }

  protected function getPrefix()
  {
    return 'teilnehmer';
  }

  protected function getTextFieldname()
  {
    return 'bezeichnung';
  }

  protected function getValueFieldname()
  {
    return 'kennz';
  }
}