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

namespace Kufer\Web\KuferTools\Utils\WssField\KursPlanung;

class WssFieldKursplanungWerbemittel extends \Kufer\Web\KuferTools\Utils\WssField\WssField
{
  private function werbemittelNr()
  {
    $fieldnameOhneNummer = 'werbemittel_';

    return \StringOperations::substr($this->datamodulColumn->fieldname, \StringOperations::strlen($fieldnameOhneNummer));
  }

  protected function getValue($datamodulWert, $isFormular = false)
  {
    if (is_array($datamodulWert->werbemittel)) {
      $werbemittelNr = $this->werbemittelNr();
      $aktuellerWerbemittelKey = \ArrayOperations::find(function($werbemittel) use ($werbemittelNr) {
        return $werbemittel->werbemittelart == $werbemittelNr;
      }, $datamodulWert->werbemittel);
      if (!is_null($aktuellerWerbemittelKey)) {
        return $datamodulWert->werbemittel[$aktuellerWerbemittelKey]->menge;
      }
    }

    return '';
  }

  public function getChangedInfo($columnValues, $changedDm, $changedFields): array
  {
    $datamodul = $this->datamodulColumn->datamodul;
    $fieldname = $this->datamodulColumn->fieldname;
    if (isset($columnValues[$datamodul][$fieldname])) {
      $newData = $columnValues[$datamodul][$fieldname];
      if (!is_array($changedDm->werbemittel)) {
        $changedDm->werbemittel = array();
      } else {
        
        $werbemittelNr = $this->werbemittelNr();
        $changedDm->werbemittel = array_filter($changedDm->werbemittel, function($werbemittel) use ($werbemittelNr) {
          return $werbemittel->werbemittelart != $werbemittelNr;
        });
      }
      
      if (trim($newData) != '') { 
        $changedDm->werbemittel[] = $this->createWertemittel($newData);
      }
      $changedFields[] = 'werbemittel';
    }

    return array('changed' => $changedDm, 'changedFields' => $changedFields);
  }

  private function createWertemittel($menge)
  {
    $kursplanungWerbung = new \KursplanungWerbung();
    $kursplanungWerbung->menge = $menge;
    $kursplanungWerbung->werbemittelart = $this->werbemittelNr();
    
    return $kursplanungWerbung;
  }

  
}