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

class MandantOperations
{
  
  public function getMandantZuVerwenden($pKursnummern)
  {
    $dbwork = new DBWorkKurse();
    $kennzad = new DBWorkKennzAd();
    $dbwhlmand = new DBWorkHLMandant();

    if ($this->getMandantVonKursen($pKursnummern) != 0) {
      return $this->getMandantVonKursen($pKursnummern);
    }
    $arrKennz = $this->getMandantenvonKennzeichen($pKursnummern, $kennzad, $dbwork, $dbwhlmand);
    $arrVergleich = $this->getArrVergleich($arrKennz);
    $hlmandanten = $dbwhlmand->getAll();
    foreach ($hlmandanten as $hlmandant) {
      if (in_array($hlmandant->kennz, $arrVergleich)) {
        return $hlmandant->id;
      }
    }

    return 0;
  }

  
  private function getArrVergleich($arrKennz)
  {
    $arrVergleich = array();
    foreach ($arrKennz as $arrkurskennz) {
      if (empty($arrVergleich)) {
        $arrVergleich = $arrkurskennz;
      }
      $arrVergleich = array_intersect($arrVergleich, $arrkurskennz);
    }

    return $arrVergleich;
  }

  
  private function getMandantDesKurses($pKursnummer, $dbworkkurse, $dbwhlmand)
  {
    $kursm = $dbworkkurse->getKurs($pKursnummer);
    $hlmandanten = $dbwhlmand->getAll();
    $ergebnis = array();
    foreach ($hlmandanten as $hlmandantobj) {
      if ($hlmandantobj->id == $kursm->mandant) {
        $ergebnis[$kursm->mandant] = $hlmandantobj->kennz;
      }
    }

    return $ergebnis;
  }

  
  private function getMandantVonKursen($pKursnummern)
  {
    $dbwork = new DBWorkKurse();
    $mandant = 0;
    foreach ($pKursnummern as $kursnummer) {
      $kursm = $dbwork->getKurseByIDs(array($kursnummer));
      $kurs = $kursm[0];
      if ($mandant == 0) {
        $mandant = $kurs->mandant;
      } else {
        if ($mandant != $kurs->mandant) {
          $mandant = 0;
          break;
        }
      }
    }

    return $mandant;
  }

  
  private function getMandantenvonKennzeichen($pKursnummern, $dbwkennzad, $dbworkkurse, $dbwhlmand)
  {
    $arrKennz = array();
    foreach ($pKursnummern as $kursnummer) {
      $kennzadobj = $dbwkennzad->getKennzForTypUndNr('K', $kursnummer);
      if (!empty($kennzadobj)) {
        foreach ($kennzadobj as $kursnrkennz) {
          $arrKennz[$kursnrkennz->nr][] = $kursnrkennz->kennz;
        }
      } else {
        $arrKennz[$kursnummer] = $this->getMandantDesKurses($kursnummer, $dbworkkurse, $dbwhlmand);
      }
    }

    return $arrKennz;
  }
}