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

namespace Kufer\KuferTools\Utils\DatamodulHelper\BelegungsHelper;

class ReiterTeilnehmerBelegungen extends BelegungsHelper
{
  private $request;
  private $kursId;

  
  public function __construct($toolSettings, $request, $kursId)
  {
    parent::__construct($toolSettings, null);
    $this->request = $request;
    $this->kursId = $kursId;
  }

  
  protected function getBelegungsIds($dbwBelegung)
  {
    return $dbwBelegung->getBelegungsIdsbyKursNR($this->kursId);
  }

  
  protected function setzeSortierung($dbwBelegung)
  {
    $dbwBelegung->setPersonenOrderBySettings($this->toolSettings, 'tn');

    return $dbwBelegung;
  }

  
  protected function setzeFilter($dbwBelegung, $pToolId)
  {
    $dbwBelegung->fromobject->status = $this->getBelStatusValueFuerFilter();

    if ($this->request->tnEmail !== '') {
      $dbwBelegung->fromobject->teilnehmer->email = $this->getValueFuerFilter($this->request->tnEmail);
    }

    if ($this->request->tnMobil !== '') {
      $dbwBelegung->fromobject->teilnehmer->mobil = $this->getValueFuerFilter($this->request->tnMobil);
    }

    if ($this->request->tnTelMobil !== '') {
      $dbwBelegung->fromobject->teilnehmer->telMobil = $this->getValueFuerFilter($this->request->tnTelMobil);
    }
    if ($this->request->tnTelefon !== '') {
      $dbwBelegung->fromobject->teilnehmer->tel = $this->getValueFuerFilter($this->request->tnTelefon);
    }

    return $dbwBelegung;
  }

  
  private function getValueFuerFilter($pFilterValue)
  {
    $result = null; 
    if ($pFilterValue === 'mit') {
      $result = '_%';
    } elseif ($pFilterValue === 'ohne') {
      $result = '';
    }

    return $result;
  }

  
  private function getBelStatusValueFuerFilter()
  {
    if ($this->toolSettings->tnstatus == '') {
      return $this->request->tnStatus;
    } elseif ($this->request->tnStatus == '') {
      return $this->toolSettings->tnstatus;
    }
    $settingsStatusAry = \StringOperations::str_split($this->toolSettings->tnstatus);
    $filterStatusAry = \StringOperations::str_split($this->request->tnStatus);

    return implode('', array_intersect($settingsStatusAry, $filterStatusAry));
  }

  
  protected function setzeEinstellungen($dbwBelegung)
  {
    $dbwBelegung->dbwkurse->beratungstageKurseAusblenden = false;

    return $dbwBelegung;
  }
}