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

namespace webtools\drucklisten;


class DruckGrafikSettings extends DruckSheetSettings
{
  public $wochentage;
  public $zeitbereich;
  public $kalenderwoche;
  public $zeitpunkte;

  public function __construct()
  {
    parent::__construct();
    
    $defaultWotagAry = array('Mo' => '', 'Di' => '', 'Mi' => '', 'Do' => '', 'Fr' => '', 'Sa' => '', 'So' => '');
    $this->wochentage = new \webtools\drucklisten\Wochentage($defaultWotagAry);
    $this->zeitbereich = new \webtools\drucklisten\Zeitbereich();
    $this->kalenderwoche = new \webtools\drucklisten\Kalenderwoche();
    $this->zeitpunkte = new \webtools\drucklisten\Zeitpunkte();
  }

  
  public function _getKalenderwochenSettings($pKwjahr, $pKwnr, $pKwmonat, $pAuswahl)
  {
    $this->kalenderwoche->_getKalenderwochenSettings($pKwjahr, $pKwnr, $pKwmonat, $pAuswahl);
  }

  
  public function _getZeitbereichSettings()
  {
    $zeitvon = '08:00';
    $zeitbis = '22:00';
    $zeitspanne = '01:00';
    $this->zeitbereich->_getZeitbereichSettings($zeitvon, $zeitbis, $zeitspanne);
  }

  
  public function _getZeitpunktSettings()
  {
    $zeit = array();
    $zeit[1] = '08:00';
    $zeit[2] = '09:00';
    $zeit[3] = '10:30';
    $zeit[4] = '12:00';
    $zeit[5] = '14:00';
    $zeit[6] = '15:30';
    $zeit[7] = '17:00';
    $zeit[8] = '19:00';
    $zeit[9] = '21:00';
    $zeit[10] = '23:00';
    $this->zeitpunkte->_getZeitpunktSettings($zeit);
  }

  
  public function getSelectedWeekdays()
  {
    $selwotagary = array();
    foreach ($this->wochentage as $tag => $tagval) {
      if ($tagval) {
        array_push($selwotagary, $tag);
      }
    }

    return $selwotagary;
  }

  
  public function loadFromReqObj($pPostSettings, $pGrafikZeitSettObj = null)
  {
    
    parent::loadFromReqObj($pPostSettings);
    
    
    try {
      
      
      if ($pGrafikZeitSettObj->useZeitBereich) {
        
        $this->zeitbereich->zeitvon = \DateTimeOperations::getValidTimeString($pPostSettings->zeitbereich->zeitvon, 'Zeitvon');
        $this->zeitbereich->zeitbis = \DateTimeOperations::getValidTimeString($pPostSettings->zeitbereich->zeitbis, 'Zeitbis');

        
        if ($pGrafikZeitSettObj->useZeitSpanne) {
          $this->zeitbereich->zeitspanne = \DateTimeOperations::getValidTimeString($pPostSettings->zeitbereich->zeitspanne, 'Zeitspanne');
        }

        if (strcmp($pPostSettings->zeitbereich->zeitvon, $pPostSettings->zeitbereich->zeitbis) >= 0) {
          $message = 'Ungültige Zeitangaben: Für den Zeitbereich ist der Wert für "Zeit von" größer gleich als der Wert für "Zeit bis". ';

          throw new \TimeCompareException($pPostSettings->zeitbereich->zeitvon, $pPostSettings->zeitbereich->zeitbis, $message);
        }


        
        $vars = get_object_vars($this->wochentage);
        foreach ($vars as $name => $wert) {
          
          $this->wochentage->{$name} = $pPostSettings->wochentage->{$name};
        }
        $selectedWeekdays = $pPostSettings->getSelectedWeekdays();
        
        if (count($selectedWeekdays) == 0) {
          
          throw new \Exception('Es wurde kein Wochentag ausgewählt.' . BR . ' Mindestens ein Wochentag muss selektiert werden.');
        }
      } 

      
      if ($pGrafikZeitSettObj->useWochenplan) {
        
        $this->kalenderwoche->kwjahr = $pPostSettings->kalenderwoche->kwjahr;
        $this->kalenderwoche->kwnr = $pPostSettings->kalenderwoche->kwnr;
        if ($pGrafikZeitSettObj->useZeitpunkte) {
          
          for ($i = 1;$i <= 10;$i++) {
            $this->zeitpunkte->zeitab[$i] = $pPostSettings->zeitpunkte->zeitab[$i];
          }

          if (count($this->zeitpunkte->zeitab) == 0) {
            throw new \Exception('Es wurde keine Zeitpunkte ausgewählt.' . BR . ' Zeitpunkte müssen selektiert werden.');
          }
        }
      } 

      
      if ($pGrafikZeitSettObj->useMonatsplan) {
        $this->kalenderwoche->kwjahr = $pPostSettings->kalenderwoche->kwjahr;
        $this->kalenderwoche->kwmonat = $pPostSettings->kalenderwoche->kwmonat;
        $this->kalenderwoche->kwnr = $pPostSettings->kalenderwoche->kwnr;
        $this->kalenderwoche->auswahl = $pPostSettings->kalenderwoche->auswahl;
      }
    } 
    catch (\Exception $ex) {
      
      throw $ex;
    }
  }

  

  
  public function loadFromPOST($pTnlist = '')
  {
    parent::loadFromPOST($pTnlist);

    
    $vars = get_object_vars($this->wochentage);
    foreach ($vars as $name => $wert) {
      
      $this->wochentage->{$name} = \PostOperations::isDefined("wotag_$name");
    }

    if (\PostOperations::isDefined('zeit_von')) {
      $this->zeitbereich->zeitvon = \PostOperations::getVarValue('zeit_von');
    }
    if (\PostOperations::isDefined('zeit_bis')) {
      $this->zeitbereich->zeitbis = \PostOperations::getVarValue('zeit_bis');
    }
    if (\PostOperations::isDefined('zeitspanne')) {
      $this->zeitbereich->zeitspanne = \PostOperations::getVarValue('zeitspanne');
    }
    if (\PostOperations::isDefined('kwjahr')) {
      $this->kalenderwoche->kwjahr = \PostOperations::getVarValue('kwjahr');
    }
    if (\PostOperations::isDefined('kwmonat')) {
      $this->kalenderwoche->kwmonat = \PostOperations::getVarValue('kwmonat');
    }
    if (\PostOperations::isDefined('kwnr')) {
      $this->kalenderwoche->kwnr = \PostOperations::getVarValue('kwnr');
    }
    
    
    if (\PostOperations::isDefined('auswahl')) {
      $this->kalenderwoche->auswahl = \PostOperations::getVarValue('auswahl');
    }
    
    for ($i = 1;$i <= 10;$i++) {
      
      $this->zeitpunkte->zeitab[$i] = \PostOperations::getVarValue('selectzeitab' . $i);
    }
  }

  
}