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

namespace Kufer\Web\KuferTools\Dozent\KursUebersicht\Detailsreiter\Honorar;

use Kufer\Web\Classes\ExportAdapter\ExpAdditionalVariables;

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

  protected function getDefaultDataModulArray()
  {
    $this->viewModel->kurs->vertragsDruckAllowed = $this->viewModel->vertragsDruckAllowed;

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

  protected function getDefaultExportAdapter()
  {
    return new \ExpKurse();
  }

  protected function getBodyDataModulArray()
  {
    $this->viewModel->honorar->showOnlyFahrkostenGesamt = $this->viewModel->showOnlyFahrkostenGesamt;
    $this->viewModel->honorar->showOnlySpesenGesamt = $this->viewModel->showOnlySpesenGesamt;
    $this->viewModel->honorar->showOnlyHonorarGesamt = $this->viewModel->showOnlyHonorarGesamt;

    $this->viewModel->honorar->showAnzahlBetragProKm = $this->viewModel->showAnzahlBetragProKm;
    $this->viewModel->honorar->addLeereFelderByFahrgesamtNotNull = $this->viewModel->addLeereFelderByFahrgesamtNotNull;
    $this->viewModel->honorar->showKmSatzFaktorBetreff = $this->viewModel->showKmSatzFaktorBetreff;
    $this->viewModel->honorar->addLeereFelderByGesamt = $this->viewModel->addLeereFelderByGesamt;

    $this->viewModel->honorar->vertragsDruckAllowed = $this->viewModel->vertragsDruckAllowed;

    $summen = $this->getDozHonorarSummen();

    $this->viewModel->honorar->honbezahlt = \MathOperations::floatToString($summen['summeHon']);
    $this->viewModel->honorar->honoffen = \MathOperations::floatToString(\MathOperations::stringToFloat($this->viewModel->honorar->getVarValue('honGesamtMitKomma')) - $summen['summeHon']);
    $this->viewModel->honorar->fahrtbezahlt = \MathOperations::floatToString($summen['summeFahrt']);
    $this->viewModel->honorar->fahrtoffen = \MathOperations::floatToString(\MathOperations::stringToFloat($this->viewModel->honorar->getVarValue('fahrtGesamtMitKomma')) - $summen['summeFahrt']);
    $this->viewModel->honorar->spesenbezahlt = \MathOperations::floatToString($summen['summeSpesen']);
    $this->viewModel->honorar->spesenoffen = \MathOperations::floatToString(\MathOperations::stringToFloat($this->viewModel->honorar->getVarValue('spesen')) - $summen['summeSpesen']);
    $this->viewModel->honorar->gesamtbezahlt = \MathOperations::floatToString($summen['summeGesamt']);
    $this->viewModel->honorar->gesamtoffen = \MathOperations::floatToString(\MathOperations::stringToFloat($this->viewModel->honorar->getVarValue('gesamtMitKomma')) - $summen['summeGesamt']);

    
    
    $this->viewModel->honorar->honfaktorMitKomma = \MathOperations::floatToString($this->viewModel->honorar->honfaktor);
    $this->viewModel->honorar->honsatzMitKomma = \MathOperations::floatToString($this->viewModel->honorar->honsatz);

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

  private function getDozHonorarSummen()
  {
    $result = array();
    $result['summeHon'] = 0;
    $result['summeFahrt'] = 0;
    $result['summeSpesen'] = 0;
    $result['summeSonstiges'] = 0;

    foreach ($this->viewModel->zahlungen as $zahlung) {
      switch ($zahlung->art) {
        case 1:
        case 2:
          $result['summeHon'] += \MathOperations::stringToFloat($zahlung->betrag);
          break;
        case 3: $result['summeFahrt'] += \MathOperations::stringToFloat($zahlung->betrag);
          break;
        case 4: $result['summeSpesen'] += \MathOperations::stringToFloat($zahlung->betrag);
          break;
        default:
          $result['summeSonstiges'] += \MathOperations::stringToFloat($zahlung->betrag);
          break;
      }
    }
    $result['summeGesamt'] = $result['summeHon'] + $result['summeFahrt'] + $result['summeSpesen'] + $result['summeSonstiges'];

    return $result;
  }

  protected function getBodyExportAdapter()
  {
    return new ExpAdditionalVariables(
      new \ExportDozentenVertraege(),
      array(

        'hon_vertragsstatus' => $this->viewModel->vertragsstatus,
        'vertragsDruckAllowed' => $this->viewModel->vertragsDruckAllowed
      )
    );
  }

  protected function getNoColumnDataModulArray()
  {
    return array($this->viewModel->honorar);
  }

  protected function getNoColumnExportAdapter()
  {
    return new ExpAdditionalVariables(
      new \ExportDozentenVertraege(),
      array(
        'hon_vertragsstatus' => $this->viewModel->vertragsstatus,
        'hon_showZusatzVertragAnzeigen' => $this->viewModel->showZusatzVertragAnzeigen,
        'hon_vertragsDruckAllowed' => $this->viewModel->vertragsDruckAllowed,
        'vertragsstatus' => $this->viewModel->vertragsstatus,
        'showZusatzVertragAnzeigen' => $this->viewModel->showZusatzVertragAnzeigen,
        'vertragsDruckAllowed' => $this->viewModel->vertragsDruckAllowed
      )
    );
  }
}

class HonorarViewModel
{
  public $kurs;
  public $honorar;
  public $zahlungen;

  public $showOnlyFahrkostenGesamt;
  public $showOnlySpesenGesamt;
  public $showOnlyHonorarGesamt;
  public $showZusatzVertragAnzeigen;

  public $showAnzahlBetragProKm;
  public $addLeereFelderByFahrgesamtNotNull;
  public $showKmSatzFaktorBetreff;
  public $addLeereFelderByGesamt;

  public $vertragsDruckAllowed;
  public $vertragsstatus;
}