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

 

class PageDozKursBearbeiten extends PageBaseWT
{
  
  private $_data;

  public function __construct($pTool, $pData)
  {
    $sprachSettings = new SprachSettingsObject();
    parent::__construct($sprachSettings->Kurs['Singular']['Nominativ'] . 'details bearbeiten', 11, $pTool);
    $this->_data = $pData;
  }

  
  public function getContentHeader()
  {
    $sprachSettings = new SprachSettingsObject();

    return $sprachSettings->Kurs['Singular']['Nominativ'] . ' ' . $this->_data->id . ': ' . $this->_data->kurzbez;
  }

  
  public function getContent()
  {
    $result = '';


    $builder = new SightBuilder($this->tool->getToolId(), $this->id, $this->_data);

    
    if (RequestOperations::getMethod() == 'post') {
      $builder->saveData();
      if ($builder->checkValidation()) {
        $result .= $this->_saveKursdetails($builder);
      }

      
      
      $dbwKurse = new DBWorkKurse(1, true);
      $this->_data = $dbwKurse->getKurs($this->_data->id, true);
      $builder->setData($this->_data);
    }
    $builder->linksForFormRechts .= HTMLOperations::CreateBackButton(ToolsAPI::getLastHistoryEntry(), 'kursplanung_backbutton');

    $result .= $builder->buildSight();

    return $result;
  }

  
  private function _saveKursdetails($builder)
  {
    $result = '';

    $kurs = $builder->getData();

    $dbwork = new DBWorkKurse();
    $origKurs = $dbwork->getKurs($kurs->id, true);

    
    $changedFields = $builder->getFieldNamesOfChangedFields($origKurs);

    try {
      if (SessionOperations::isReplikat()) {
        $korrekturAPI = new KurskorrekturAPI();
        $korrekturAPI->correctKurs($kurs, $changedFields);
      }

      $dbwork->updateKurs($kurs);

      if (count($changedFields) != 0) {
        $result .= HTMLOperations::getSuccessBox('<div class="successbox_text">Ihre Korrektur für den Kurs wurde übermittelt.' . BR_WT . 'Vielen Dank!</div>', 'Übermittlung erfolgreich', 'in_background');
      } else {
        $result .= HTMLOperations::getInfoBox('<div class="infobox_text">Es wurden keine Änderungen vorgenommen!</div>', 'Hinweis', 'in_background');
      }
    } catch (Exception $e) {
      $allgsettings = AllgSettingsAPI::getAllgSettings();
      Logger::logg('Kurskorrektur - folgende Exception ist aufgetreten: ' . $e->getMessage() . ' [' . $e->getTraceAsString() . ']', 200);
      $result .= HTMLOperations::getAlertBox('<div class="alertbox_text">Beim Abgleich ist ein interner Fehler aufgetreten.' . BR_WT
        . 'Bitte versuchen Sie es später erneut, oder wenden Sie sich an die Verantwortlichen (s. '
        . '<a href=' . CleanOperations::cleanStringForHtml($allgsettings->impressum) . '>Impressum</a>)</div>', 'Fehler', 'in_background');
    }

    return $result;
  }
}