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

namespace Kufer\Web\Classes\Ampel\AmpelStatus;

class Ampel4StatusBerechnungsInfos
{
  
  public $personenZahlen;

  
  public $tnKiZahlen;

  public function __construct(AnzahlMinMax $personenZahlen, AnzahlMinMax $tnKiZahlen)
  {
    $this->personenZahlen = $personenZahlen;
    $this->tnKiZahlen = $tnKiZahlen;
  }

  public static function fromKursTeilnehmer(\Kurs $kurs): self
  {
    $personenZahlen = new AnzahlMinMax($kurs->teil_akt, $kurs->teil_min, $kurs->teil_max);
    if ($kurs->isKinderkurs() && \System::isKuferSql5()) {
      $tnKiZahlen = new AnzahlMinMax($kurs->teil_akt, $kurs->teil_min, $kurs->teil_max);
    } else {
      $tnKiZahlen = new AnzahlMinMax($kurs->teil_akt + $kurs->kinderanzahl, $kurs->kurse2->tnki_min, $kurs->kurse2->tnki_max);
    }

    return new self($personenZahlen, $tnKiZahlen);
  }

  public static function fromKursKinder(\Kurs $kurs): self
  {
    $personenZahlen = new AnzahlMinMax($kurs->kinderanzahl, $kurs->kinder_min, $kurs->kinder_max);
    if ($kurs->isKinderkurs() && \System::isKuferSql5()) {
      $tnKiZahlen = new AnzahlMinMax($kurs->kinderanzahl, $kurs->kinder_min, $kurs->kinder_max);
    } else {
      $tnKiZahlen = new AnzahlMinMax($kurs->teil_akt + $kurs->kinderanzahl, $kurs->kurse2->tnki_min, $kurs->kurse2->tnki_max);
    }

    return new self($personenZahlen, $tnKiZahlen);
  }

  public static function fromHybridkursOnlineTeilnehmer(\Kurs $kurs): self
  {
    $personenZahlen = new AnzahlMinMax($kurs->kurse2->tnonline_akt, 0, $kurs->kurse2->tnonline_max);
    if ($kurs->isKinderkurs() && \System::isKuferSql5()) {
      $tnKiZahlen = new AnzahlMinMax($kurs->kurse2->tnonline_akt, 0, $kurs->kurse2->tnkionline_max);
    } else {
      $tnKiZahlen = new AnzahlMinMax($kurs->kurse2->tnonline_akt + $kurs->kurse2->kionline_akt, 0, $kurs->kurse2->tnkionline_max);
    }

    return new self($personenZahlen, $tnKiZahlen);
  }

  public static function fromHybridkursOnlineKinder(\Kurs $kurs): self
  {
    $personenZahlen = new AnzahlMinMax($kurs->kurse2->kionline_akt, 0, $kurs->kurse2->kionline_max);
    if ($kurs->isKinderkurs() && \System::isKuferSql5()) {
      $tnKiZahlen = new AnzahlMinMax($kurs->kurse2->tnonline_akt, 0, $kurs->kurse2->tnkionline_max);
    } else {
      $tnKiZahlen = new AnzahlMinMax($kurs->kurse2->tnonline_akt + $kurs->kurse2->kionline_akt, 0, $kurs->kurse2->tnkionline_max);
    }

    return new self($personenZahlen, $tnKiZahlen);
  }
}

class AnzahlMinMax
{
  
  public $anzahl;

  
  public $min;

  
  public $max;

  public function __construct(int $anzahl = 1, int $min = 0, int $max = 0)
  {
    $this->anzahl = $anzahl;
    $this->min = $min;
    $this->max = $max;
  }
}