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

namespace Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\FeedbackBogen;

class FeedbackBogenPresenter extends \Kufer\KuferTools\Basis\Presenter\MitRahmenPresenter
{
  public function present()
  {
    $rahmenView = $this->getRahmenView();
    $result = $rahmenView->getHeader();
    $result .= $this->getMenuLeiste();


    
    if (!$this->useCaseResponse->feedbackBogenError) {

      
      
      
      switch ($this->useCaseResponse->advanceState) {
        case 'fragenHandle':
          $feedbackView = $this->getView();
          $result .= $feedbackView->getHeader();

          $result .= $this->getAnderenContentAlsBody($this->useCaseResponse->anzeigeTextAry, $this->useCaseResponse->isInline);
          $result .= $feedbackView->getFooter();
          
          break;
        case 'fragenEnde':
        case 'fragenStart':
          $viewModel = new VorspannNachspannViewModel();
          
          $this->setBlaetternLinksInViewModel($viewModel);
          $viewModel->nachspann = $this->useCaseResponse->nachspann;
          $viewModel->vorspann = $this->useCaseResponse->vorspann;
          $view = new VorspannNachspannView($viewModel);
          if ($this->useCaseResponse->advanceState === 'fragenStart') {
            
            $result .= $view->getHeader();
          } else { 
            $result .= $view->getFooter();
          }
          break;

        case 'keineFragen':
        case 'fragenErfasst':
          $viewModel = new VorspannNachspannViewModel();
          $this->setBlaetternLinksInViewModel($viewModel);
          $viewModel->nachspann = $this->useCaseResponse->nachspann; 
          $viewModel->vorspann = $this->useCaseResponse->vorspann;

          $view = new VorspannNachspannView($viewModel);
          if ($this->useCaseResponse->advanceState == 'fragenErfasst') {
            $result .= $view->getNoData();
          } else {
            $result .= $view->getNoColumn();
          }
      } 
    } 
    
    else {
      $feedbackView = $this->getView();
      $result .= $feedbackView->getNoData();
    }
    $result .= $rahmenView->getFooter();

    return $result;
  }

  

  
  protected function getAnderenContentAlsBody($pAnzeigeTexteAry, $pIsInline = true)
  {
    switch ($this->useCaseResponse->ausgabeTyp) {
      case 'radio':
        $viewModel = new RadioAnzeigeViewModel();
        $viewModel->itemsInline = $pIsInline;
        $viewModel->anzeigeTexteAry = $pAnzeigeTexteAry;
        $view = new RadioAnzeigeView($viewModel);
        break;
      case 'checkbox':
        $viewModel = new CheckBoxAnzeigeViewModel();
        $viewModel->itemsInline = $pIsInline;
        $viewModel->anzeigeTexteAry = $pAnzeigeTexteAry;
        $view = new CheckBoxAnzeigeView($viewModel);
        break;
      default:
      case 'textinput':
        $viewModel = new InputAnzeigeViewModel();
        $view = new InputAnzeigeView($viewModel);
        break;
    }

    return $view->show();
  }

  
  protected function getBodyContent($pAnzeigeText, $pKey, &$pView, &$pViewModel)
  {
    $pViewModel->radio_key = $pKey; 
    $pViewModel->anzeigeWert = $pAnzeigeText->anzeigeWert; 
    $pViewModel->anzeigeText = $pAnzeigeText->anzeigeText; 
    $pViewModel->anzeigeChecked = $pAnzeigeText->anzeigeChecked;
    $pViewModel->inputText = $pAnzeigeText->inputText;

    $pView->__construct($pViewModel);

    return $pView->getBody();
  }

  protected function getView()
  {
    return new FeedbackBogenView($this->getViewModel());
  }

  protected function getViewModel()
  {
    $viewModel = new FeedbackBogenViewModel();
    $viewModel->kursId = $this->useCaseResponse->kurs->id;
    $viewModel->kursbez = $this->useCaseResponse->kurs->kurzbez;

    
    

    $viewModel->toolId = $this->useCaseResponse->toolId;

    
    
    if (!$this->useCaseResponse->feedbackBogenError) {
      
      
      $viewModel->advanceState = $this->useCaseResponse->advanceState;

      $viewModel->frageBezeichnung = $this->useCaseResponse->aktfrage->bezeichnung;
      
      $viewModel->fragenAnzeigeText = $this->useCaseResponse->aktfrage->anzeigetext;
      $viewModel->bogenAnzeigeText = $this->useCaseResponse->bogenAnzeigeText;

      
      $viewModel->bemerkungsTextAnzeigen = $this->useCaseResponse->aktfrage->warumanzeigen == 'W';
      $viewModel->bemerkungsZeilen = $this->useCaseResponse->aktfrage->warumzeilen;
      
      $viewModel->bemerkungsLabelText = $this->useCaseResponse->aktfrage->warumtext;
      
      $viewModel->bemerkungsAntwort = $this->useCaseResponse->bemerkungsAntwort;


      
      
      $viewModel->inputAntwortWert = $this->useCaseResponse->inputAntwortWert;

      
      $this->setBlaetternLinksInViewModel($viewModel);
    }
    
    else {
      
      $viewModel->backToStartLink = $this->useCaseResponse->backToStartLink;
    }

    return $viewModel;
  }

  

  protected function setBlaetternLinksInViewModel($pViewModel)
  {
    $pViewModel->backwardLink = $this->useCaseResponse->backwardLink;
    $pViewModel->forwardLink = $this->useCaseResponse->forwardLink;

    $pViewModel->frageNrForward = $this->useCaseResponse->frageNrForward;
    $pViewModel->frageNrBackward = $this->useCaseResponse->frageNrBackward;

    $pViewModel->aktuelleSeite = $this->useCaseResponse->aktuelleSeite;
    $pViewModel->anzahlSeiten = $this->useCaseResponse->anzahlSeiten;

    
    $pViewModel->backToStartLink = $this->useCaseResponse->backToStartLink;
  }
}