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

namespace Kufer\KuferTools\Veranstalter\MeinVeranstalter\Uebersicht;

class UebersichtUseCase extends \Kufer\KuferTools\Basis\UseCase\ToolUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new UebersichtResponse());
  }

  public static function getToolSectionId()
  {
    return 680;
  }

  public static function getToolId()
  {
    return 56;
  }

  public function action()
  {
    return $this->getResponse();
  }

  private function getVeranstalter()
  {
    return \Kufer\KuferTools\Veranstalter\Utils\VeranstalterUtils::getVeranstalterDozent();
  }

  private function getLeiterVonVeranstalter($veranstalter)
  {
    $dbwDozenten = new \DBWorkDozenten(1, true);
    $dbwBeziehung = new \DBWorkBeziehung(1, true);
    $beziehungen = $dbwBeziehung->getBeziehungenLeiterVonVeranstalter($veranstalter->id);
    $leiter = array();
    foreach ($beziehungen as $beziehung) {
      
      if ($beziehung->nr2 > 0) {
        $dozent = $dbwDozenten->getDozent($beziehung->nr2);
        $dozent->gueltig_von = $beziehung->gueltig_von; 
        $leiter[] = $dozent;
      }
    }

    return $leiter;
  }

  private function getVorsitzendeVonVeranstalter($veranstalter)
  {
    $dbwDozenten = new \DBWorkDozenten(1, true);
    $dbwBeziehung = new \DBWorkBeziehung(1, true);
    $beziehungen = $dbwBeziehung->getBeziehungenVorsitzendeVonVeranstalter($veranstalter->id);
    $vorsitzende = array();
    foreach ($beziehungen as $beziehung) {
      
      if ($beziehung->nr2 > 0) {
        $dozent = $dbwDozenten->getDozent($beziehung->nr2);
        $dozent->gueltig_von = $beziehung->gueltig_von; 
        $vorsitzende[] = $dozent;
      }
    }

    return $vorsitzende;
  }

  private function getMitarbeiterVonVeranstalter($veranstalter)
  {
    $dbwBeziehung = new \DBWorkBeziehung(1, true);
    $dnrsMitarbeiter = $dbwBeziehung->getMitarbeterDnrsVonVeranstalter($veranstalter->id);

    $dbwDozenten = new \DBWorkDozenten(1, true);
    $dbwDozenten->orderby = 'name';
    $dbwDozenten->orderby2 = 'vorname';

    if (count($dnrsMitarbeiter) == 0) {
      return array();
    }

    return $dbwDozenten->getDozentenByIDArray($dnrsMitarbeiter);
  }

  protected function getResponse()
  {
    $this->handleResponseStrategies();
    $this->response->veranstalter = $this->getVeranstalter();
    $this->response->leiter = $this->getLeiterVonVeranstalter($this->response->veranstalter);

    $this->response->vorsitzende = $this->getVorsitzendeVonVeranstalter($this->response->veranstalter);

    $this->response->mitarbeiter = $this->getMitarbeiterVonVeranstalter($this->response->veranstalter);

    return $this->response;
  }

  protected function getResponseStrategies()
  {
    return array(
      new \Kufer\KuferTools\Utils\ResponseStrategies\ResponseMitRahmen($this)
    );
  }
}

class UebersichtRequest
{
}

class UebersichtResponse extends \Kufer\KuferTools\Basis\UseCase\ToolResponse
{
  public $veranstalter;
  public $leiter = array();
  public $vorsitzende = array();
  public $mitarbeiter = array();
}