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

class KursgebuehrBerechnungsKontextLaderFromPost extends KursgebuehrBerechnungsKontextLader
{
  protected function getKontexte(): array
  {
    $kurse = PostOperations::getVarValue('data', array());

    return array_map(function($val) {
      return $this->createBerechnungsKontextfromArray($val);
    }, $kurse);
  }

  private function createBerechnungsKontextfromArray(array $data): KursgebuehrBerechnungsKontext
  {
    if (!isset($data['tns'])) {
      $data['tns'] = array();
    }
    $tns = array_map(function($tn) {
      return KursgebuehrBerechnungsKontextTeilnehmer::fromErmGrund($tn['erm_grund'], $tn['zp']);
    }, $data['tns']);
    $rabattierbar = APIGebuehren::isKollegenrabattErlaubt(
      $data['isRabattierbar'],
      $data['isFirmenanmeldung'],
      count($tns)
    );
    $kgebBerKontext = new KursgebuehrBerechnungsKontext(
      $data['knr'],
      $data['kinderanzahl'],
      $rabattierbar,
      $data['hauptTnAuch'],
      $data['brutto'],
      $data['isFirmenanmeldung'],
      $tns
    );

    if (BASysSettingsAPI::isSpendenFondAktiv() && !empty($data['spendenbetrag'])) {
      $kgebBerKontext->spendeninfos = SpendenFondInfos::create(MathOperations::stringToFloat($data['spendenbetrag']));
    }

    return $kgebBerKontext;
  }
}