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

namespace Kufer\Web\KuferTools\Firma\BayerischerApothekertag\AnmeldeFormular;

class AnmeldeFormularPresenter extends \Kufer\Web\KuferTools\Basis\Presenter\MitRahmenPresenter
{
  protected function getView()
  {
    return new AnmeldeFormularView($this->getViewModel());
  }

  protected function getViewModel()
  {
    $viewModel = new AnmeldeFormularViewModel();
    $viewModel->teilnehmer = $this->useCaseResponse->teilnehmer;
    $viewModel->kurse = $this->useCaseResponse->kurse;

    $viewModel->gebuehr = $this->useCaseResponse->gebuehr;
    $viewModel->mitarbeiterSucheAllowed = $this->useCaseResponse->mitarbeiterSucheAllowed;
    $viewModel->jsData = $this->getJsData();

    return $viewModel;
  }

  private function getJsData()
  {
    $kursdata = (object)$this->useCaseResponse->kursdata4Js;
    $rechtdata = (object)array(
        'RechtMaSuche' => \StringOperations::htmlentities(($this->useCaseResponse->mitarbeiterSucheAllowed), ENT_QUOTES)
      );
    
    $result = '<script>'
            . '$("#firmenanmeldung_form").data("kurs", ' . \JsonOperations::encode($kursdata) . ')'
                 . '.data("recht",' . \JsonOperations::encode($rechtdata) . ');';
    $result .= "</script>\n";

    return $result;
  }

  protected function getContent()
  {
    $view = $this->getView();
    $html = $view->getHeader();
    $html .= $view->getBody(); 
    $html .= $view->getFooter(); 
    $html .= $view->getNoData();

    return $html;
  }

  protected function getJsFilesSrcAryWeitere(): array
  {
    $jsFiles = parent::getJsFilesSrcAryWeitere();
    $jsFiles[] = $this->getJsFileFromSys('anmelden.js');

    return $jsFiles;
  }

  public function getJSDeclarations(): string
  {
    $result = parent::getJSDeclarations();
    $teilnehmer = $this->useCaseResponse->teilnehmer;

    $result .= 'registerNamespace("KuferTools.UserInfo"); ';
    $tnrKonto = $teilnehmer->konto;
    $tnrIban = $teilnehmer->iban;
    if (!\SessionOperations::isReplikat()) {
      $tnrKonto = \SecurityOperations::anonymizeString($tnrKonto);
      $tnrIban = \SecurityOperations::anonymizeString($tnrIban);
    }
    $anmZf = $this->useCaseResponse->firmenToolSettings->anm_zahlverfahren;
    if ($anmZf == ANM_ZAHLVERFAHREN_SEPA_KTO || $anmZf == ANM_ZAHLVERFAHREN_NUR_KTO) {
      $result .= \JsOperations::getDeclarationString('KuferTools.UserInfo.CurrentUserKonto', \StringOperations::htmlentities($tnrKonto, ENT_QUOTES));
      $result .= \JsOperations::getDeclarationBoolean('KuferTools.UserInfo.UseKto', false);
    }
    if ($anmZf == ANM_ZAHLVERFAHREN_SEPA_KTO || $anmZf == ANM_ZAHLVERFAHREN_NUR_SEPA) {
      $result .= \JsOperations::getDeclarationString('KuferTools.UserInfo.CurrentUserIban', \StringOperations::htmlentities($tnrIban, ENT_QUOTES));
      $result .= \JsOperations::getDeclarationBoolean('KuferTools.UserInfo.UseSepa', true);
    }

    $result .= \JsOperations::getDeclarationBoolean('KuferTools.UserInfo.HasSepaMandat', $this->useCaseResponse->hasSepaMandat);

    $result .= \JsOperations::getDeclarationString('KuferTools.UserInfo.NewsletterErlaubt', $teilnehmer->newsl_erlaubt);

    
    $result .= \JsOperations::getDeclarationBoolean('KuferTools.NewsletterAnmeldung_erlaubt', $this->useCaseResponse->firmenToolSettings->newsletterAnmeldung_erlaubt);
    $result .= \JsOperations::getDeclarationJsonBase64('KuferTools.ErlaubteZahlarten', $this->useCaseResponse->firmenToolSettings->getErlaubteZahlArten());
    
    $result .= \JsOperations::getDeclarationString('KuferTools.SepaTextOhneMandat', \StringOperations::convertLinebreaks2HTML($this->useCaseResponse->firmenToolSettings->sepaTextOhneMandat));
    $result .= \JsOperations::getDeclarationString('KuferTools.SepaTextMitMandat', \StringOperations::convertLinebreaks2HTML($this->useCaseResponse->firmenToolSettings->sepaTextMitMandat));
    $result .= \JsOperations::getDeclarationString('KuferTools.SepaTextDruckLink', $this->useCaseResponse->firmenToolSettings->sepaTextDruckLink);

    
    $result .= \JsOperations::getDeclarationString('KuferTools.AnmZusatzText', \StringOperations::convertLinebreaks2HTML($this->useCaseResponse->firmenToolSettings->anm_zusatzText));
    $result .= \JsOperations::getDeclarationString('KuferTools.AnmZusatzAufforderung', \StringOperations::convertLinebreaks2HTML($this->useCaseResponse->firmenToolSettings->anm_zusatzAufforderung));

    $result .= 'registerNamespace("KuferTools.FaAnmeldung"); ';
    $mitarbeiterData = $this->useCaseResponse->maData;
    $result .= \JsOperations::getDeclarationJsonBase64('KuferTools.FaAnmeldung.FaMitarbeiterJson', $mitarbeiterData);
    $result .= \JsOperations::getDeclarationJson('KuferTools.FaAnmeldung.FirmenanmeldungFormData', (object)$this->useCaseResponse->kursdata4Js);
    $result .= \JsOperations::getDeclarationBoolean('KuferTools.FaAnmeldung.RechtMaSuche', $this->useCaseResponse->mitarbeiterSucheAllowed);

    return $result;
  }
}