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

namespace Kufer\KuferTools\Mitarbeiter\KursUebersicht;

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

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

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

        return new KursUebersicht\KursUebersichtResetFilterController();

      case 'deleteKursplanung':
       return new KursUebersicht\KursplanungLoeschenController();
      
      case 'sortierenDialog':
        return new SortierenDialog\SortierenDialogController();

     
      case 'kursdetails':
        return new KursDetails\MaKursDetailsController();
      case 'kursbearbeiten':
        return new KursDetails\KursBearbeiten\KursBearbeitenController();
      case 'kursBearbeitenAbsenden':
        return new KursDetails\KursBearbeiten\KursBearbeitenAbsendenController();
      case 'showFeedbackFormular':
        return new KursDetails\Feedback\FeedbackController();
      case 'sendFeedback':
        return new KursDetails\Feedback\SendFeedbackController();

      case 'setFilterTeilnehmer':
        return new Detailsreiter\Teilnehmer\TeilnehmerSetFilterController();
      case 'resetFilterTeilnehmer':
        return new Detailsreiter\Teilnehmer\TeilnehmerResetFilterController();

      case 'showTnListen':
        return new PdfListen\TnListen\ShowTnListen\MaShowTnListenController();
      case 'showSettingsTnListen':
        return new PdfListen\TnListen\ShowSettingsTnListen\MaShowSettingsTnListenController();
      case 'printTnListen':
        return new PdfListen\TnListen\PrintTnListen\MaPrintTnListenController();
      case 'printTnListenBySettings':
        return new PdfListen\TnListen\PrintTnListen\MaPrintTnListenBySettingsController();

      case 'merkeKursDetailsReiter':
        return new \Kufer\KuferTools\Basis\Kursdetails\DetailsReiter\MerkeReiter\MerkeReiterController(\ToolsAPI::TOOL_KURSPLANUNG_MA, 377);
      case 'info':
        return new Detailsreiter\Info\MaInfoController();
      case 'reiterKursDetails':
        return new Detailsreiter\KursDetails\MaKursDetailsController();

      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 'terminbearbeiten':
        return new Detailsreiter\Termine\TerminBearbeiten\TerminBearbeitenFormularController();
      case 'terminbearbeitenabsenden':
        return new Detailsreiter\Termine\TerminBearbeiten\TerminBearbeitenAbsendenController();
      case 'kursAnpassenNachTerminBearbeiten':
        return new Detailsreiter\Termine\TerminBearbeiten\KursAnpassenNachTerminBearbeiten\KursAnpassenNachTerminBearbeitenController();
      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 'terminhinzufuegen':
        return new Detailsreiter\Termine\TerminHinzufuegen\TerminHinzufuegenFormularController();
      case 'terminhinzufuegenabsenden':
        return new Detailsreiter\Termine\TerminHinzufuegen\TerminHinzufuegenAbsendenController();
      case 'termineloeschen':
        return new Detailsreiter\Termine\TermineLoeschen\TermineLoeschenController();

      case 'reiterTeilnehmer':
        
        if (\SessionOperations::isCurrentUserMitveranstalter() && Detailsreiter\Teilnehmer\Mitveranstalter\TeilnehmerController::istKursEineGrossveranstaltung()) {
          return new Detailsreiter\Teilnehmer\Mitveranstalter\TeilnehmerController();
        } else {
          return new Detailsreiter\Teilnehmer\TeilnehmerController();
        }
        
      case 'abmeldenDialog':
        return new Detailsreiter\Teilnehmer\AbmeldenDialog\AbmeldenDialogController();
      case 'handleAbmedlung':
        return new Detailsreiter\Teilnehmer\HandleAbmeldung\HandleAbmeldungController();

      
      case 'barzahlenDialog':
        return new Detailsreiter\Teilnehmer\HandleBarzahlung\BarzahlungDialogController();
      case 'handleBarzahlung':
        return new Detailsreiter\Teilnehmer\HandleBarzahlung\HandleBarzahlungController();
      case 'belegungBearbeitenDialog':
        return new Detailsreiter\Teilnehmer\BelegungBearbeitenDialog\BelegungBearbeitenDialogController();
      case 'handleBelegungBearbeiten':
        return new Detailsreiter\Teilnehmer\HandleBelegungBearbeiten\HandleBelegungBearbeitenController();
      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 'submitAnmAkzeptieren':
        if (\SessionOperations::isCurrentUserMitveranstalter()) {
          return new Detailsreiter\Teilnehmer\HandleAnmeldungByMv\AnmAkzeptieren\AnmAkzeptierenController();
        }
        
      case 'submitAnmAblehnen':
        if (\SessionOperations::isCurrentUserMitveranstalter()) {
          return new Detailsreiter\Teilnehmer\HandleAnmeldungByMv\AnmAblehnen\AnmAblehnenController();
        }
        
      case 'submitAnmWarteliste':
        if (\SessionOperations::isCurrentUserMitveranstalter()) {
          return new Detailsreiter\Teilnehmer\HandleAnmeldungByMv\AnmWarteliste\AnmWartelisteController();
        }
        
      case 'saveTnMitveranstalter':
        
        if (\SessionOperations::isCurrentUserMitveranstalter() && Detailsreiter\Teilnehmer\Mitveranstalter\TeilnehmerController::istKursEineGrossveranstaltung()) {
          return new Detailsreiter\Teilnehmer\Mitveranstalter\SaveTeilnehmerController();
        } else {
          return new KursDetails\MaKursDetailsController(); 
        }
        
      case 'reiterDozenten':
        return new Detailsreiter\Dozenten\DozentenController();

      case 'reiterDownloads':
        return new Detailsreiter\Downloads\DownloadsController();
      case 'reiterEMails':
        return new Detailsreiter\EMails\EMailsController();
      case 'emailAnzeigen':
        return new Detailsreiter\EMails\Anzeigen\EMailAnzeigenController();
      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 'reiterHonorar':
        
        if (\DBWorkBASysSettings::isHammelBurgKissingen()) {
          return new Detailsreiter\Honorar\HammelburgVhs\HonorarHammelburgController();
        }

        return new Detailsreiter\Honorar\HonorarController();
      case 'vertragdruck':

        return new Detailsreiter\Honorar\HammelburgVhs\VertragPdf\VertragDruckenController();


      case 'reiterMaterial':
        return new Detailsreiter\Material\MaterialController();
      case 'showFilterKursUebersicht':
        return new ShowFilterKursUebersicht\ShowFilterKursUebersichtController();
      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 'showFilterTeilnehmer':
        return new Detailsreiter\Teilnehmer\ShowFilterTeilnehmer\ShowFilterTeilnehmerController();
      case 'bescheinigung':
        return new Detailsreiter\Teilnehmer\Bescheinigung\BescheinigungController();
      case 'anmeldebestaetigung':
        return new Detailsreiter\Teilnehmer\AnmeldeBestaetigungPdf\AnmeldeBestaetigungDruckenController();
      case 'smsKursort':
        return new Detailsreiter\Termine\SmsKursort\SmsKursortController();
      case 'sendSmsKursort':
        return new Detailsreiter\Termine\SmsKursort\SendSmsKursortController();

      case 'raumplanung':
        return new Raumplanung\RaumplanungController();
      case 'kurstageVorschau':
        return new Raumplanung\KurstageVorschauController();
      case 'kurstageAnlegen':
        return new Raumplanung\KurstageAnlegenController();

     
      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_KURSPLANUNG_MA, 242, '242.0.4');
      case 'sendSammelSms':
        return new \Kufer\KuferTools\Ausgaben\SammelSms\AnTeilnehmer\SendSammelSmsController(\ToolsAPI::TOOL_KURSPLANUNG_MA, 242, '242.0.4');


       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_KURSPLANUNG_MA, 245, '245.0.5');
      case 'dozSendSammelSms':
       return new \Kufer\KuferTools\Ausgaben\SammelSms\AnDozenten\SendSammelSmsController(\ToolsAPI::TOOL_KURSPLANUNG_MA, 245, '245.0.5');

     
     
     
     
     
     
     
      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 'showMarkieren':
        return new Markieren\KursMarkierenController();

      
      
      case 'validate':
        return new \Kufer\KuferTools\Basis\ValidateBankData\ValidateBankDataController(\ToolsAPI::TOOL_KURSPLANUNG_MA, 29);

      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 'showDruckListen':
        return new PdfListen\KurseListen\ShowKurseListen\ShowKurseListenController();

      case 'showSettingsDruckListen':
        return new PdfListen\KurseListen\ShowSettingsKurseListen\ShowSettingsKurseListenController();

      case 'sendVhsInfoDruckListen':
        return new PdfListen\KurseListen\SendVhsInfoKurseListen\SendVhsInfoKurseListenController();

      case 'printDruckListen':
        
        return new PdfListen\KurseListen\PrintKurseListen\PrintKurseListenController();
      case 'printDruckListenBySettings':
        
        return new PdfListen\KurseListen\PrintKurseListen\PrintKurseListenBySettingsController();
      case 'belegungenSammelBearbeiten':
        return new \Kufer\Web\KuferTools\Mitarbeiter\KursUebersicht\Detailsreiter\Teilnehmer\SammelEinzelBearbeitung\SammelEinzelBearbeitungFormularController();
      case 'handleBelegungenSammelBearbeiten':
        return new \Kufer\Web\KuferTools\Mitarbeiter\KursUebersicht\Detailsreiter\Teilnehmer\SammelEinzelBearbeitung\HandleSammelEinzelBearbeitungController();
      case 'belegungenExportTable':
        return new \Kufer\Web\KuferTools\Mitarbeiter\KursUebersicht\Detailsreiter\Teilnehmer\ExportTable\TeilnehmerExportTableController();
      case 'printTNBestaetigung':
        return new \Kufer\Web\KuferTools\Mitarbeiter\KursUebersicht\TNBestaetigung\TNBestaetigungController();
    } 
  }

  
}