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

namespace Kufer\Web\KuferTools\Firma\KursUebersicht\Detailsreiter\Storno;

use Kufer\Web\Classes\Stream\ArrayStream;

class HandleStornoEMailEinfachView extends \Kufer\Web\KuferTools\Basis\View\ViewSight
{
  public function getTemplatePathRelative()
  {
    return 'firma/kursuebersicht/detailsreiter/storno_email_einrichtung_einfach.sgt';
  }

  protected function getDefaultDataModulArray()
  {
    $belegung = $this->viewModel->belegung;
    $belegung->komplett_abmelden = $this->viewModel->komplettAbmelden;
    $belegung->warteliste_ary_empty = empty($this->viewModel->warteListeBenachrichtigtAry);
    $belegung->frei_werdende_plaetze = $this->viewModel->freiwerdendePlaetze;

    return array($belegung);
  }

  protected function getDefaultExportAdapter()
  {
    return new \ExpBelegung(true);
  }

  protected function getFooterDataModulArray()
  {
    return $this->viewModel->firmenBelegungen;
  }

  protected function getNoDataDataModulArray()
  {
    return (new ArrayStream($this->viewModel->warteListeBenachrichtigtAry))
      ->map(function(\WartelistenBenachrichtigungFirma $wlBenachrichtung): \Datamodul {
        $result = new class() extends \Datamodul {
          public $namevorname;
          public $tnr;
          public $benachrichtigt;
          public $sendereplikathinweis;
          public $anzahl;
          public $first = false;
        };

        $result->namevorname = $wlBenachrichtung->namevorname;
        $result->tnr = $wlBenachrichtung->tnr;
        $result->benachrichtigt = $wlBenachrichtung->benachrichtigt;
        $result->sendereplikathinweis = $wlBenachrichtung->sendereplikathinweis;
        $result->anzahl = $wlBenachrichtung->anzahl;

        return $result;
      })
      ->mapFirst(function($firstElement) {
        $firstElement->first = true;

        return $firstElement;
      })
      ->toArray();
  }

  protected function getNoDataExportAdapter()
  {
    return new \ExpBasis(true);
  }
}

class HandleStornoEMailEinfachViewModel
{
  
  public $belegung;
  
  public $komplettAbmelden;
  
  public $warteListeBenachrichtigtAry;
  
  public $firmenBelegungen;
  
  public $freiwerdendePlaetze;
}