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

namespace Kufer\Web\Classes\Ampel\AmpelStatus;

class Ampel4StatusBerechnungKuferWeb extends Ampel4StatusBerechnung
{
  protected function isAmpelStatus2(AnzahlMinMax $anzahlMinMax, \ToolSettingsBASys $settings): bool
  {
    if ($settings->anmstatus2option == 1) {
      return $this->isMinBelegschwelleErreicht($anzahlMinMax, $settings);
    }
    if ($settings->anmstatus2option == 2) {
      return $this->isMaxBelegschwelleErreicht($anzahlMinMax, $settings);
    }
    
    return $this->isMinPersonenZahlErreicht($anzahlMinMax);
  }

  private function isMinPersonenZahlErreicht(AnzahlMinMax $anzahlMinMax): bool
  {
    return $anzahlMinMax->anzahl >= $anzahlMinMax->min;
  }

  private function isMinBelegschwelleErreicht(AnzahlMinMax $anzahlMinMax, \ToolSettingsBASys $settings): bool
  {
    $belegSchwelle = \BelegungOperations::getBelegschwelle(
      $anzahlMinMax->min,
      $settings->belegschwSt2minProz,
      $settings->belegschwSt2minZahl
    );

    return $anzahlMinMax->anzahl >= $belegSchwelle;
  }

  private function isMaxBelegschwelleErreicht(AnzahlMinMax $anzahlMinMax, \ToolSettingsBASys $settings): bool
  {
    $belegSchwelle = \BelegungOperations::getBelegschwelle(
      $anzahlMinMax->max,
      $settings->belegschwSt2maxProz,
      $settings->belegschwSt2maxZahl
    );

    return $anzahlMinMax->anzahl >= $belegSchwelle;
  }
}