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

namespace Kufer\KuferTools\Utils\HindernisGruende;

class HindernisGruendeDMZ extends HindernisGruende
{
  protected $dmzResponse;

  public function __construct($dmzResponseArray)
  {
    parent::__construct();
    $this->dmzResponse = $this->dmzResponseArrayToObject($dmzResponseArray);
  }

  protected function dmzResponseArrayToObject($dmzResponseArray)
  {
    $dmzResponseObject = new HindernisGruendeDmzResponseObject();
    $dmzResponseObject->belegungsId = $dmzResponseArray['Belid'];
    $dmzResponseObject->tnr = $dmzResponseArray['Tnr'];
    $dmzResponseObject->knr = $dmzResponseArray['Knr'];
    $dmzResponseObject->status1 = $dmzResponseArray['Status1'];
    $dmzResponseObject->kursAbschluss = $dmzResponseArray['Abschluss'];
    $dmzResponseObject->beginnDat = $dmzResponseArray['BeginnDat'];
    $dmzResponseObject->ausfall = $dmzResponseArray['Ausfall'];
    $dmzResponseObject->summeIst = $dmzResponseArray['SummeIst'];
    $dmzResponseObject->summeSollZahlungenMitZahlnummerGroesserNull = $dmzResponseArray['SummeSollZahlungenMitZahlnummerGroesserNull'];
    $dmzResponseObject->summeSollZahlungenMitZahlnummerGleichNull = $dmzResponseArray['SummeSollZahlungenMitZahlnummerGleichNull'];
    $dmzResponseObject->tnMin = $dmzResponseArray['TnMin'];
    $dmzResponseObject->isTeilVonFirmenanmeldung = $dmzResponseArray['IsTeilVonFirmenanmeldung'];
    $dmzResponseObject->isTeilVonMehrfachanmeldung = $dmzResponseArray['IsTeilVonMehrfachanmeldung'];
    $dmzResponseObject->isElternKindAnmeldung = $dmzResponseArray['IsElternKindanmeldung'];
    $dmzResponseObject->anzahlAnmeldungen = $dmzResponseArray['AnzahlAnmeldungen'];

    return $dmzResponseObject;
  }

  protected function isZahlungBereitsErfolgt($belegung)
  {
    return ($this->dmzResponse->summeIst > 0 || $this->dmzResponse->summeSollZahlungenMitZahlnummerGroesserNull > 0);
  }

  protected function isTeilVonMehrfachanmeldung($belegung)
  {
    return $this->dmzResponse->isTeilVonMehrfachanmeldung;
  }

  protected function isTeilVonFirmenanmeldung($belegung)
  {
    return $this->dmzResponse->isTeilVonFirmenanmeldung;
  }

  protected function isElternKindAnmeldung($belegung)
  {
    return $this->dmzResponse->isElternKindAnmeldung;
  }

  protected function isKursBereitsAbgeschlossen($pKurs)
  {
    return $this->dmzResponse->kursAbschluss;
  }

  protected function isBelegungInErnstbestandVorhanden()
  {
    return $this->dmzResponse->belegungsId != -1;
  }

  protected function isBelegungsIdKorrekt($belegung)
  {
    return $this->dmzResponse->belegungsId == $belegung->id;
  }

  protected function isKursNrKorrekt($belegung)
  {
    return $this->dmzResponse->knr == $belegung->knr;
  }

  protected function isTeilnehmerNrKorrekt($belegung)
  {
    return $this->dmzResponse->tnr == $belegung->tnr;
  }

  
  protected function hatKursBereitsBegonnen($pKurs)
  {
    if ($this->dmzResponse->beginnDat != '') {
      if (\DateTimeOperations::isDatebeforeNow($this->dmzResponse->beginnDat)) {
        return true;
      }
    }

    return false;
  }

  
  protected function isKursBeginnInWenigerAlsXTagen($pKurs, $pTagevorher)
  {
    if ($this->dmzResponse->beginnDat != '') {
      
      if (\DateTimeOperations::isDatebeforeNow($this->dmzResponse->beginnDat, (-$pTagevorher))) {
        return true;
      }
    }

    return false;
  }

  
  protected function isJournalUebertragen($belegungsId)
  {
    return true;
  }
}


class HindernisGruendeDmzResponseObject
{
  public $belegungsId;
  public $tnr;
  public $knr;
  public $status1;
  public $kursAbschluss;
  public $beginnDat;
  public $ausfall;
  public $summeIst;
  public $summeSollZahlungenMitZahlnummerGroesserNull;
  public $summeSollZahlungenMitZahlnummerGleichNull;
  public $tnMin;
  public $isTeilVonFirmenanmeldung;
  public $isTeilVonMehrfachanmeldung;
  public $isElternKindAnmeldung;
  public $anzahlAnmeldungen;
}