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

namespace Kufer\Web\KuferTools\Teilnehmer\ZsaAnmeldung\BelegungsUebersicht;

class BelegungsUebersichtPresenter extends \Kufer\Web\KuferTools\Basis\Presenter\MitRahmenPresenter
{
  protected function getViewModel()
  {
    $viewModel = new BelegungsUebersichtViewModel();
    $viewModel->erfolgsmeldung = $this->getMessageStringSuccess();
    $viewModel->fehlermeldung = $this->getMessageStringError();
    $viewModel->belegungen = $this->useCaseResponse->belegungen;

    $viewModel->sort_1 = $this->useCaseResponse->sort_1;
    $viewModel->sort_2 = $this->useCaseResponse->sort_2;
    $viewModel->sort_3 = $this->useCaseResponse->sort_3;

    return $viewModel;
  }

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

  private function getMessageStringSuccess()
  {
    $result = '';
    if ($this->useCaseResponse->statusCode === \Kufer\Web\KuferTools\Teilnehmer\ZsaTeilnehmerUebersicht\AendereBelegung\AendereBelegungUseCase::UPDATE_BELEGUNG_SUCCESS) {
      $result = 'Die Änderung wurde erfolgreich durchgeführt.';
    }

    return $result;
  }

  private function getMessageStringError()
  {
    $result = '';
    if ($this->useCaseResponse->statusCode === \Kufer\Web\KuferTools\Teilnehmer\ZsaTeilnehmerUebersicht\AendereBelegung\AendereBelegungUseCase::UPDATE_BELEGUNG_ERROR) {
      $result = 'Beim Ändern ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut oder wenden sich an die Einrichtung.';
    }
    if ($this->useCaseResponse->statusCode === \Kufer\Web\KuferTools\Teilnehmer\ZsaTeilnehmerUebersicht\AendereBelegung\AendereBelegungUseCase::UPDATE_BELEGUNG_DOPPELT) {
      $result = 'Die Änderung wurde doppelt abgesendet und beim zweiten Mal ignoriert.';
    }

    return $result;
  }

  protected function getJsFilesSrcAryWeitere(): array
  {
    return array(
        $this->getJsFileFromSys('zsaAnmeldung.js'),
      $this->getJsFileFromSys('filter.js')
    );
  }

  protected function getJSDeclarations(): string
  {
    $js = parent::getJSDeclarations();

    $js .= \JsOperations::getDeclarationJsonBase64('KuferTools.verwendetePrioritaeten', $this->useCaseResponse->vergebenePrioritaeten);

    return $js;
  }
}