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

namespace Kufer\KuferTools\Oeffentlich\LoginAnfordern\Utils;

class HandleLoginAnfordernEingaben extends \Kufer\KuferTools\Oeffentlich\PasswortAnfordern\Utils\HandlePasswortAnfordernEingaben
{
  public const ERROR_KEINE_ANREDE_ANGEGEBEN = 'keineAnredeAngegeben';
  public const ERROR_KEIN_NAME_ANGEGEBEN = 'keinNameAngegeben';
  public const ERROR_KEIN_VORNAME_ANGEGEBEN = 'keinVornameAngegeben';
  public const ERROR_KEINE_EMAIL_ANGEGEBEN = 'keineEMailAngegeben';
  public const ERROR_LOGIN_SCHON_VERGEBEN = 'LoginExistiertSchon';
  public const ERROR_KEINE_BENUTZERGRUPPE_ANGEGEBEN = 'keineBenutzergruppeAngegeben';
  public const ERROR_ZU_DATENSCHUTZ_NICHT_ZUGESTIMMT = 'zuDatenschutzNichtZugestimmt';
  public const ERROR_ZU_FREIES_PFLICHTFELD_NICHT_ZUGESTIMMT = 'freiesPflichtfeldNichtZugestimmt';

  private $geschlecht;
  private $name;
  private $vorname;
  private $benutzergruppe;
  private $checkDseZustimmung;
  private $dseZustimmung;
  private $checkFreiesPflichtfeldZustimmung;
  private $freiesPflichtfeldZustimmung;

  public function __construct(
    $pLogin,
    $pPassword,
    $pPasswordRepeat,
    $pCaptchaOk,
    $pGeschlecht,
    $pName,
    $pVorname,
    $pBenutzergruppe,
    $pCheckDseZustimmung,
    $pDseZustimmung,
    $pCheckFreiesPflichtfeldZustimmung,
    $pFreiesPflichtfeldZustimmung
  ) {
    parent::__construct($pLogin, $pPassword, $pPasswordRepeat, $pCaptchaOk);
    $this->geschlecht = $pGeschlecht;
    $this->name = $pName;
    $this->vorname = $pVorname;
    $this->benutzergruppe = $pBenutzergruppe;
    $this->checkDseZustimmung = $pCheckDseZustimmung;
    $this->dseZustimmung = $pDseZustimmung;
    $this->freiesPflichtfeldZustimmung = $pFreiesPflichtfeldZustimmung;
    $this->checkFreiesPflichtfeldZustimmung = $pCheckFreiesPflichtfeldZustimmung;
  }

  public function validateEingaben()
  {
    $this->checkBenutzergruppe();
    $this->checkGeschlecht();
    $this->checkNameUndVorname();
    $this->validatePasswoerterGefuellt();
    $this->checkZustimmungDatenschutz();
    $this->checkZustimmungFreiesPflichtfeld();
    $this->validateCaptcha();

    if ($this->password !== '') {
      $this->validatePasswortErfuelltVoraussetzungen();
    }

    return $this->status;
  }

  private function checkGeschlecht(): void
  {
    if (\trim($this->geschlecht === '')) {
      $this->status[] = self::ERROR_KEINE_ANREDE_ANGEGEBEN;
    } else {
      $dbwGeschlecht = new \DBWorkGeschlecht();
      if (!$dbwGeschlecht->isGeschlecht($this->geschlecht)) {
        
        
        $this->geschlecht = '';
      }
    }
  }

  
  public function getGeschlecht()
  {
    return $this->geschlecht;
  }

  private function checkNameUndVorname(): void
  {
    if (trim($this->name) == '') {
      $this->status[] = self::ERROR_KEIN_NAME_ANGEGEBEN;
    }
    if (trim($this->vorname) == '') {
      $this->status[] = self::ERROR_KEIN_VORNAME_ANGEGEBEN;
    }
  }

  private function checkBenutzergruppe(): void
  {
    if ($this->benutzergruppe == '') {
      $this->status[] = self::ERROR_KEINE_BENUTZERGRUPPE_ANGEGEBEN;
    }
  }

  private function checkZustimmungDatenschutz(): void
  {
    if ($this->checkDseZustimmung && !$this->dseZustimmung) {
      $this->status[] = self::ERROR_ZU_DATENSCHUTZ_NICHT_ZUGESTIMMT;
    }
  }

  private function checkZustimmungFreiesPflichtfeld(): void
  {
    if ($this->checkFreiesPflichtfeldZustimmung && !$this->freiesPflichtfeldZustimmung) {
      $this->status[] = self::ERROR_ZU_FREIES_PFLICHTFELD_NICHT_ZUGESTIMMT;
    }
  }
}