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

namespace webtools\hmlisten;


class DruckHMSettings extends \webtools\drucklisten\DruckSheetSettings
{
  
  public $zusatzSpalten;

  
  public $ausfallEinstellungen;

  
  public $weitereEinstellungen;

  
  public function __construct()
  {
    parent::__construct();
    
    $this->einstellDarstellung = new \EinstellDarstellung();
    
    $this->zusatzSpalten = new \Zusatzspalten();
    $this->weitereEinstellungen = new \WeitereEinstellungen();
    $this->zeitbereich = new \webtools\drucklisten\Zeitbereich();
    $this->ausfallEinstellungen = new \AusfallEinstellungen();
  }

  
  public function loadFromPOST($pTnlist = '')
  {
    parent::loadFromPOST($pTnlist);
    
    $vars = get_object_vars($this->zusatzSpalten);
    foreach ($vars as $name => $wert) {
      if ($pTnlist->getZusatzspaltenEnabled($name)) {
        $this->zusatzSpalten->{$name} = \PostOperations::isDefined("zus_$name");
      }
    }
    if (\PostOperations::isDefined('nur_raumart')) {
      $this->weitereEinstellungen->nurRaumart = \PostOperations::getVarValue('nur_raumart') === 'on';
    }
    if (\PostOperations::isDefined('ohne_raumart')) {
      $this->weitereEinstellungen->ohneRaumart = \PostOperations::getVarValue('ohne_raumart') === 'on';
    }
    if (\PostOperations::isDefined('raumart')) {
      $this->weitereEinstellungen->raumart = \PostOperations::getVarValue('raumart');
    }
    $this->einstellDarstellung->option2 = \PostOperations::getVarValue('sperrzeit') === 'on';
    $this->einstellDarstellung->option3 = \PostOperations::getVarValue('neue_seite') === 'on';
    $this->einstellDarstellung->option1 = \PostOperations::getVarValue('kurzbez4Ort') === 'on';
    if (\PostOperations::isDefined('bemerkungen')) {
      $this->weitereEinstellungen->bemerkungen = \PostOperations::getVarValue('bemerkungen');
    }
    if (\PostOperations::isDefined('zeit_von')) {
      $this->zeitbereich->zeitvon = \PostOperations::getVarValue('zeit_von');
    }
    if (\PostOperations::isDefined('zeit_bis')) {
      $this->zeitbereich->zeitbis = \PostOperations::getVarValue('zeit_bis');
    }

    
    
    $this->ausfallEinstellungen->option1 = (\PostOperations::getVarValue('kurstag_ausfall') == \HMDruckliste::MIT_KURSTAG_AUSFALL);
    
    $this->ausfallEinstellungen->option2 = (\PostOperations::getVarValue('kurstag_ausfall') == \HMDruckliste::OHNE_KURSTAG_AUSFALL);
    
    $this->ausfallEinstellungen->option3 = (\PostOperations::getVarValue('kurstag_ausfall') == \HMDruckliste::NUR_KURSTAG_AUSFALL);
  }

  
  public function toDruckListSettings($pTyp)
  {
    $obj = parent::toDruckListSettings($pTyp);
    
    $vars = get_object_vars($this->zusatzSpalten);
    $zuswert = false;
    foreach ($vars as $name => $wert) {
      if ($wert) {
        $obj->setZusatzspalten($name);
        $zuswert = true;
      }
    }
    if (!$zuswert) {
      $obj->zusatzspalten = 0;
    }

    
    

    
    
    

    
    $obj->listsettings = ' ';
    
    $vars = get_object_vars($this->einstellDarstellung);
    $i = 0;
    foreach ($vars as $wert) {
      $obj->setEinstell($i, $wert);
      $i++;
    }

    
    $obj->ausfall = \HMDruckliste::MIT_KURSTAG_AUSFALL; 

    if (isset($this->ausfallEinstellungen->option2) && $this->ausfallEinstellungen->option2) {
      $obj->ausfall = \HMDruckliste::OHNE_KURSTAG_AUSFALL;
    } elseif (isset($this->ausfallEinstellungen->option3) && $this->ausfallEinstellungen->option3) {
      $obj->ausfall = \HMDruckliste::NUR_KURSTAG_AUSFALL;
    }

    return $obj;
  }

  
  public function fromDruckListSettings($settings)
  {
    parent::fromDruckListSettings($settings);

    
    $vars = isset($this->zusatzSpalten) ? get_object_vars($this->zusatzSpalten) : array();
    foreach ($vars as $name => $value) {
      $this->zusatzSpalten->{$name} = $settings->isZusatzspaltenSet($name);
    }


    
    $vars = isset($this->einstellDarstellung) ? get_object_vars($this->einstellDarstellung) : array();

    $i = 0;
    foreach ($vars as $name => $value) {
      $this->einstellDarstellung->{$name} = (bool)$settings->isEinstellSet($i);
      $i++;
    }

    
    if (!isset($this->ausfallEinstellungen)) {
      $this->ausfallEinstellungen = new \AusfallEinstellungen();
    }

    switch ($settings->ausfall) {
      case \HMDruckliste::MIT_KURSTAG_AUSFALL:
        $this->ausfallEinstellungen->option1 = true;
        break;
      case \HMDruckliste::OHNE_KURSTAG_AUSFALL:
        $this->ausfallEinstellungen->option2 = true;
        break;
      case \HMDruckliste::NUR_KURSTAG_AUSFALL:
        $this->ausfallEinstellungen->option3 = true;
        break;
    }
  }
}