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

namespace Kufer\Web\KuferTools\Basis\Anmeldung\AnmeldeFormular;

use Kufer\Web\Classes\ExportAdapter\ExpAdditionalVariables;

abstract class AnmeldeFormularView extends \Kufer\Web\KuferTools\Basis\View\ViewSight
{
  protected function getHeaderDataModulArray()
  {
    $dm = new class() extends \Datamodul {
      public $msgSuccess;
      public $msgInfo;
      public $msgFehler;
      public $newTnMsgSuccess;
      public $newTnMsgInfo;
      public $newTnMsgFehler;
      public $anmeldungMoeglichStatus;
      public $emailBestaetigungDrucken;
      public $isEinzelveranstaltung;
      public $emailBestaetigungSenden;
    };

    $dm->msgSuccess = $this->viewModel->anmeldMsgSuccess;
    $dm->msgInfo = $this->viewModel->anmeldMsgInfo;
    $dm->msgFehler = $this->viewModel->anmeldMsgFehler;
    $dm->newTnMsgSuccess = $this->viewModel->newTnMsgSuccess;
    $dm->newTnMsgInfo = $this->viewModel->newTnMsgInfo;
    $dm->newTnMsgFehler = $this->viewModel->newTnMsgFehler;
    $dm->anmeldungMoeglichStatus = $this->viewModel->anmeldungMoeglichStatus;
    $dm->emailBestaetigungDrucken = $this->viewModel->emailBestaetigungDrucken;
    $dm->isEinzelveranstaltung = $this->viewModel->isEinzelveranstaltung;
    $dm->emailBestaetigungSenden = $this->viewModel->emailBestaetigungSenden;

    return array($dm);
  }

  protected function getBodyDataModulArray()
  {
    $this->viewModel->teilnehmer->formReadOnly = $this->viewModel->formReadOnly;
    $this->viewModel->teilnehmer->tnAngemeldet = $this->viewModel->tnAngemeldet;
    $this->viewModel->teilnehmer->hasSepaMandat = $this->viewModel->hasSepaMandat;
    $this->viewModel->teilnehmer->ermaessigung = $this->viewModel->ermaessigung;
    $this->viewModel->teilnehmer->tnGuthaben = $this->viewModel->tnGuthaben;
    $this->viewModel->teilnehmer->isEinzelveranstaltung = $this->viewModel->isEinzelveranstaltung;
    if (isset($this->viewModel->tnDetailsAllowed, $this->viewModel->detailsSeiteTnr)) {
      $this->viewModel->teilnehmer->tnDetailsAllowed = $this->viewModel->tnDetailsAllowed;
      $this->viewModel->teilnehmer->detailsSeiteTnr = $this->viewModel->detailsSeiteTnr;
    }

    return array($this->viewModel->teilnehmer);
  }

  protected function getBodyExportAdapter()
  {
    return new ExpAdditionalVariables(
      new \ExportTeilnehmer(),
      array(
        'allow_kinder_funktionen' => $this->viewModel->allowKinderFunktionen
      )
    );
  }

  protected function getFooterDataModulArray()
  {
    $this->viewModel->kurs->formReadOnly = $this->viewModel->formReadOnly;
    $this->viewModel->kurs->tnplaetze = $this->viewModel->tnplaetze;
    $this->viewModel->kurs->kursDetailsAllowed = $this->viewModel->kursDetailsAllowed;
    $this->viewModel->kurs->kursdetailsLink = $this->viewModel->kursdetailsLink;
    $this->viewModel->kurs->isKinderKurs50 = $this->viewModel->isKinderKurs50;
    $this->viewModel->kurs->isKindAnmAllowedForUebermittlungsart = $this->viewModel->isKindAnmAllowedForUebermittlungsart;

    return array($this->viewModel->kurs);
  }

  protected function getNoDataDataModulArray()
  {
    $dm = new \Datamodul();
    foreach (get_object_vars($this->viewModel) as $key => $value) {
      $dm->{$key} = $value;
    }

    return array($dm);
  }

  protected function getFooterExportAdapter()
  {
    return new ExpAdditionalVariables(
      new \ExportKurse(),
      array(
        'allow_kinder_funktionen' => $this->viewModel->allowKinderFunktionen,
        'formReadOnly' => $this->viewModel->formReadOnly,
        'tnplaetze' => $this->viewModel->tnplaetze,
        'kursDetailsAllowed' => $this->viewModel->kursDetailsAllowed,
        'kursdetailsLink' => $this->viewModel->kursdetailsLink,
        'isKinderKurs50' => $this->viewModel->isKinderKurs50,
        'isKindAnmAllowedForUebermittlungsart' => $this->viewModel->isKindAnmAllowedForUebermittlungsart,
        'normalAnmAllowed' => $this->viewModel->normalAnmAllowed,
        'elternKindAnmAllowed' => $this->viewModel->elternKindAnmAllowed,
        'kindAnmAllowed' => $this->viewModel->kindAnmAllowed,
        'mehrfachAnmAllowed' => $this->viewModel->mehrfachAnmAllowed,
        'faAnmAllowed' => $this->viewModel->faAnmAllowed,
        'anmeldungAllowed' => $this->viewModel->anmeldungAllowed,
      )
    );
  }
}

class AnmeldeFormularViewModel extends \Kufer\Web\KuferTools\Basis\View\BasisViewModel
{
  public $teilnehmer;
  public $kurs;
  public $zusaetzlicheAnmeldestatusErlaubt;
  public $anmeldMsgSuccess;
  public $anmeldMsgInfo;
  public $anmeldMsgFehler;
  public $newTnMsgSuccess;
  public $newTnMsgInfo;
  public $newTnMsgFehler;
  public $anmeldungMoeglichStatus;
  public $emailBestaetigungDrucken;
  public $formReadOnly;
  public $allowKinderFunktionen;
  public $tnAngemeldet;
  public $hasSepaMandat;
  public $ermaessigung;
  public $tnGuthaben;
  public $tnplaetze;
  public $isEinzelveranstaltung;
  public $emailBestaetigungSenden;
  public $anmeldeStatusA;
  public $statusASelected;
  public $statusWSelected;
  public $hlbemerkungTitle;
  public $hlbemerkungRows;
  public $anmForm;
  public $isKinderKurs50;
  public $isKindAnmAllowedForUebermittlungsart;
  public $formDisabled;
  public $anmeldeartOptions;
  public $anmeldeGebuehr;
  public $newsletterAllowed;
  public $eintrittAllowed;
  public $bemerkungAllowed;
  public $anmeldeartAllowed;
  public $belegungsStatusAllowed;
  public $zahlartAllowed;
  public $lastschriftChecked;
  public $UEchecked;
  public $anmeldeDetailsButton;
  public $abwZahlwegButton;
  public $nachlassButton;
  public $anmeldeartButton;
  public $kursDetailsAllowed;
  public $kursdetailsLink;
  public $tnDetailsAllowed;
  public $detailsSeiteTnr;

  public $normalAnmAllowed;
  public $elternKindAnmAllowed;
  public $kindAnmAllowed;
  public $mehrfachAnmAllowed;
  public $faAnmAllowed;

  public $anmeldungAllowed;
}