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

namespace Kufer\KuferTools\Veranstalter\KursUebersicht;

class ControllerFactory
{
  
  public function getController($pAction)
  {
    switch ($pAction) {
      default:
      case 'kursuebersicht':
      case 'kursUebersichtSortieren':
        if (\DBWorkBASysSettings::isSalzburgBildungswerk()) {
          return new KursUebersicht\KursUebersichtMitKursplanungController();
        }

        return new KursUebersicht\KursUebersichtController();
      case 'setFilterKursUebersicht':
        if (\DBWorkBASysSettings::isSalzburgBildungswerk()) {
          return new KursUebersicht\KursUebersichtMitKursplanungSetFilterController();
        }

        return new KursUebersicht\KursUebersichtSetFilterController();
      case 'resetFilterKursUebersicht':
        if (\DBWorkBASysSettings::isSalzburgBildungswerk()) {
          return new KursUebersicht\KursUebersichtMitKursplanungResetFilterController();
        }

        return new KursUebersicht\KursUebersichtResetFilterController();
      case 'deleteKursplanung':
       return new KursUebersicht\KursplanungLoeschenController();
      case 'showFilterKursUebersicht':
        return new ShowFilterKursUebersicht\ShowFilterKursUebersichtController();
      case 'sortierenDialog':
        return new SortierenDialog\SortierenDialogController();
      case 'kursdetails':
        return new KursDetails\KursDetailsController();
      case 'merkeKursDetailsReiter':
        return new \Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\MerkeReiter\MerkeReiterController(\ToolsAPI::TOOL_KURSUEBERSICHT_VA, 632);
      case 'kursbearbeiten':
        return new KursDetails\KursBearbeiten\KursBearbeitenController();
      case 'kursBearbeitenAbsenden':
        return new KursDetails\KursBearbeiten\KursBearbeitenAbsendenController();
      case 'reiterKursDetails':
        return new Detailsreiter\KursDetails\KursDetailsController();
      case 'info':
        return new Detailsreiter\Info\InfoController();

      case 'reiterTermine':
      case 'resetFilterTermine':
      
        return new Detailsreiter\Termine\TermineController();
      case 'setFilterTermine':
        return new Detailsreiter\Termine\TermineSetFilterController();
      case 'showFilterTermine':
        return new Detailsreiter\Termine\ShowFilterTermine\ShowFilterTermineController();
      case 'terminhinzufuegen':
        return new Detailsreiter\Termine\TerminHinzufuegen\TerminHinzufuegenFormularController();
      case 'terminhinzufuegenabsenden':
        return new Detailsreiter\Termine\TerminHinzufuegen\TerminHinzufuegenAbsendenController();
      case 'terminbearbeiten':
        return new Detailsreiter\Termine\TerminBearbeiten\TerminBearbeitenFormularController();
      case 'terminbearbeitenabsenden':
        return new Detailsreiter\Termine\TerminBearbeiten\TerminBearbeitenAbsendenController();
      case 'termineSammelBearbeiten':
        return new Detailsreiter\Termine\TermineSammelAenderung\TermineSammelAenderungController();
      case 'handleTermineSammelBearbeiten':
        return new Detailsreiter\Termine\TermineSammelAenderung\HandleTermineSammelAenderung\HandleTermineSammelAenderungController();
      case 'terminkopieren':
        return new Detailsreiter\Termine\TerminKopieren\TerminKopierenFormularController();
      case 'termineloeschen':
        return new Detailsreiter\Termine\TermineLoeschen\TermineLoeschenController();
      case 'kursAnpassenNachTerminBearbeiten':
        return new Detailsreiter\Termine\TerminBearbeiten\KursAnpassenNachTerminBearbeiten\KursAnpassenNachTerminBearbeitenController();

      case 'smsKursort':
        return new Detailsreiter\Termine\SmsKursort\SmsKursortController();
      case 'sendSmsKursort':
        return new Detailsreiter\Termine\SmsKursort\SendSmsKursortController();

      case 'reiterTeilnehmer':
        return new Detailsreiter\Teilnehmer\TeilnehmerController();
      case 'showFilterTeilnehmer':
        return new Detailsreiter\Teilnehmer\ShowFilterTeilnehmer\ShowFilterTeilnehmerController();
      case 'setFilterTeilnehmer':
        return new Detailsreiter\Teilnehmer\TeilnehmerSetFilterController();
      case 'resetFilterTeilnehmer':
        return new Detailsreiter\Teilnehmer\TeilnehmerResetFilterController();
      case 'bescheinigung':
        return new Detailsreiter\Teilnehmer\Bescheinigung\BescheinigungController();
      case 'sammelEMail':
        return new Detailsreiter\Teilnehmer\SammelEMail\SammelEMailController();
      case 'sammelEMailNewKurstage':
        return new Detailsreiter\Teilnehmer\SammelEMail\SammelEMailNeueKurstageController();
      case 'sammelEMailChangedKurstage':
        return new Detailsreiter\Teilnehmer\SammelEMail\SammelEMailGeaenderteKurstageController();
      case 'sammelEMailDeletedKurstage':
        return new Detailsreiter\Teilnehmer\SammelEMail\SammelEMailGeloeschteKurstageController();
      case 'sendSammelEMail':
        return new Detailsreiter\Teilnehmer\SammelEMail\SendSammelEMailController();
      case 'sammelSms':
        return new \Kufer\KuferTools\Ausgaben\SammelSms\AnTeilnehmer\SammelSmsController(\ToolsAPI::TOOL_KURSUEBERSICHT_VA, 630, '630.0.4');
      case 'sendSammelSms':
        return new \Kufer\KuferTools\Ausgaben\SammelSms\AnTeilnehmer\SendSammelSmsController(\ToolsAPI::TOOL_KURSUEBERSICHT_VA, 630, '630.0.4');
      case 'belegungBearbeitenDialog':
        return new Detailsreiter\Teilnehmer\BelegungBearbeitenDialog\BelegungBearbeitenDialogController();
      case 'handleBelegungBearbeiten':
        return new Detailsreiter\Teilnehmer\HandleBelegungBearbeiten\HandleBelegungBearbeitenController();
      case 'abmeldenDialog':
        return new Detailsreiter\Teilnehmer\AbmeldenDialog\AbmeldenDialogController();
      case 'handleAbmedlung':
        return new Detailsreiter\Teilnehmer\HandleAbmeldung\HandleAbmeldungController();
      case 'nachlassdialog':
        return new Detailsreiter\Teilnehmer\NachlassDialog\NachlassDialogController();
      case 'handleNachlassBearbeiten':
        return new Detailsreiter\Teilnehmer\HandleNachlassBearbeiten\HandleNachlassBearbeitenController();
      case 'handleTnUmOrWeitermelden':
        return new Detailsreiter\Teilnehmer\HandleTnUmOrWeitermelden\HandleTnUmOrWeitermeldenController();
      case 'handleTnUmmeldung':
        return new Detailsreiter\Teilnehmer\HandleTnUmmeldung\HandleTnUmmeldungController();
      case 'handleTnWeitermeldung':
        return new Detailsreiter\Teilnehmer\HandleTnWeitermeldung\HandleTnWeitermeldungController();

      case 'reiterHonorar':
        return new Detailsreiter\Honorar\HonorarController();
      case 'honAddDozentDialog':
        return new Detailsreiter\Honorar\AddDozent\AddDozentDialogController();
      case 'addDozentDataTable':
        return new Detailsreiter\Honorar\AddDozent\AddDozentDataTableController();
      case 'addDozent':
        return new Detailsreiter\Honorar\AddDozent\AddDozentController();
      case 'newDozentDialog':
        return new Detailsreiter\Honorar\AddDozent\NewDozentDialogController();
      case 'newDozent':
        return new Detailsreiter\Honorar\AddDozent\NewDozentController();
      case 'dozentDelete':
        return new Detailsreiter\Honorar\DeleteDozent\DeleteDozentController();
      case 'dozentenHonorarDialog':
        return new Detailsreiter\Honorar\DozentenHonorar\DozHonorarDialogController();
      case 'dozentenHonorarAbsenden':
        return new Detailsreiter\Honorar\DozentenHonorar\DozHonorarAbsendenController();
      case 'dozentenVertragDialog':
        return new Detailsreiter\Honorar\DozentenVertrag\DozVertragDialogController();
      case 'dozentenVertragAbsenden':
        return new Detailsreiter\Honorar\DozentenVertrag\DozVertragAbsendenController();

      case 'reiterDozenten':
        return new Detailsreiter\Dozenten\DozentenController();
       case 'dozSammelEMail':
        return new Detailsreiter\Dozenten\SammelEMail\SammelEMailController();
      case 'dozSendSammelEMail':
        return new Detailsreiter\Dozenten\SammelEMail\SendSammelEMailController();
      case 'dozSammelSms':
        return new \Kufer\KuferTools\Ausgaben\SammelSms\AnDozenten\SammelSmsController(\ToolsAPI::TOOL_KURSUEBERSICHT_VA, 624, '624.0.5');
      case 'dozSendSammelSms':
       return new \Kufer\KuferTools\Ausgaben\SammelSms\AnDozenten\SendSammelSmsController(\ToolsAPI::TOOL_KURSUEBERSICHT_VA, 624, '624.0.5');

      case 'reiterDownloads':
        return new Detailsreiter\Downloads\DownloadsController();
      case 'upload':
        return new Detailsreiter\Downloads\Upload\UploadFormularController();
      case 'doUpload':
        return new Detailsreiter\Downloads\Upload\DoUploadController();
      case 'downloadZuWeitereKurse':
        return new Detailsreiter\Downloads\DownloadZuWeitereKurse\DownloadZuWeitereKurseFormularController();
      case 'downloadZuWeitereKurseSubmit':
        return new Detailsreiter\Downloads\DownloadZuWeitereKurse\DownloadZuWeitereKurseDurchfuehrenController();
      case 'bearbeiteDoku':
        return new Detailsreiter\Downloads\BearbeiteDoku\BearbeiteDokuFormularController();
      case 'bearbeiteDokuSubmit':
        return new Detailsreiter\Downloads\BearbeiteDoku\BearbeiteDokuSubmitController();
      case 'deleteDoku':
        return new Detailsreiter\Downloads\DeleteDoku\DeleteDokuController();

      case 'reiterFotos':
        return new Detailsreiter\Fotos\FotosController();

      case 'reiterMaterial':
        return new Detailsreiter\Material\MaterialController();

      case 'showTnListen':
        return new PdfListen\TnListen\ShowTnListen\ShowTnListenController();
      case 'showSettingsTnListen':
        return new PdfListen\TnListen\ShowSettingsTnListen\ShowSettingsTnListenController();
      case 'printTnListen':
        return new PdfListen\TnListen\PrintTnListen\PrintTnListenController();
      case 'printTnListenBySettings':
        return new PdfListen\TnListen\PrintTnListen\PrintTnListenBySettingsController();
      case 'showMarkieren':
        return new Markieren\KursMarkierenController();

      case 'showFeedbackFormular':
        return new KursDetails\Feedback\FeedbackController();
      case 'sendFeedback':
        return new KursDetails\Feedback\SendFeedbackController();

      case 'anwesenheiten':
        return new Anwesenheiten\AnwesenheitenController();
      case 'showFilterAnwesenheiten':
        return new Anwesenheiten\ShowFilterAnwesenheiten\ShowFilterAnwesenheitenController();
      case 'setFilterAnwesenheiten':
        return new Anwesenheiten\AnwesenheitenSetFilterController();
      case 'resetFilterAnwesenheiten':
        return new Anwesenheiten\AnwesenheitenResetFilterController();
      case 'anwesenheitenSpeichern':
        return new Anwesenheiten\AnwSpeichernController();
      case 'validate':
        return new \Kufer\KuferTools\Basis\ValidateBankData\ValidateBankDataController(\ToolsAPI::TOOL_KURSUEBERSICHT_VA, 626);

      case 'kursausfallSetzen':
        return new KursDetails\KursausfallSetzen\KursausfallSetzenDialogController();
      case 'kursausfallSetzenAbsenden':
        return new KursDetails\KursausfallSetzen\KursausfallSetzenAbsendenController();
      case 'icsAuswahl':
        return new Ics\IcsAuswahlController();
      case 'icsKalender':
        return new Ics\IcsKalenderController();
      case 'belegungenSammelBearbeiten':
        return new \Kufer\Web\KuferTools\Veranstalter\KursUebersicht\Detailsreiter\Teilnehmer\SammelEinzelBearbeitung\SammelEinzelBearbeitungFormularController();
      case 'handleBelegungenSammelBearbeiten':
        return new \Kufer\Web\KuferTools\Veranstalter\KursUebersicht\Detailsreiter\Teilnehmer\SammelEinzelBearbeitung\HandleSammelEinzelBearbeitungController();
      case 'belegungenExportTable':
        return new \Kufer\Web\KuferTools\Veranstalter\KursUebersicht\Detailsreiter\Teilnehmer\ExportTable\TeilnehmerExportTableController();
      case 'printTNBestaetigung':
        return new \Kufer\Web\KuferTools\Veranstalter\KursUebersicht\TNBestaetigung\TNBestaetigungController();
    }
  }
}