<?php
/**
 * @copyright (c) Kufer Software GmbH, Oderstraße 7, D-84453 Mühldorf
 */

namespace Kufer\Web\KuferTools\Firma\KursUebersicht;

class ControllerFactory
{
  public function getController($pAction)
  {
    switch ($pAction) {
      default:
      case 'kursuebersicht':
        return new KursUebersicht\KursUebersichtController();
      case 'showFilterKursUebersicht':
        return new KursUebersicht\ShowFilterKursUebersicht\ShowFilterKursUebersichtController();
      case 'setFilterKursUebersicht':
        return new KursUebersicht\KursUebersichtSetFilterController();
      case 'resetFilterKursUebersicht':
        return new KursUebersicht\KursUebersichtResetFilterController();
      case 'kursdetails':
        return new KursDetails\KursDetailsController();
      case 'merkeKursDetailsReiter':
        return new \Kufer\Web\KuferTools\Basis\Kursdetails\Detailsreiter\MerkeReiter\MerkeReiterController(\ToolsAPI::TOOL_KURSUEBERSICHT_FA, 336);
      case 'reiterBelegungsDetails':
        return new Detailsreiter\BelegungsDetails\BelegungsDetailsController();
      case 'reiterKursDetails':
        return new Detailsreiter\KursDetails\KursDetailsController();
      case 'info':
        return new Detailsreiter\Info\InfoController();
      case 'reiterTermine':
      case 'resetFilterTermine': 
        return new Detailsreiter\Termine\TermineController();
      case 'showFilterTermine':
        return new Detailsreiter\Termine\ShowFilterTermine\ShowFilterTermineController();
      case 'setFilterTermine':
        return new Detailsreiter\Termine\TermineSetFilterController();
      case 'reiterDownloads':
        return new Detailsreiter\Downloads\DownloadsController();

      case 'reiterFotos':
        return new Detailsreiter\Fotos\FotosController();
      case 'reiterJournal':
      case 'resetFilterJournal':
        return new Detailsreiter\Journal\JournalController();
      case 'showFilterJournal':
        return new Detailsreiter\Journal\ShowFilterJournal\ShowFilterJournalController();
      case 'setFilterJournal':
        return new Detailsreiter\Journal\SetFilterJournalController();

      case 'showFeedbackFormular':
        return new Detailsreiter\Feedback\FeedbackFormularController();
      case 'sendFeedback':
        return new Detailsreiter\Feedback\SendFeedbackController();
      case 'infoandoz':
        return new Detailsreiter\InfoAnDoz\InfoAnDozController();
      case 'sendInfoandoz':
        return new Detailsreiter\InfoAnDoz\SendInfoAnDozController();
      case 'abmeldung':
        return new Detailsreiter\Storno\StornoController();
      case 'handleStorno':
        return new Detailsreiter\Storno\HandleStornoController();
      case 'icsAuswahl':
        return new Ics\IcsAuswahlController();
      case 'icsKalender':
        return new Ics\IcsKalenderController();
      case 'terminplan':
        return new Terminplan\TerminplanController();
      case 'druckTerminplan':
        return new Terminplan\DruckTerminplanController();

      case 'anwesenheiten':
        return new KursDetails\Anwesenheiten\AnwesenheitenController();
      case 'showFilterAnwesenheiten':
        return new KursDetails\Anwesenheiten\ShowFilterAnwesenheiten\ShowFilterAnwesenheitenController();
      case 'setFilterAnwesenheiten':
        return new KursDetails\Anwesenheiten\AnwesenheitenSetFilterController();
      case 'resetFilterAnwesenheiten':
        return new KursDetails\Anwesenheiten\AnwesenheitenResetFilterController();

      case 'alletermine':
        return new AlleTermine\AlleTermineController();
      case 'termineuebersicht':
        return new TermineUebersicht\TermineUebersichtController();
      case 'setFilterTermineUebersicht':
        return new TermineUebersicht\SetFilterTermineUebersichtController();

      case 'notenMa':
        return new KursUebersicht\MitarbeiterNoten\MitarbeiterNotenController();
      case 'showTerminStornierenDialog':
        return new Detailsreiter\Termine\TerminStornierenDialog\TerminStornierenDialogController();
      case 'terminStornierenAbsenden':
        return new Detailsreiter\Termine\TerminStornierenDialog\TerminStornierenAbsendenController();

      case 'showTerminVerlaengernDialog':
        return new Detailsreiter\Termine\TerminVerlaengernDialog\TerminVerlaengernDialogController();
      case 'showTerminVerlaengernAbweichendeKurstageDialog':
        return new Detailsreiter\Termine\TerminVerlaengernDialog\AbweichendeKurstage\TerminVerlaengernDialogController();
      case 'terminVerlaengernAbsenden':
        return new Detailsreiter\Termine\TerminVerlaengernDialog\TerminVerlaengernAbsendenController();
      case 'terminVerlaengernAbsendenKontrolle':
        return new Detailsreiter\Termine\TerminVerlaengernDialog\Kontrolle\TerminVerlaengernAbsendenKontrolleController();
      case 'terminVerlaengernWunschAbsenden':
        return new Detailsreiter\Termine\TerminVerlaengernDialog\Wunsch\TerminVerlaengernAbsendenController();
      case 'reiterDokumente':
        return new Detailsreiter\Dokumente\DokumenteController();
      case 'dokumenteDownload':
        return new Detailsreiter\Dokumente\DokumenteDownload\DokumenteDownloadController();
      case 'dokumenteUploadFormular':
        return new Detailsreiter\Dokumente\DokumenteUpload\DokumenteUploadFormularController();
      case 'dokumenteUpload':
        return new Detailsreiter\Dokumente\DokumenteUpload\DokumenteUploadController();

      case 'setFilterTeilnehmer':
        return new Detailsreiter\Teilnehmer\TeilnehmerSetFilterController();
      case 'resetFilterTeilnehmer':
        return new Detailsreiter\Teilnehmer\TeilnehmerResetFilterController();
      case 'showFilterTeilnehmer':
        return new Detailsreiter\Teilnehmer\ShowFilterTeilnehmer\ShowFilterTeilnehmerController();
      case 'reiterTeilnehmer':
        return new Detailsreiter\Teilnehmer\TeilnehmerController();
      case 'sammelEMail':
        return new Detailsreiter\Teilnehmer\SammelEMail\SammelEMailController();
      case 'sendSammelEMail':
        return new Detailsreiter\Teilnehmer\SammelEMail\SendSammelEMailController();
        
      case 'reiterAnmelden':
        return new Detailsreiter\Anmeldung\AnmeldungController();
      case 'reiterAnmeldenSubmitForm':
        return new Detailsreiter\Anmeldung\AnmeldungAbsendenController();
    }
  }
}