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

namespace Kufer\KuferTools\Dozent\Portrait\Dozentenportrait;

use Kufer\KuferTools\Dozent\Portrait\DozentenportraitBearbeiten\DozentenPortraitBearbeitenAbsendenUseCase;
use Kufer\KuferTools\Utils\StatusMessages\StatusMessageContainer;

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

  protected function getViewModel()
  {
    $viewModel = new DozentenPortraitViewModel();
    $viewModel->dozentenPortrait = $this->useCaseResponse->dozentenPortrait;
    $viewModel->columns = $this->useCaseResponse->columns;
    $smc = StatusMessageContainer::getSharedInstance();
    $viewModel->messageSuccess = $this->getMessageStringSuccess($smc);
    $viewModel->messageInfo = $this->getMessageStringInfo($smc);
    $viewModel->messageError = $this->getMessageStringError($smc);

    return $viewModel;
  }

  protected function getJsFilesSrcAryWeitere()
  {
    return array(
      $this->getJsFileFromSys('doz_portrait.js')
    );
  }

  private function getMessageStringSuccess(StatusMessageContainer $smc)
  {
    $result = array();
    if (isset($this->useCaseResponse->statusCodes)) {
      if (in_array(DozentenPortraitBearbeitenAbsendenUseCase::SUCCESS_DOZENTEN_PORTRAIT_BEARBEITEN_ERFOLGREICH, $this->useCaseResponse->statusCodes)) {
        $result[] = 'Ihre Daten zum Portrait wurden erfolgreich übermittelt.';
      }
      if (in_array(DozentenPortraitBearbeitenAbsendenUseCase::SUCCESS_DOZENTEN_PORTRAIT_BEARBEITEN_BILD_HOCHLADEN_ERFOLGREICH, $this->useCaseResponse->statusCodes)) {
        $result[] = 'Ihr Bild wurde erfolgreich hochgeladen.';
      }
      if (in_array(DozentenPortraitBearbeitenAbsendenUseCase::SUCCESS_BENACHRICHTIGUNG_VERSANDT, $this->useCaseResponse->statusCodes)) {
        $result[] = 'Eine Benachrichtigung wurde an die Einrichtung versendet.';
      }
    }
    $smcSuccessMsg = $smc->getMessageStringSuccess();
    if ($smcSuccessMsg !== '') {
      $result[] = $smcSuccessMsg;
    }

    return implode('<br />', $result);
  }

  private function getMessageStringInfo(StatusMessageContainer $smc)
  {
    $result = array();
    if (isset($this->useCaseResponse->statusCodes)) {
      if (in_array(DozentenPortraitBearbeitenAbsendenUseCase::INFO_DOZENTEN_PORTRAIT_NICHT_VERAENDERT, $this->useCaseResponse->statusCodes)) {
        $result[] = 'Es wurden keine Änderungen vorgenommen!';
      }
    }

    $smcInfoMsg = $smc->getMessageStringInfo();
    if ($smcInfoMsg !== '') {
      $result[] = $smcInfoMsg;
    }

    return implode('<br />', $result);
  }

  private function getMessageStringError(StatusMessageContainer $smc)
  {
    $result = array();
    if (isset($this->useCaseResponse->statusCodes)) {
      if (in_array(DozentenPortraitBearbeitenAbsendenUseCase::ERROR_DOZENTEN_PORTRAIT_BEARBEITEN_FEHLGESCHLAGEN, $this->useCaseResponse->statusCodes)) {
        $result[] = 'Beim Speichern Ihres Portraits ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut oder wenden sich an die Einrichtung.';
      }
      if (in_array(DozentenPortraitBearbeitenAbsendenUseCase::ERROR_DOZENTEN_PORTRAIT_BEARBEITEN_BILD_HOCHLADEN_FEHLGESCHLAGEN, $this->useCaseResponse->statusCodes)) {
        $result[] = 'Beim Hochladen des Bildes ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut oder wenden sich an die Einrichtung.';
      }
      if (in_array(DozentenPortraitBearbeitenAbsendenUseCase::ERROR_DOPPELT_ABSENDEN, $this->useCaseResponse->statusCodes)) {
        $result[] = 'Ihre Änderungen wurden bereits abgesendet und werden deshalb kein zweites Mal versendet.';
      }
      if (in_array(DozentenPortraitBearbeitenAbsendenUseCase::ERROR_DOZENTEN_PORTRAIT_DATEN_FEHLERHAFT, $this->useCaseResponse->statusCodes)) {
        $result[] = \Kufer\KuferTools\Utils\WssHandler::getErrorMessage($this->useCaseResponse->wrongFields);
      }
      if (in_array(DozentenPortraitBearbeitenAbsendenUseCase::ERROR_BENACHRICHTIGUNG_NICHT_VERSANDT, $this->useCaseResponse->statusCodes)) {
        $result[] = 'Eine Benachrichtigung konnte an die Einrichtung nicht versendet werden.<br />'
                . 'Bitte informieren Sie die Einrichtung über Ihr geändertes Dozentenportrait.';
      }
    }

    $smcErrorMsg = $smc->getMessageStringError();
    if ($smcErrorMsg !== '') {
      $result[] = $smcErrorMsg;
    }

    return implode('<br />', $result);
  }
}