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

namespace Kufer\Web\KuferTools\Basis\Button;

class ButtonFactory
{
  
  public function getPrintSymbolButton($pBeschriftung, $pAction, $pLink = '', $pTitle = '')
  {
    return new HtmlButton($pBeschriftung, $pAction, $pLink, 'print', $pTitle);
  }

  
  public function getEnvelopeSymbolButton($pBeschriftung, $pAction, $pLink = '', $pTitle = '')
  {
    return new HtmlButton($pBeschriftung, $pAction, $pLink, 'envelope', $pTitle);
  }

  
  public function getCalendarSymbolButton($pBeschriftung, $pAction, $pLink = '', $pTitle = '')
  {
    return new HtmlButton($pBeschriftung, $pAction, $pLink, 'calendar', $pTitle);
  }

  public function getTeilnehmerPdfListenButton($beschriftung = 'Teilnehmer', $action = 'tnListenDruckButton', $link = '')
  {
    return new HtmlButton($beschriftung, $action, $link, 'print', 'Druck von Teilnehmerlisten');
  }

  public function getKursPdfListenButton($beschriftung = 'Kurse', $action = 'listenDruckButton')
  {
    return new HtmlButton($beschriftung, $action, '', 'print', 'Druck von Listen');
  }

  public function getGrafikPdfListenButton($beschriftung = 'Grafiken', $action = 'grafikenDruckButton')
  {
    return new HtmlButton($beschriftung, $action, '', 'print', 'Druck von Grafiken');
  }

  public function getHonorarPdfListenButton($beschriftung = 'Honorar', $action = 'honorarDruckButton')
  {
    return new HtmlButton($beschriftung, $action, '', 'print', 'Druck von Honorardaten');
  }

  public function getVertragPdfListenButton($beschriftung = 'Honorar', $action = 'vertraegeDruckButton')
  {
    return new HtmlButton($beschriftung, $action, '', 'print', 'Druck von Verträgen');
  }

  public function getVertragsformularButton($beschriftung = 'Vertragsformular', $class = 'vertragsformularButton')
  {
    return new HtmlButton($beschriftung, $class, '', 'print', 'Druck des Vertagsformular');
  }

  public function getVertragsDruckButton($beschriftung = 'Vertrag drucken', $action = 'vertragDruck', $pTitle = 'Vertrag drucken')
  {
    return new HtmlButton($beschriftung, $action, '', 'print', $pTitle);
  }

  public function getFinanzamtPdfButton($toolId, $beschriftung = 'Finanzamt', $action = 'finanzamtDruckButton')
  {
    
    $link = 'index.php?tool_id=' . $toolId . '&action=printHonorarListen&liste=FinanzamtVorlage';

    return new HtmlButton($beschriftung, $action, $link, 'print', 'Finanzamts-Mitteilung ausdrucken', '_blank');
  }

  public function getHausmeisterPdfListenButton($beschriftung = 'Hausmeisterlisten', $action = 'hmdruckliste')
  {
    return new HtmlButton($beschriftung, $action, '', 'print', 'Druck der Hausmeisterlisten');
  }

  public function getTermineIcsButton($beschriftung = 'Termine', $action = 'terminenachoutlooklink', $link = '')
  {
    return new HtmlButton($beschriftung, $action, $link, 'download', 'Termine nach Outlook');
  }

  public function getMarkierenButton($beschriftung = 'Markieren', $action = 'markieren')
  {
    return new HtmlButton($beschriftung, $action, '', 'check-square-o', $beschriftung);
  }

  public function getSortierenButton($beschriftung = 'Sortieren', $action = 'sortButton')
  {
    return new HtmlButton($beschriftung, $action, '', 'sort', 'Sortierung der Kurse');
  }

  public function getMarkierungenEntfernenButton($beschriftung = 'Markierungen entfernen', $action = 'keinenMarkieren_reiter')
  {
    return new HtmlButton($beschriftung, $action, '', 'square-o', 'Markierungen entfernen');
  }

  public function getMaDozFeedbackauswertungButton(
    $toolId,
    $referrer = '',
    $referrerLabel = '',
    $beschriftung = 'Feedbackauswertung für Dozenten',
    $action = 'MaDozFeedbackauswertungenUebersicht',
    $pTitle = 'Feedbackauswertung für Dozenten'
  ) {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action;
    if ($referrer !== '' && $referrerLabel !== '') {
      $link .= '&referrer=' . urlencode($referrer);
      $link .= '&referrerLabel=' . urlencode(($referrerLabel));
    }

    return new HtmlButton($beschriftung, $action, $link, 'list-alt', $pTitle);
  }

  public function getMaTNFeedbackauswertungButton(
    $toolId,
    $referrer = '',
    $referrerLabel = '',
    $beschriftung = 'Feedbackauswertung für Teilnehmer',
    $action = 'MaTNfeedbackauswertungenUebersicht',
    $pTitle = 'Feedbackauswertung für Teilnehmer'
  ) {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action;
    if ($referrer !== '' && $referrerLabel !== '') {
      $link .= '&referrer=' . urlencode($referrer);
      $link .= '&referrerLabel=' . urlencode(($referrerLabel));
    }

    return new HtmlButton($beschriftung, $action, $link, 'list-alt', $pTitle);
  }

  public function getFilterButton($beschriftung = 'Filter', $action = 'suchen_button', $pTitle = 'Suchfilter')
  {
    return new HtmlButton($beschriftung, $action, '', 'search', $pTitle, '', 'default', '', 'button', false);
  }

  public function getFilterLeerenButton($beschriftung = 'leeren', $action = 'reset_filter_button')
  {
    return new HtmlButton($beschriftung, $action, '', '', 'Filter leeren', '', 'default', '', 'button', false);
  }

  public function getNeuenKursPlanenButton($toolId, $beschriftung = 'Neuen Kurs planen', $action = 'kursvorschlag', $linkAddOn = '')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . $linkAddOn;

    return new HtmlButton($beschriftung, $action, $link, 'edit', 'Neuen Kurs planen');
  }

  public function getBelegungsplanButton($toolId, $beschriftung = 'Grafischer Belegungsplan', $action = 'belegungsplan')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action;

    return new HtmlButton($beschriftung, $action, $link, 'home', 'Grafischer Belegungsplan');
  }

  public function getStundenplanGrafikButton($beschriftung = 'Stundenplan', $action = 'stdplangrafik')
  {
    return new HtmlButton($beschriftung, $action, '', 'home', 'Grafik für Stundenplan');
  }

  
  public function getMedienUebersichtButton($pToolId, $pDatVon, $pDatBis, $pBeschriftung = 'Medienübersicht', $pAction = 'medienuebersicht')
  {
    $link = 'index.php?tool_id=' . $pToolId . '&action=' . $pAction . '&datVon=' . $pDatVon . '&datBis=' . $pDatBis;
    $symbol = $pBeschriftung == 'Medienübersicht' ? 'bar-chart' : 'search';

    return new HtmlButton($pBeschriftung, $pAction, $link, $symbol, 'Medienübersicht');
  }

  public function getAnwesenheitenButton($toolId, $ktId, $beschriftung = 'Anwesenheiten', $pTitle = 'Anwesenheiten eintragen', $action = 'anwesenheitseingabe')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&ktid=' . $ktId;

    return new HtmlButton($beschriftung, $action, $link, 'calendar-check-o', $pTitle);
  }

  public function getNotenButton($toolId, $knr, $datum, $beschriftung = 'Noten', $pTitle = 'Noten eintragen', $action = 'notenUebersicht')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&knr=' . $knr . '&datum=' . $datum;

    return new HtmlButton($beschriftung, $action, $link, 'graduation-cap', $pTitle);
  }

  public function getFeedbackButton($toolId, $ktId, $beschriftung = 'Feedback', $pTitle = 'Feedback', $action = 'showFeedbackFormular')
  { 
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&ktid=' . $ktId;

    return new HtmlButton($beschriftung, $action, $link, 'comment', $pTitle);
  }

  public function getTNBestaetigungButton(int $toolId, string $knr, $beschriftung = 'TN-Bestätigung', $action = 'printTNBestaetigung')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&knr=' . $knr;

    return new HtmlButton($beschriftung, $action, $link, 'print', 'Teilnahmebestätigungen zum Kurs', '_blank');
  }

  public function getTNZertifikatButton(int $toolId, string $knr, $beschriftung = 'TN-Zertifikat', $action = 'tnZertifikat')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&knr=' . $knr;

    return new HtmlButton($beschriftung, $action, $link, 'print', 'Teilnahmezertifikate zum Kurs');
  }

  public function getKursBearbeitenButton($toolId, $knr, $beschriftung = 'Kurs bearbeiten', $action = 'kursbearbeiten')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&knr=' . $knr;

    return new HtmlButton($beschriftung, $action, $link, 'pencil-square-o', 'Kurs bearbeiten');
  }

  public function getKursBearbeitenPlanungButton($toolId, $knr, $beschriftung = 'Kurs bearbeiten', $action = 'kursbearbeitenplanung')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&knr=' . $knr;

    return new HtmlButton($beschriftung, $action, $link, 'pencil-square-o', 'Kurs bearbeiten');
  }

  public function getWunschterminBearbeitenButton($toolId, $id, $beschriftung = 'Bearbeiten', $action = 'wunschterminbearbeiten')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&id=' . $id;

    return new HtmlButton($beschriftung, $action, $link, 'pencil-square-o', 'Wunschtermin Bearbeiten');
  }

  public function getWunschterminLoeschenButton($toolId, $id, $beschriftung = 'Löschen', $action = 'wunschterminloeschen')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&id=' . $id . \Xsrf::getXsrfGetParameter($action, $id);

    return new HtmlButton($beschriftung, $action, $link, 'times', 'Wunschtermin Löschen', '', 'danger', null, null, null, true);
  }

  public function getWunschterminNeuButton($toolId, $beschriftung = 'Neuen Wunschtermin erstellen', $action = 'wunschterminneu')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action;

    return new HtmlButton($beschriftung, $action, $link, 'plus', 'Wunschtermin erstellen', '', 'success');
  }

  public function getUrlaubBearbeitenButton($toolId, $id, $beschriftung = 'Bearbeiten', $action = 'dozurlaubbearbeiten')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&id=' . $id;

    return new HtmlButton($beschriftung, $action, $link, 'pencil-square-o', 'Urlaub Bearbeiten');
  }

  public function getUrlaubLoeschenButton($toolId, $id, $beschriftung = 'Löschen', $action = 'dozurlaubloeschen')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&id=' . $id . \Xsrf::getXsrfGetParameter($action, $id);

    return new HtmlButton($beschriftung, $action, $link, 'times', 'Urlaub Löschen', '', 'danger', null, null, null, true);
  }

  public function getUrlaubNeuButton($toolId, $beschriftung = 'Neuen Urlaub erstellen', $action = 'dozurlaubneu')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action;

    return new HtmlButton($beschriftung, $action, $link, 'plus', 'Urlaub erstellen', '', 'success');
  }

  public function getSammelVertraegeAkzeptieren($toolId, $id, string $singular, $beschriftung = 'Akzeptieren', $action = 'vertraegeakzeptieren')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&id=' . $id . \Xsrf::getXsrfGetParameter($action, $id);

    return new HtmlButton($beschriftung, $action, $link, 'check', $singular . ' akzeptieren', '', 'success');
  }

  public function getSammelVertraegeAblehnen($toolId, $id, string $singular, $beschriftung = 'Ablehnen', $action = 'vertraegeablehnen')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&id=' . $id . \Xsrf::getXsrfGetParameter($action, $id);

    return new HtmlButton($beschriftung, $action, $link, 'times', $singular . ' ablehnen', '', 'danger');
  }

  public function getSammelVertraegeDrucken($toolId, $id, string $singular, $beschriftung = 'Drucken', $action = 'vertraegedrucken')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&id=' . $id . \Xsrf::getXsrfGetParameter($action, $id);

    return new HtmlButton($beschriftung, $action, $link, 'print', $singular . ' drucken', '', 'default');
  }

  public function getFeedbackauswertungButton4Reiter($toolId, $knr, $referrer = '', $referrerLabel = '', $beschriftung = 'Feedbackauswertung zum Kurs', $action = 'dozFeedbackauswertungenUebersichtSetFilter')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&search_kursnummernbereich_von=' . $knr . '&search_kursnummernbereich_bis=' . $knr . '&search_stichworte=';
    if ($referrer !== '' && $referrerLabel !== '') {
      $link .= '&referrer=' . urlencode($referrer);
      $link .= '&referrerLabel=' . urlencode(($referrerLabel));
    }

    return new HtmlButton($beschriftung, $action, $link, 'list-alt', 'Feedbackauswertung zum Kurs');
  }

  public function getMaTNFeedbackauswertungButton4Reiter($toolId, $knr, $referrer = '', $referrerLabel = '', $beschriftung = 'Feedbackauswertung zum Kurs', $action = 'MaTNFeedbackauswertungenUebersichtSetFilter')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&search_kursnummernbereich_von=' . $knr . '&search_kursnummernbereich_bis=' . $knr . '&search_stichworte=';
    if ($referrer !== '' && $referrerLabel !== '') {
      $link .= '&referrer=' . urlencode($referrer);
      $link .= '&referrerLabel=' . urlencode(($referrerLabel));
    }

    return new HtmlButton($beschriftung, $action, $link, 'list-alt', 'Feedbackauswertung zum Kurs');
  }

  public function getTermineBearbeitenButton($toolId, $knr, $beschriftung = 'Termine bearbeiten', $action = 'terminuebersicht')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&knr=' . $knr . '&einstiegTermin=1';

    return new HtmlButton($beschriftung, $action, $link, 'pencil-square-o', 'Termine bearbeiten');
  }

  public function getNeueNewsButton($toolId, $beschriftung = 'Neuen Artikel erstellen', $action = 'neueNews')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action;

    return new HtmlButton($beschriftung, $action, $link, 'plus', 'Nachricht erstellen', '', 'success');
  }

  public function getBearbeiteNewsButton($toolId, $newsId, $beschriftung = 'Bearbeiten', $action = 'bearbeiteNews')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&news=' . $newsId;

    return new HtmlButton($beschriftung, $action, $link, 'edit', 'Nachricht bearbeiten');
  }

  public function getLoescheNewsButton($toolId, $newsId, $xsrfKey = 'loescheNews', $beschriftung = 'Löschen', $action = 'loescheNews')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&news=' . $newsId . \Xsrf::getXsrfGetParameter($xsrfKey, $newsId);

    return new HtmlButton($beschriftung, $action, $link, 'times', 'Nachricht löscheen', '', 'danger');
  }

  
  public function getPrintButton($beschriftung = 'Kursliste drucken', $action = 'drucken')
  {
    

    $link = 'javascript:window.print();';
    

    return new HtmlButton($beschriftung, $action, $link, 'print');

    
  }

  protected function getBlakSuchKategorieButton(string $beschriftung, string $class, bool $active = false): HtmlButton
  {
    return new HtmlButton($beschriftung, $class . ' search_blak_kriterien_button' . ($active ? ' active' : ''), '', 'search', 'Filter ' . $beschriftung, null, null, null, null, null, true);
  }

  public function getLernzielButton($beschriftung = 'Lernzielkontrollen', $class = 'lernziel', bool $active = false)
  {
    return $this->getBlakSuchKategorieButton($beschriftung ?? 'Lernzielkontrollen', $class ?? 'lernziel', $active);
  }

  public function getELearningButton($beschriftung = 'Web-Learning Kurse', $class = 'elearning', bool $active = false)
  {
    return $this->getBlakSuchKategorieButton($beschriftung ?? 'Web-Learning Kurse', $class ?? 'elearning', $active);
  }

  public function getWebinarButton($beschriftung = 'Web-Seminare', $class = 'webinar', bool $active = false)
  {
    return $this->getBlakSuchKategorieButton($beschriftung ?? 'Web-Seminare', $class ?? 'webinar', $active);
  }

  public function getPraesenzButton($beschriftung = 'Präsenz', $class = 'praesenz', bool $active = false)
  {
    return $this->getBlakSuchKategorieButton($beschriftung ?? 'Präsenz', $class ?? 'praesenz', $active);
  }

  protected function getOtherSuchKategorieButton(string $beschriftung, string $class, bool $active = false): HtmlButton
  {
    return new HtmlButton($beschriftung, $class . ' search_other_kriterien_button' . ($active ? ' active' : ''), '', 'search', 'Filter ' . $beschriftung, null, null, null, null, null, true);
  }

  public function getZukuenftigeKurseButton($beschriftung = 'Zukünftige Kurse', $class = 'futurecourses', bool $active = false)
  {
    return $this->getOtherSuchKategorieButton($beschriftung ?? 'Zukünftige Kurse', $class ?? 'futurecourses', $active);
  }

  public function getBeendeteKurseButton($beschriftung = 'Beendete Kurse', $class = 'pastcourses', bool $active = false)
  {
    return $this->getOtherSuchKategorieButton($beschriftung ?? 'Beendete Kurse', $class ?? 'pastcourses', $active);
  }

  public function getTermineAllButton($beschriftung = 'Alle meine Termine', $action = 'alletermine')
  {
    return new HtmlButton($beschriftung, $action, '', 'table', 'Alle meine Termine');
  }

  public function getTerminPlanButton($beschriftung = 'Terminplan', $action = 'terminplan')
  {
    return new HtmlButton($beschriftung, $action, '', 'calendar-check-o', 'Terminplan');
  }

  public function getZurueckZurKurssucheButton($toolId, $beschriftung = 'Zurück zur Kurssuche', $action = 'neueAnmeldung')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action;

    return new HtmlButton($beschriftung, $action, $link, 'reply', 'Zurück zur Kurssuche');
  }

  public function getAnmeldenButton($value, $beschriftung = 'Anmelden', $link = '', $action = 'AnmeldenButtonUebersicht', $color = 'success')
  {
    return new HtmlButton($beschriftung, $action, $link, 'check', 'Anmelden', '', $color, $value);
  }

  public function getVerlinkungAnmeldenButton($link, $beschriftung = 'Anmelden', $color = 'success')
  {
    return new HtmlButton($beschriftung, 'ma_reiter_teilnehmer_anmelden_button', $link, 'check', 'Einen Teilnehmer zum Kurs anmelden', '', $color);
  }

  public function getUmmeldenButton($beschriftung = 'Ummelden', $action = 'teilnehmerUmmelden', $title = 'Teilnehmer ummelden', $disabled = false)
  {
    $disable = ($disabled) ? 'disabled' : '';

    return new HtmlButton($beschriftung, $action, '', 'undo', $title, '', 'default ' . $disable);
  }

  public function getAnmeldenNichtMoeglichButton($title, $action = 'anmeldenButtonVerboten', $beschriftung = 'Anmelden nicht möglich')
  {
    return new HtmlButton($beschriftung, $action, '', 'info-circle', $title, '', 'success disabled showTitleOnClick');
  }

  public function getAnwesenheitenButton4Reitern($link, $beschriftung = 'Anwesenheiten')
  {
    return new HtmlButton($beschriftung, '', $link, 'calendar-check-o', 'Anwesenheiten zum Kurs');
  }

  public function getKlassenbuchButton($link, $beschriftung = 'Klassenbuch')
  {
    return new HtmlButton($beschriftung, '', $link, 'list-alt', 'Online-Klassenbuch (Anwesenheiten)');
  }

  public function getArbeitsBerichtButton($link, $beschriftung = 'Arbeitsberichte')
  {
    return new HtmlButton($beschriftung, 'arbeitsBerichtDruckButton', $link, 'print', 'Arbeitsberichte');
  }

  
  public function getFeedbackButton4Reiter($link, $title = 'Feedback Formular', $beschriftung = 'Feedback', $class = 'showFeedbackFormular')
  {
    return new HtmlButton($beschriftung, $class, $link, 'comment', $title);
  }

  public function getKurszettelButton($link, $beschriftung = 'Kurszettel', $action = '')
  {
    return new HtmlButton($beschriftung, $action, $link, 'print', 'Kurszettel', '_blank');
  }

  public function getAbmeldenButton($link, $beschriftung = 'Abmelden', $action = '', $title = 'Kurs stornieren', $disabled = false)
  {
    $disable = ($disabled) ? 'disabled' : '';

    return new HtmlButton($beschriftung, $action, $link, 'trash', $title, '', 'default ' . $disable);
  }

  public function getWeitermeldenButton($link, $beschriftung = 'Weitermelden', $action = '', $title = 'Weitermelden')
  {
    return new HtmlButton($beschriftung, $action, $link, 'check', $title, '', 'success');
  }

  public function getInfoAnDozButton($link, $beschriftung = 'Info an Dozent', $action = '')
  {
    return new HtmlButton($beschriftung, $action, $link, 'envelope', 'Info an Dozent');
  }

  public function getNotenDerMitarbeiterButton($link, $beschriftung = 'Noten der Mitarbeiter', $action = '')
  {
    return new HtmlButton($beschriftung, $action, $link, 'sticky-note-o', 'Noten der Mitarbeiter');
  }

  public function getTerminUpdateButton($beschriftung = 'Termin bearbeiten', $action = 'terminUpdate')
  {
    return new HtmlButton($beschriftung, $action, '', 'pencil', 'Termine bearbeiten');
  }

  public function getTerminCopyButton($beschriftung = 'Termin kopieren', $action = 'terminkopieren')
  {
    return new HtmlButton($beschriftung, $action, '', 'copy', 'Termine kopieren');
  }

  public function getAddButton($beschriftung = 'Termin hinzufügen', $action = 'terminAdd', $pLink = '', $pTitle = 'Termin hinzufügen')
  {
    return new HtmlButton($beschriftung, $action, $pLink, 'plus-circle', $pTitle);
  }

  public function getClipboardButton($beschriftung = 'Raumplanung', $action = '', $pLink = '', $pTitle = 'Raumplanung')
  {
    return new HtmlButton($beschriftung, $action, $pLink, 'clipboard-list', $pTitle);
  }

  public function getDeleteButton($beschriftung = 'Termin entfernen', $action = 'terminDelete', $pTitle = 'Termine löschen')
  {
    return new HtmlButton($beschriftung, $action, '', 'remove', $pTitle);
  }

  public function getTerminAbsagenButton($beschriftung = 'Terminabsage/verschieben', $action = 'terminAbsagen', $pTitle = 'Termine stornieren')
  {
    return new HtmlButton($beschriftung, $action, '', 'calendar', $pTitle);
  }

  public function getTerminAbrechnenButton($beschriftung = 'Termin abrechnen', $action = 'terminAbrechnen', $pTitle = 'Termine abrechnen')
  {
    return new HtmlButton($beschriftung, $action, '', '', $pTitle);
  }

  public function getTerminDirectAbrechnenButton($beschriftung = 'Termin abrechnen', $action = 'terminAbrechnenBergische', $pTitle = 'Termine abrechnen')
  {
    return new HtmlButton($beschriftung, $action, '', '', $pTitle);
  }

  public function getGraphischeUebersichtButton($link, $beschriftung = 'Übersicht Kurstermine', $action = 'raum_grafik', $pTitle = 'Übersicht der Kurstermine')
  {
    return new HtmlButton($beschriftung, $action, $link, 'bar-chart', $pTitle);
  }

  public function getDozentenHonorarButton($beschriftung = 'Honorar', $action = 'honorarDozent', $pTitle = 'Honorardaten')
  {
    return new HtmlButton($beschriftung, $action, '', 'pencil-square', $pTitle);
  }

  public function getKontoblattButton($beschriftung = 'Kontoblatt', $action = 'showKontoBlattDialog')
  {
    return new HtmlButton($beschriftung, 'kontoblatt', '', 'print', 'Kontoblatt');
  }

  public function getTnAnmeldenButton($link, $beschriftung = 'Anmelden', $color = 'success')
  {
    return new HtmlButton($beschriftung, '', $link, 'check', 'den/die TeilnehmerIn zu einem Kurs anmelden', '', $color);
  }

  public function getPersonBearbeitenButton($beschriftung, $action, $pTitle, $icon = 'user')
  {
    return new HtmlButton($beschriftung, $action, '', $icon, $pTitle, '', 'default');
  }

  
  public function getBelegungenBearbeitenButton(int $pToolId, string $kursId, ?string $pTitle = null)
  {
    $title = empty($pTitle) ? 'Belegungen bearbeiten' : $pTitle;
    $link = "index.php?tool_id=$pToolId&action=belegungenSammelBearbeiten&knr=$kursId";

    return new HtmlButton($title, 'belegungenBearbeiten', $link, 'pencil-square', $title, '', 'default');
  }

  public function getNeuerPersonenButton($beschriftung, $action, $title, bool $disabled = false)
  {
    $result = new HtmlButton($beschriftung, $action, '', 'user-plus', $title, '', 'success');
    $result->disabled = $disabled;

    return $result;
  }

  public function getExportTableKursButton(int $pToolId, string $actionPart, string $kursId, ?string $title = 'Export'): HtmlButton
  {
    $title = empty($title) ? 'Export' : $title;
    $link = "index.php?tool_id=$pToolId&action={$actionPart}ExportTable&knr={$kursId}";

    return new HtmlButton($title, $actionPart . 'ExportTable', $link, 'table', $title, '', 'default');
  }

  public function getNachlassButton($beschriftung = 'Nachlass', $action = 'tnNachlass')
  {
    return new HtmlButton($beschriftung, $action, '', 'percent', 'Nachlass zur Belegung');
  }

  public function getBGLUNachweisNachreichenButton($beschriftung = 'BGLU-Nachweis nachreichen', $action = 'BGLUNachweis_Nachreichen')
  {
    return new HtmlButton($beschriftung, $action, '', 'check', 'BGLU-Nachweis nachreichen', 'BGLU_Nachweis_nachreichen');
  }

  public function getPunkteBestaetigenButton($value, $beschriftung = '', $link = '', $action = 'punkte_bestaetigen', $color = 'danger')
  {
    return new HtmlButton($beschriftung, $action, $link, 'check-circle', 'Punkte bestätigen', '', $color, $value);
  }

  public function getVisitenkartenBearbeitenButton($toolId, $karteId, $beschriftung = 'Karte bearbeiten', $class = 'visitenkartendetails')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $class . '&karteID=' . $karteId;

    return new HtmlButton($beschriftung, $class, $link, 'pencil-square-o');
  }

  public function getVisitenkartenLoeschenButton($toolId, $karteId, $beschriftung = 'Karte löschen', $class = 'showLoescheVisitenkarteDialog')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $class . '&karteID=' . $karteId;

    return new HtmlButton($beschriftung, $class, $link, 'times', '', '', 'danger');
  }

  public function getVisitenkartespeichernButton($beschriftung = 'Änderungen speichern', $class = 'visitenkartendetailsSpeichern', $type = 'submit')
  {
    return new HtmlButton($beschriftung, $class, '', '', '', '', 'success', '', $type);
  }

  public function getZurueckZurVisitenkartenUebersichtButton($toolId, $beschriftung = 'Zurück zur Übersicht', $class = 'visitenkartenuebersicht')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $class;

    return new HtmlButton($beschriftung, $class, $link, 'reply');
  }

  public function getVisitenkarteErstellenButton($toolId, $beschriftung = 'Neue Visitenkarte', $class = 'neueVisitenkarteErstellen')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $class;

    return new HtmlButton($beschriftung, $class, $link, 'pencil-square-o');
  }

  public function getErstellteVisitenkarteAbsendenButton($beschriftung = 'Absenden', $class = 'neueErstellteVisitenkarteSpeichern', $type = 'submit')
  {
    return new HtmlButton($beschriftung, $class, '', '', '', '', 'success', '', $type);
  }

  public function getAutomatischAusfuellenVisitenkartenButton($beschriftung = 'Automatisch ausfüllen', $class = 'neueVisitenkartenAutomatischAusfuellen')
  {
    return new HtmlButton($beschriftung, $class, '', 'pencil-square-o', '', '', 'warning');
  }

  public function getFeedbackFormularButton($link, $beschriftung = 'Feedbackformular', $action = '', $pTitle = 'Druck des Feedbackformulars')
  {
    return new HtmlButton($beschriftung, $action, $link, 'print', $pTitle);
  }

  public function getHonorarvereinbarungButton($link, $beschriftung = 'Honorarvereinbarung', $action = '', $pTitle = 'Druck der Honorarvereinbarung')
  {
    return new HtmlButton($beschriftung, $action, $link, 'print', $pTitle);
  }

  public function getPencilSquareButton($link, $beschriftung, $pTitle, $action = '')
  {
    return new HtmlButton($beschriftung, $action, $link, 'pencil-square-o', $pTitle);
  }

  public function getHonorarReiterButton($link, $beschriftung, $pTitle, $action = 'ajax_button_reiter reiterHonorar')
  {
    return new HtmlButton($beschriftung, $action, $link, '', $pTitle);
  }

  public function getKursausfallSetzenButton($toolId, $knr, $beschriftung = 'Ausfall', $action = 'kursausfallSetzen')
  {
    $link = 'index.php?tool_id=' . $toolId . '&action=' . $action . '&knr=' . $knr;

    return new HtmlButton($beschriftung, $action, $link, 'pencil-square-o', 'Kurs bearbeiten');
  }

  public function getBarzahlungButton($link, $beschriftung = 'Barzahlung', $action = '', $title = 'Barzahlung durchführen', $disabled = false)
  {
    $disable = ($disabled) ? 'disabled' : '';

    return new HtmlButton($beschriftung, $action, $link, 'eur', $title, '', 'default ' . $disable);
  }

  public function getQuartalsUebersichtButton($link, $beschriftung = 'Quartalsübersicht', $action = '', $pTitle = 'Quartalsübersicht der Raumbelegung', $pTarget = '_blank')
  {
    return new HtmlButton($beschriftung, $action, $link, 'print', $pTitle, $pTarget);
  }

  public function getHonorarBescheinigungButton($beschriftung = 'Honorarbescheinigung')
  {
    return new HtmlButton($beschriftung, 'honorarbescheinigung', '', 'print', 'Honorarbescheinigung');
  }

  public function getTerminStornierenButton($beschriftung = 'Termin verschieben/absagen', $action = 'showTerminStornierenDialogButton')
  {
    return new HtmlButton($beschriftung, $action, '', 'calendar-check-o', 'Termin verschieben/absagen');
  }

  public function getTerminVerlaengernButton($beschriftung = 'Kurs verlängern', $action = 'showTerminVerlaengernDialogButton')
  {
    return new HtmlButton($beschriftung, $action, '', 'calendar-plus-o', 'Kurs verlängern');
  }

  public function getTeilnehmerTerminUmbuchenWunschButton($beschriftung = 'Termin verschieben', $action = 'showTerminVerschiebenWunschButton')
  {
    return new HtmlButton($beschriftung, $action, '', 'calendar-check-o', 'Termin verschieben');
  }

  public function getProtokollServiceButton($link, $beschriftung = 'Protokolle', $action = '')
  {
    return new HtmlButton($beschriftung, $action, $link, 'file-alt', 'Protokolle');
  }

  public function getWPOnlineBWLButton($link, $beschriftung = 'WP-Online BWL', $action = '')
  {
    return new HtmlButton($beschriftung, $action, $link, 'file-alt', 'Material BWL', '_blank', 'success');
  }

  public function getWPOnlinePWButton($link, $beschriftung = 'WP-Online Prüfungswesen', $action = '')
  {
    return new HtmlButton($beschriftung, $action, $link, 'file-alt', 'Material Prüfungswesen', '_blank', 'success');
  }

  public function getWPOnlinePWStandardsButton($link, $beschriftung = 'WP-Online Prüfungswesen Standards', $action = '')
  {
    return new HtmlButton($beschriftung, $action, $link, 'file-alt', 'Material Prüfungswesen Standards', '_blank', 'success');
  }

  public function getWPOnlineWIREButton($link, $beschriftung = 'WP-Online Wirtschaftsrecht', $action = '')
  {
    return new HtmlButton($beschriftung, $action, $link, 'file-alt', 'Material Wirtschaftsrecht', '_blank', 'success');
  }

  public function getWPOnlinePrivatrechtButton($link, $beschriftung = 'WP-Online Privatrecht', $action = '')
  {
    return new HtmlButton($beschriftung, $action, $link, 'file-alt', 'Material Privatrecht', '_blank', 'success');
  }

  public function getWPOnlineSTRButton($link, $beschriftung = 'WP-Online Steuerrecht', $action = '')
  {
    return new HtmlButton($beschriftung, $action, $link, 'file-alt', 'Material Steuerrecht', '_blank', 'success');
  }
}