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

namespace Kufer\KuferTools\Allgemein\Dashboard\Dashboard;

use Kufer\KuferTools\Allgemein\Dashboard\Utils\DashboardEintraege as DashboardEintraege;

class DashboardUseCase extends \Kufer\KuferTools\Basis\Uebersicht\UebersichtUseCase
{
  public function __construct($request)
  {
    parent::__construct($request, new DashboardResponse());
  }

  public static function getToolId()
  {
    return 44;
  }

  public static function getToolSectionId()
  {
    return 533;
  }

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

  protected function getResponse()
  {
    $this->response = parent::getResponse();
    $this->handleResponseStrategies();
    $this->response->datamodule = $this->getDashboardEintraege();
    $this->response->ueberschrift = '';

    return $this->response;
  }

  private function getDashboardEintraege()
  {
    $eintraege = array();

    if (DashboardEintraege\DashboardZsaOffeneAnmeldungen::canBeUsed()) {
      $eintraege[] = new DashboardEintraege\DashboardZsaOffeneAnmeldungen();
    }
    if (DashboardEintraege\DashboardZsaOffeneRegistrierungen::canBeUsed()) {
      $eintraege[] = new DashboardEintraege\DashboardZsaOffeneRegistrierungen();
    }
    if (DashboardEintraege\DashboardHmMedienUebersicht::canBeUsed()) {
      $eintraege[] = new DashboardEintraege\DashboardHmMedienUebersicht();
    }
    if (DashboardEintraege\DashboardDozKurstageDemnaechst::canBeUsed()) {
      $eintraege[] = new DashboardEintraege\DashboardDozKurstageDemnaechst();
    }
    if (DashboardEintraege\DashboardDozKursanmeldungen::canBeUsed()) {
      $eintraege[] = new DashboardEintraege\DashboardDozKursanmeldungen();
    }
    if (DashboardEintraege\DashboardTnKurstageDemnaechst::canBeUsed()) {
      $eintraege[] = new DashboardEintraege\DashboardTnKurstageDemnaechst();
    }
    if (DashboardEintraege\DashboardMaKursanmeldungen::canBeUsed()) {
      $eintraege[] = new DashboardEintraege\DashboardMaKursanmeldungen();
    }

    return $eintraege;
  }

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

  protected function getAlleIds()
  {
    return array();
  }

  protected function getDatamodulOnCurrentPage()
  {
    return array();
  }

  protected function getUeberschrift()
  {
    return '';
  }
}

class DashboardRequest
{
}

class DashboardResponse extends \Kufer\KuferTools\Basis\Uebersicht\UebersichtResponse
{
  public $user;
  public $menuPunkte = array();
  public $datamodule;
}