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

namespace Kufer\Web\KuferTools\Dozent\HonorarAbnahme\HonorarAbnahmeUebersicht;

use Kufer\Web\Classes\ExportAdapter\ExpHonorarAbnahme;

class HonorarAbnahmeView extends \Kufer\Web\KuferTools\Basis\View\ViewSight
{
  public function getTemplatePathRelative()
  {
    return 'dozent/honorarabnahme/honorarabnahme.sgt';
  }

  protected function getDefaultDataModulArray()
  {
    return array($this->viewModel->honorarAbnahme);
  }

  protected function getDefaultExportAdapter()
  {
    return new ExpHonorarAbnahme();
  }

  protected function getBodyDataModulArray()
  {
    foreach ($this->viewModel->kurstage as $kurstag) {
      $this->initHonDetails($kurstag);
      foreach (($kurstag->honDetailAry ?? array()) as $honDetail) {
        $honDetailNeueWerte = clone $honDetail;
        foreach ($kurstag->honAbnahmeReklamationenAry[$honDetail->id] as $honAbnahmeReklamation) {
          $honAbnahmeReklamation->updateHonDetailWithNewValue($honDetailNeueWerte);
        }
        if ($honDetail->art === 'H') {
          $this->setHonDetailsHonorar($kurstag, $honDetail, $honDetailNeueWerte);
        } elseif ($honDetail->art === 'F') {
          $this->setHonDetailsFahrtkosten($kurstag, $honDetail, $honDetailNeueWerte);
        }
      }
      $kurstag->hondetail_honfahrtgesamt = \MathOperations::floatToString(
        \MathOperations::stringToFloat($kurstag->hondetail_hongesamt) + \MathOperations::stringToFloat($kurstag->hondetail_fahrtgesamt)
      );
      $kurstag->hondetail_honfahrtgesamtNeuerWert = \MathOperations::floatToString(
        \MathOperations::stringToFloat($kurstag->hondetail_hongesamtNeuerWert) + \MathOperations::stringToFloat($kurstag->hondetail_fahrtgesamtNeuerWert)
      );
    }

    return $this->viewModel->kurstage;
  }

  protected function getBodyExportAdapter()
  {
    return new \ExpKurstage();
  }

  private function initHonDetails(\Kurstag &$pKurstag)
  {
    $pKurstag->hondetail_honfaktor = 0;
    $pKurstag->hondetail_honsatz = 0;
    $pKurstag->hondetail_hongesamt = 0;
    $pKurstag->hondetail_fahrtfaktor = 0;
    $pKurstag->hondetail_fahrtentfernung = 0;
    $pKurstag->hondetail_fahrtkmsatz = 0;
    $pKurstag->hondetail_fahrtdoppelt = 0;
    $pKurstag->hondetail_fahrtgesamt = 0;
    $pKurstag->hondetail_honfahrtgesamt = 0;

    $pKurstag->hondetail_honfaktorNeuerWert = 0;
    $pKurstag->hondetail_honsatzNeuerWert = 0;
    $pKurstag->hondetail_hongesamtNeuerWert = 0;
    $pKurstag->hondetail_fahrtfaktorNeuerWert = 0;
    $pKurstag->hondetail_fahrtentfernungNeuerWert = 0;
    $pKurstag->hondetail_fahrtkmsatzNeuerWert = 0;
    $pKurstag->hondetail_fahrtdoppeltNeuerWert = 0;
    $pKurstag->hondetail_fahrtgesamtNeuerWert = 0;
    $pKurstag->hondetail_honfahrtgesamtNeuerWert = 0;
  }

  private function setHonDetailsHonorar(\Kurstag &$pKurstag, \HonDetail $pHonDetail, \HonDetail $pHonDetailNeueWerte)
  {
    $pKurstag->hondetail_honfaktor = $pHonDetail->getVarValue('faktormitkomma');
    $pKurstag->hondetail_honsatz = $pHonDetail->getVarValue('satzmitkomma');
    $pKurstag->hondetail_hongesamt = $pHonDetail->getVarValue('gesamtmitkomma');

    $pKurstag->hondetail_honfaktorNeuerWert = $pHonDetailNeueWerte->getVarValue('faktormitkomma');
    $pKurstag->hondetail_honsatzNeuerWert = $pHonDetailNeueWerte->getVarValue('satzmitkomma');
    $pKurstag->hondetail_hongesamtNeuerWert = $pHonDetailNeueWerte->getVarValue('gesamtmitkomma');
  }

  private function setHonDetailsFahrtkosten(\Kurstag &$pKurstag, \HonDetail $pHonDetail, \HonDetail $pHonDetailNeueWerte)
  {
    $pKurstag->hondetail_fahrtfaktor = $pHonDetail->getVarValue('faktormitkomma');
    $pKurstag->hondetail_fahrtkmsatz = $pHonDetail->getVarValue('satzmitkomma');
    $pKurstag->hondetail_fahrtentfernung = $pHonDetail->entfernung;
    $pKurstag->hondetail_fahrtdoppelt = $pHonDetail->doppelt;
    $pKurstag->hondetail_fahrtgesamt = $pHonDetail->getVarValue('gesamtmitkomma');

    $pKurstag->hondetail_fahrtfaktorNeuerWert = $pHonDetailNeueWerte->getVarValue('faktormitkomma');
    $pKurstag->hondetail_fahrtkmsatzNeuerWert = $pHonDetailNeueWerte->getVarValue('satzmitkomma');
    $pKurstag->hondetail_fahrtentfernungNeuerWert = $pHonDetailNeueWerte->entfernung;
    $pKurstag->hondetail_fahrtdoppeltNeuerWert = $pHonDetailNeueWerte->doppelt;
    $pKurstag->hondetail_fahrtgesamtNeuerWert = $pHonDetailNeueWerte->getVarValue('gesamtmitkomma');
  }
}