<?php

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

class TeilnehmerzahlenBerechnetNormalkurs extends TeilnehmerzahlenBerechnet
{
  public function getAnzahlTeilnehmerAngemeldet(): int
  {
    return $this->tnZahlenFromDb->getAnzahlTeilnehmerAngemeldet();
  }

  public function getAnzahlKinderAngemeldet(): int
  {
    return $this->tnZahlenFromDb->getAnzahlKinderAngemeldet();
  }

  public function getAnzahlTeilnehmerUndKinderAngemeldet(): int
  {
    return $this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderAngemeldet();
  }

  public function getAnzahlTeilnehmerWarteliste(): int
  {
    return $this->tnZahlenFromDb->getAnzahlTeilnehmerWarteliste();
  }

  public function getAnzahlKinderWarteliste(): int
  {
    return $this->tnZahlenFromDb->getAnzahlKinderWarteliste();
  }

  public function getAnzahlTeilnehmerUndKinderWarteliste(): int
  {
    return $this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderWarteliste();
  }

  public function getAnzahlTeilnehmerplaetzeFrei(): int
  {
    return $this->getAnzahlTeilnehmerMaximal() - $this->getAnzahlTeilnehmerAngemeldet();
  }

  public function getAnzahlKinderplaetzeFrei(): int
  {
    return $this->getAnzahlKinderMaximal() - $this->getAnzahlKinderAngemeldet();
  }

  public function getAnzahlTeilnehmerUndKinderPlaetzeFrei(): int
  {
    return $this->getAnzahlTeilnehmerUndKinderMaximal() - $this->getAnzahlTeilnehmerUndKinderAngemeldet();
  }

  public function getAnzahlTeilnehmerMaximal(): int
  {
    if ($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMaximal() > 0) {
      return min($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMaximal(), $this->tnZahlenFromDb->getAnzahlTeilnehmerMaximal());
    } else {
      return $this->tnZahlenFromDb->getAnzahlTeilnehmerMaximal();
    }
  }

  public function getAnzahlKinderMaximal(): int
  {
    if ($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMaximal() > 0) {
      return min($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMaximal(), $this->tnZahlenFromDb->getAnzahlKinderMaximal());
    } else {
      return $this->tnZahlenFromDb->getAnzahlKinderMaximal();
    }
  }

  public function getAnzahlTeilnehmerUndKinderMaximal(): int
  {
    $tnMaxPlusKinderMax = $this->tnZahlenFromDb->getAnzahlTeilnehmerMaximal() + $this->tnZahlenFromDb->getAnzahlKinderMaximal();
    if ($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMaximal() > 0) {
      if ($tnMaxPlusKinderMax > 0) {
        return min($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMaximal(), $tnMaxPlusKinderMax);
      } else {
        return $this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMaximal();
      }
    } else {
      return $tnMaxPlusKinderMax;
    }
  }

  public function getAnzahlTeilnehmerMinimal(): int
  {
    if ($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMinimal() > 0) {
      return max($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMinimal() - $this->tnZahlenFromDb->getAnzahlKinderMinimal(), $this->tnZahlenFromDb->getAnzahlTeilnehmerMinimal());
    } else {
      return $this->tnZahlenFromDb->getAnzahlTeilnehmerMinimal();
    }
  }

  public function getAnzahlKinderMinimal(): int
  {
    if ($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMinimal() > 0) {
      return max($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMinimal() - $this->tnZahlenFromDb->getAnzahlTeilnehmerMinimal(), $this->tnZahlenFromDb->getAnzahlKinderMinimal());
    } else {
      return $this->tnZahlenFromDb->getAnzahlKinderMinimal();
    }
  }

  public function getAnzahlTeilnehmerUndKinderMinimal(): int
  {
    $tnMaxPlusKinderMin = $this->tnZahlenFromDb->getAnzahlTeilnehmerMinimal() + $this->tnZahlenFromDb->getAnzahlKinderMinimal();
    if ($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMinimal() > 0) {
      return max($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMinimal(), $tnMaxPlusKinderMin);
    } else {
      return $tnMaxPlusKinderMin;
    }
  }

  

  public function getAnzahlTeilnehmerAngemeldetOnline(): int
  {
    return $this->tnZahlenFromDb->getAnzahlTeilnehmerAngemeldetOnline();
  }

  public function getAnzahlKinderAngemeldetOnline(): int
  {
    return $this->tnZahlenFromDb->getAnzahlKinderAngemeldetOnline();
  }

  public function getAnzahlTeilnehmerUndKinderAngemeldetOnline(): int
  {
    return $this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderAngemeldetOnline();
  }

  public function getAnzahlTeilnehmerWartelisteOnline(): int
  {
    return $this->tnZahlenFromDb->getAnzahlTeilnehmerWartelisteOnline();
  }

  public function getAnzahlKinderWartelisteOnline(): int
  {
    return $this->tnZahlenFromDb->getAnzahlKinderWartelisteOnline();
  }

  public function getAnzahlTeilnehmerUndKinderWartelisteOnline(): int
  {
    return $this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderWartelisteOnline();
  }

  public function getAnzahlTeilnehmerplaetzeFreiOnline(): int
  {
    return $this->getAnzahlTeilnehmerMaximalOnline() - $this->getAnzahlTeilnehmerAngemeldetOnline();
  }

  public function getAnzahlKinderplaetzeFreiOnline(): int
  {
    return $this->getAnzahlKinderMaximalOnline() - $this->getAnzahlKinderAngemeldetOnline();
  }

  public function getAnzahlTeilnehmerUndKinderPlaetzeFreiOnline(): int
  {
    return $this->getAnzahlTeilnehmerUndKinderMaximalOnline() - $this->getAnzahlTeilnehmerUndKinderAngemeldetOnline();
  }

  public function getAnzahlTeilnehmerMaximalOnline(): int
  {
    if ($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMaximalOnline() > 0) {
      return min(
        $this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMaximalOnline(),
        $this->tnZahlenFromDb->getAnzahlTeilnehmerMaximalOnline()
      );
    } else {
      return $this->tnZahlenFromDb->getAnzahlTeilnehmerMaximalOnline();
    }
  }

  public function getAnzahlKinderMaximalOnline(): int
  {
    if ($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMaximalOnline() > 0) {
      return min(
        $this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMaximalOnline(),
        $this->tnZahlenFromDb->getAnzahlKinderMaximalOnline()
      );
    } else {
      return $this->tnZahlenFromDb->getAnzahlKinderMaximalOnline();
    }
  }

  public function getAnzahlTeilnehmerUndKinderMaximalOnline(): int
  {
    $tnMaxPlusKinderMax = $this->tnZahlenFromDb->getAnzahlTeilnehmerMaximalOnline() + $this->tnZahlenFromDb->getAnzahlKinderMaximalOnline();
    if ($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMaximalOnline() > 0) {
      return min($this->tnZahlenFromDb->getAnzahlTeilnehmerUndKinderMaximalOnline(), $tnMaxPlusKinderMax);
    } else {
      return $tnMaxPlusKinderMax;
    }
  }
}