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


class MerklisteAPI
{
  
  public static $dbwml;

  
  public static function add($pKnr)
  {
    if (!SessionOperations::isStammhoererLoggedIn()) {
      return;
    }
    if (MerklisteAPI::isAufMerkliste($pKnr)) {
      return;
    }
    $kurs = WBKursStore::getKurs($pKnr);
    if ($kurs->isEmpty()) {
      MerklisteStatusMessengerAPI::addMessageHinzufuegenNichtMoeglich($pKnr);

      return;
    }
    $ml = new WebMerkliste();
    $ml->erstellt = DateTimeOperations::getDateTimeNow();
    $ml->tnr = SessionOperations::getCurrentStammhoererTnr();
    $ml->knr = $pKnr;
    self::$dbwml->insert($ml);
    MerklisteStatusMessengerAPI::addMessageHinzugefuegt($pKnr);
  }

  
  public static function delete($pKnr)
  {
    if (!MerklisteAPI::isAufMerkliste($pKnr)) {
      return;
    }
    self::$dbwml->deleteByTnrKnr(SessionOperations::getCurrentStammhoererTnr(), $pKnr);
    MerklisteStatusMessengerAPI::addMessageEntfernt($pKnr);
  }

  
  public static function isAufMerkliste($pKnr)
  {
    $merkliste = self::$dbwml->getWebMerklisteByTnrKnr(SessionOperations::getCurrentStammhoererTnr(), $pKnr);
    if ($merkliste->knr == $pKnr) {
      return true;
    }

    return false;
  }

  
  public static function isAufMerklisteNurAnzuzeigendeKurse($pKnr)
  {
    $kurs = WBKursStore::getKurs($pKnr);
    if ($kurs->isEmpty()) {
      return false;
    }

    return MerklisteAPI::isAufMerkliste($pKnr);
  }

  
  public static function countMerkliste($pTnr)
  {
    $merkliste = self::$dbwml->getWebMerklisteByTnr($pTnr);

    return count($merkliste);
  }

  
  public static function countMerklisteNurAnzuzeigendeKurse($pTnr)
  {
    $merkliste = self::$dbwml->getWebMerklisteByTnr($pTnr);
    $kurse = array();
    foreach ($merkliste as $merklistenobj) {
      $kurs = WBKursStore::getKurs($merklistenobj->knr);
      if (!$kurs->isEmpty()) {
        $kurse[] = $kurs;
      }
    }

    return count($kurse);
  }

  
  public static function getNichtAnzuzeigendeKurse()
  {
    $merkliste = self::$dbwml->getWebMerklisteKomplett(); 
    $kursnummern = array();
    $knrs = array_map(function($arg) {return $arg->knr;}, $merkliste); 
    $anzuzeigendeKurse = WBKursStore::getKurseByIdArray($knrs); 
    if (count($anzuzeigendeKurse) === 0) { 
      return $knrs;
    } else {
      $anzuzeigendeKursNummern = array_map(function($arg) {return $arg->id;}, $anzuzeigendeKurse); 
      foreach ($knrs as $knr) {
        if (!in_array($knr, $anzuzeigendeKursNummern)) { 
          $kursnummern[] = $knr;
        }
      }
    }

    return $kursnummern;
  }
}

MerklisteAPI::$dbwml = new DBWorkWebMerkliste();