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

namespace Kufer\KuferTools\Hausmeister;

class ControllerFactory
{
  public function getController($pAction)
  {
    switch ($pAction) {
      default:
      case 'raumbelegung':
        return new Raumbelegung\RaumUebersicht\RaumUebersichtController();
      case 'showMarkieren':
        return new Raumbelegung\Markieren\RaumMarkierenController();
      case 'showFilter':
        return new Raumbelegung\ShowFilter\ShowFilterController();
      case 'setFilter':
        return new Raumbelegung\RaumUebersicht\RaumUebersichtSetFilterController();
      case 'medienuebersicht':
        return new Raumbelegung\MedienUebersicht\MedienController();

      case 'showHmDruckListen':
        return new Raumbelegung\PdfListen\Hausmeisterlisten\Dialog\ShowHmListenController();
      case 'showSettingsHmListen':
        return new Raumbelegung\PdfListen\Hausmeisterlisten\Einstellungen\ShowSettingsHmListenController();
      case 'printHmListen':
        return new Raumbelegung\PdfListen\Hausmeisterlisten\Ausgabe\PrintHmListenController();
      case 'printHmListenBySettings':
        return new Raumbelegung\PdfListen\Hausmeisterlisten\Ausgabe\PrintHmListenBySettingsController();
      case 'raumdetails':
        return new Raumbelegung\Raumdetails\RaumDetailsController();
      case 'reiterRaumTermine':
        return new Raumbelegung\Raumdetails\Detailsreiter\Termine\ReiterTermineController();
      case 'showFilterRaumTermine':
        return new Raumbelegung\Raumdetails\Detailsreiter\Termine\ShowFilterTermine\ShowFilterTermineController();
      case 'resetFilterRaumTermine': 
        return new Raumbelegung\Raumdetails\Detailsreiter\Termine\ResetFilterTermineController();
      case 'setFilterRaumTermine':
        return new Raumbelegung\Raumdetails\Detailsreiter\Termine\SetFilterTermineController();
      case 'reiterKurse':
        return new Raumbelegung\Raumdetails\Detailsreiter\Kurse\ReiterKurseController();
      case 'showFilterKurse':
        return new Raumbelegung\Raumdetails\Detailsreiter\Kurse\ShowFilterKurse\ShowFilterKurseController();
      case 'resetFilterKursdetails':
        return new Raumbelegung\Raumdetails\Detailsreiter\Kurse\ResetFilterKursdetailsController();
      case 'setFilterKursdetails':
        return new Raumbelegung\Raumdetails\Detailsreiter\Kurse\SetFilterKursdetailsController();
      case 'reiterRaumDetails':
        return new Raumbelegung\Raumdetails\Detailsreiter\RaumDetails\ReiterRaumDetailsController();
      case 'kursdetails':
        return new Raumbelegung\KursDetails\HmKursDetailsController();
      case 'reiterKursDetails':
        return new Raumbelegung\KursDetails\Detailsreiter\KursDetails\HmKursDetailsController();
      case 'info':
        return new Raumbelegung\KursDetails\Detailsreiter\Info\HmInfoController();

      case 'merkeKursDetailsReiter':
        return new \Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\MerkeReiter\MerkeReiterController(\ToolsAPI::TOOL_RAUMBELEGUNG_HM, 341);
      case 'merkeRaumDetailsReiter':
        return new \Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\MerkeReiter\MerkeReiterController(\ToolsAPI::TOOL_RAUMBELEGUNG_HM, 339);

      case 'reiterTermine':
      case 'resetFilterTermine':
        return new Raumbelegung\KursDetails\Detailsreiter\Termine\HmTermineController();
      case 'setFilterTermine':
        return new Raumbelegung\KursDetails\Detailsreiter\Termine\HmTermineSetFilterController();
      case 'showFilterTermine':
        return new Raumbelegung\KursDetails\Detailsreiter\Termine\ShowFilterTermine\HmShowFilterTermineController();
      case 'reiterDozenten':
        return new Raumbelegung\KursDetails\Detailsreiter\Dozenten\DozentenController();
      case 'reiterTeilnehmer':
        return new Raumbelegung\KursDetails\Detailsreiter\Teilnehmer\HmTeilnehmerController();
      case 'showFilterTeilnehmer':
        return new Raumbelegung\KursDetails\Detailsreiter\Teilnehmer\ShowFilterTeilnehmer\HmShowFilterTeilnehmerController();
        case 'reiterMaterial':
        return new Raumbelegung\KursDetails\Detailsreiter\Material\MaterialController();
      case 'setFilterTeilnehmer':
        return new Raumbelegung\KursDetails\Detailsreiter\Teilnehmer\HmTeilnehmerSetFilterController();
      case 'resetFilterTeilnehmer':
        return new Raumbelegung\KursDetails\Detailsreiter\Teilnehmer\HmTeilnehmerResetFilterController();
      case 'sammelEMail':
        return new Raumbelegung\KursDetails\Detailsreiter\Teilnehmer\SammelEMail\HmSammelEMailController();
      case 'sendSammelEMail':
        return new Raumbelegung\KursDetails\Detailsreiter\Teilnehmer\SammelEMail\HmSendSammelEMailController();

      case 'showTnListen':
        return new Raumbelegung\PdfListen\TnListen\ShowTnListen\HmShowTnListenController();
      case 'showSettingsTnListen':
        return new Raumbelegung\PdfListen\TnListen\ShowSettingsTnListen\HmShowSettingsTnListenController();
      case 'printTnListen':
        return new Raumbelegung\PdfListen\TnListen\PrintTnListen\HmPrintTnListenController();
      case 'printTnListenBySettings':
        return new Raumbelegung\PdfListen\TnListen\PrintTnListen\HmPrintTnListenBySettingsController();

      case 'raumGrafik':
        return new Raumbelegung\Raumdetails\RaumGrafik\RaumGrafikController();
      case 'belegungsplan':
        return new Raumbelegung\GebaeudeGrafik\GebaeudeGrafikController();
      case 'veranstaltungsplanung':
        return new Raumbelegung\Veranstaltungsplanung\VeranstaltungsplanungController();
      case 'sendVeranstaltungsplanung':
        return new Raumbelegung\Veranstaltungsplanung\SendVeranstaltungsplanungController();
      case 'stundenplan':
        return new Raumbelegung\Stundenplan\Dialog\StundenplanDialogController();
      case 'printStdplanGrafik':
        return new Raumbelegung\Stundenplan\Ausgabe\PrintStundenplanGrafikController();
      case 'druckQuartalsUebersicht':
        return new Raumbelegung\QuartalsUebersicht\QuartalsUebersichtPdfController();
    }
  }
}