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

class ComboboxFactory
{
  
  public static function getComboboxByColumn($column, $selectedValue = null, $pDataModul = null)
  {
    $datamodulName = StringOperations::strtolower($column->datamodul); 
    $fieldName = StringOperations::strtolower($column->fieldname); 

    if ($fieldName == 'geschlecht') {
      return new ComboboxGeschlecht($selectedValue);
    } elseif ($fieldName == 'geschlecht_anrede') {
      return new ComboboxGeschlechtAnrede($selectedValue);
    } elseif ($fieldName == 'name_titel_auswahl') {
      return new ComboboxPersonAnredetitel($datamodulName, $selectedValue, $pDataModul);
    } elseif ($datamodulName == 'kurstag' && $fieldName == 'ausfall') {
      if (\GetOperations::getVarValue('tool_id') == 3) { 
        return new ComboboxKurstagStatusTool3($selectedValue);
      } else {
        return new ComboboxKurstagStatus($selectedValue);
      }
    } elseif ($fieldName == 'semester') {
      if ($datamodulName == 'kursplanung') {
        return new ComboboxSemester4Kursplanung($selectedValue);
      } else {
        return new ComboboxSemester($selectedValue);
      }
    } elseif ($datamodulName == 'kursplanung' && $fieldName == 'semester_mit_zeitraum') {
      return new ComboboxSemesterMitZeitraum4Kursplanung($selectedValue);
    } elseif ($datamodulName == 'kurstag' && $fieldName == 'qualiid') {
      return new ComboboxQualiid($selectedValue);
    } elseif ($datamodulName == 'kurstag' && $fieldName == 'klassenbuchueok') {
      return new ComboboxUeGehalten($selectedValue);
    } elseif ($datamodulName === 'kurs2' && $fieldName === 'webinar_softwareid') {
      return new ComboboxKursOnlineSoftware($pDataModul);
    } elseif ($datamodulName === 'kurs2' && $fieldName === 'webinar') {
      return new ComboboxKursOnlineArt($pDataModul);
    } elseif ($datamodulName === 'kursplanung' && $fieldName === 'webinar') {
      return new ComboboxKursplanungOnlineArt($pDataModul);
    }
    
    elseif ($datamodulName == 'kurstag' && $fieldName == 'dnr') {
      return new ComboboxDozenten($selectedValue, $pDataModul->kurs);
    } elseif ($datamodulName == 'kursplanung' && $fieldName == 'doznr') {
      if (\GetOperations::getVarValue('tool_id') == 52) { 
        return new ComboboxDozenten4VeranstalterKursplanung($selectedValue, $pDataModul);
      } else {
        return new ComboboxDozenten4Kursplanung($selectedValue, $pDataModul);
      }
    } elseif ($datamodulName == 'kursplanung' && $fieldName == 'zielgruppe') {
      return new ComboboxZielgruppe($selectedValue, $pDataModul);
    } elseif ($datamodulName == 'belegung' && $fieldName == 'anmeldeart') {
      return new ComboboxAnmeldeart($selectedValue);
    } elseif ($datamodulName == 'belegung' && $fieldName == 'zahlart') {
      return new ComboboxZahlart($selectedValue);
    } elseif ($datamodulName == 'belegung' && $fieldName == 'status') {
      return new \Kufer\Web\Classes\Api\Combobox\ComboboxStatusBearbeitbar($selectedValue);
    } elseif ($datamodulName == 'kurs' && $fieldName == 'emailstatus') {
      return new \Kufer\Web\Classes\Api\Combobox\ComboboxStatus($selectedValue);
    } elseif ($datamodulName == 'teilnehmer' && $fieldName == 'erm_grund_und_proz') {
      return new ComboboxErmaessigung($selectedValue);
    } elseif ($datamodulName == 'visitenkartenweb' && $fieldName == 'nation') {
      return new ComboboxNation($selectedValue);
    } elseif ($datamodulName == 'kursplanung' && $fieldName == 'ma_planend_id') {
      return new \Kufer\Web\Classes\Api\Combobox\ComboboxMitarbeiter($selectedValue);
    } elseif ($datamodulName == 'kursplanung' && $fieldName == 'ma_planend_id_gefiltert_gruppen') {
      return new \Kufer\Web\Classes\Api\Combobox\ComboboxMitarbeiterGefiltertNachGruppen($selectedValue);
    } elseif (($datamodulName == 'teilnehmer' || $datamodulName == 'dozent')
      && ($fieldName == 'dse_unterschrieben_weg' || $fieldName == 'dse_widerrufen_weg')) {
      return new ComboboxDseUnterschriebenWiderrufenWeg($selectedValue);
    } elseif ($datamodulName == 'kursplanung' && $fieldName == 'fachb') {
      return new ComboboxFachbereich($selectedValue);
    } elseif ($datamodulName == 'teilnehmer' && $fieldName == 'newsl_erlaubt') {
      return new ComboboxNewslErlaubt($selectedValue);
    } elseif ($datamodulName == 'teilnehmer' && $fieldName == 'newsl_anlbearb') {
      return new ComboboxNewslAnlBearb($selectedValue);
    } elseif ($datamodulName == 'teilnehmer' && $fieldName == 'newsl_erlart') {
      return new ComboboxNewslErlArt($selectedValue);
    } elseif ($datamodulName == 'kurs' && $fieldName == 'dauer_select') {
      return new ComboboxKursDauerAuswahlfeld($selectedValue, $pDataModul);
    } elseif ($datamodulName == 'kursplanung' && $fieldName == 'kurstyp') {
      return new ComboboxKursTyp($selectedValue, $pDataModul);
    } elseif (($datamodulName == 'kursplanung' || $datamodulName == 'kurs') && $fieldName == 'kirchenbezirk') {
      return new ComboboxKirchenbezirk($selectedValue, $pDataModul);
    } elseif (($datamodulName == 'kursplanung' || $datamodulName == 'kurs') && $fieldName == 'kirchengemeinde') {
      return new ComboboxKirchengemeinde($selectedValue, $pDataModul);
    } elseif (($datamodulName == 'kursplanung' || $datamodulName == 'kurs') && $fieldName == 'kart_key') {
      return new ComboboxVeranstaltungsart($selectedValue, $pDataModul);
    } elseif ($datamodulName == 'kursplanung' && $fieldName == 'kzielg_key') {
      return new ComboboxZielgruppeKurs($selectedValue, $pDataModul);
    } elseif ($datamodulName == 'kurs' && $fieldName === 'kzielg_key') {
      return new ComboboxZielgruppeKurs($selectedValue, $pDataModul);
    } elseif ($datamodulName === 'kurs' && $fieldName === 'sprache') {
      return new ComboboxSprache($selectedValue);
    } elseif ($datamodulName === 'kursplanung' && $fieldName === 'kebstoff') {
      return new ComboboxKursplanungKEBStoff($pDataModul);
    } elseif ($datamodulName === 'teilnehmer' && $fieldName === 'ausbildung_ausbildungsschablone') {
      return new \Kufer\Web\Classes\Api\Combobox\ComboboxTeilnehmerAusbildung($pDataModul);
    } elseif ($datamodulName === 'kurstag' && $fieldName === 'bestuhlung') {
      return new \Kufer\Web\Classes\Api\Combobox\ComboboxKurstagBestuhlung($pDataModul);
    } elseif (DBWorkBASysSettings::isSalzburgBildungswerk() && $datamodulName === 'kursplanung' && $fieldName === 'freidef1') {
      return new \Kufer\Web\Classes\Api\Combobox\ComboboxJaNein($selectedValue, $pDataModul);
    }

    return null;
  }
}