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

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

class HonorarView extends \Kufer\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 \ExpDozHonorar();
  }

  protected function getNoColumnDataModulArray()
  {
    $this->viewModel->honorar->showZusatzVertragAnzeigen = $this->viewModel->showZusatzVertragAnzeigen;
    $this->viewModel->honorar->vertragsDruckAllowed = $this->viewModel->vertragsDruckAllowed;

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

  protected function getNoColumnExportAdapter()
  {
    return new \ExpDozHonorar();
  }
}

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;
}