<?php
  /**
   * class Mitglied
   */
  class Mitglied
  {
      var $id;
      var $anrede;
      var $titel;
      var $name;
      var $vorname;
      var $strasse;
      var $plz;
      var $ort;
      var $email;
      var $versnummer;
      var $versnummermv;
      var $famityp;
      var $rechtskreis;
      var $geburtsdatum;

      function __construct($versnummer='0', $rechtskreis = '', $id = 0)
      {
          global $_SERVER;
          $numrows = 0;
          if (strlen($versnummer) == 10) {
              $table = "abgleich";
              $query= "SELECT * FROM $table WHERE ";
              $query .= "versnummer LIKE '$versnummer'";
              if ($rechtskreis != '') {
                  $query .= " AND rechtskreis LIKE '$rechtskreis'";
              }
              $result = dbQuery($query)
                  or error ("Konnte Logindaten nicht aus der Datenbank lesen: " . dbError());
              $numRows = dbNumRows($result);
          } else {
              if ($id) {
                  $table = "abgleich";
                  $query= "SELECT * FROM $table WHERE ";
                  $query .= "id = $id";
                  $result = dbQuery($query)
                      or error ("Konnte Logindaten nicht aus der Datenbank lesen: " . dbError());
                  $numRows = dbNumRows($result);
              }
          }

          // Wenn der User bereits existiert, dann hole gleich alle Daten
          // aus der Datenbank
          if ($numRows != 0 )
          {
              $row = dbFetchRow($result);
              $this->id = unescape($row['id']);
              $this->anrede = unescape($row['anrede']);
              $this->titel = unescape($row['titel']);
              $this->name = unescape($row['name']);
              $this->vorname = unescape($row['vorname']);
              $this->strasse = unescape($row['strasse']);
              $this->plz = unescape($row['plz']);
              $this->ort = unescape($row['ort']);
              $this->email = unescape($row['email']);
              $this->versnummer = unescape($row['versnummer']);
              $this->versnummerneu = unescape($row['versnummerneu']);
              $this->versnummermv = unescape($row['versnummermv']);
              $this->famityp = unescape($row['famityp']);
              $this->rechtskreis = unescape($row['rechtskreis']);
              $this->geburtsdatum = unescape($row['geburtsdatum']);
              dbFreeResult($result);
          }
          return $this;
      }

      function setattributes($row,$user)
      {
              $user->id = unescape($row['id']);
              $user->anrede = unescape($row['anrede']);
              $user->titel = unescape($row['titel']);
              $user->name = unescape($row['name']);
              $user->vorname = unescape($row['vorname']);
              $user->strasse = unescape($row['strasse']);
              $user->hausnummer = unescape($row['hausnummer']);
              $user->hausnummer = '';
              $user->plz = unescape($row['plz']);
              $user->ort = unescape($row['ort']);
              $user->land = unescape($row['land']);
              $user->email = unescape($row['email']);
              $user->versnummer = unescape($row['versnummer']);
              $user->versnummerneu = unescape($row['versnummerneu']);
              $user->versnummermv = unescape($row['versnummermv']);
              $user->famityp = unescape($row['famityp']);
              $user->rechtskreis = unescape($row['rechtskreis']);
              $user->versstatus = unescape($row['versstatus']);
              $user->geburtsdatum = unescape($row['geburtsdatum']);
              $user->mitgliedseit = unescape($row['mitgliedseit']);
              $user->telefonnummer = unescape($row['telefonnummer']);
              $user->mobilnummer = unescape($row['mobilnummer']);
              $user->passwort = unescape($row['passwort']);
              $user->freigeschaltet = unescape($row['freigeschaltet']);
              $user->schluessel = unescape($row['schluessel']);
              $user->erstellungsdatum = unescape($row['erstellungsdatum']);
              $user->aenderungsdatum = unescape($row['aenderungsdatum']);
              $user->ersteller = unescape($row['ersteller']);
              $user->status = unescape($row['status']);
              $user->auszugperemail = unescape($row['auszugperemail']);
              $user->rausfaller = unescape($row['rausfaller']);
              $query = "SELECT userId FROM users WHERE versnummerneu = '" . $user->versnummerneu . "'";
              $result = dbQuery($query);
              if (dbNumRows($result)>0)
              {
                  $row = dbFetchRow($result);
                  $userId = $row['userId'];
                  $user->userId = $userId;
              }
      }

      function fetchbyversnummerneu($versnummerneu)
      {
          $query = "SELECT * FROM abgleich WHERE versnummerneu = '$versnummerneu'";
          $result = dbQuery($query)
              or error ("Konnte Logindaten nicht aus der Datenbank lesen: " . dbError());
          $numRows = dbNumRows($result);
          $user = new User();
          if ($numRows != 0 )
          {
              $row = dbFetchRow($result);
              $this->setattributes($row,$user);
          } else {
              dbFreeResult($result);
              return false;
          }
          dbFreeResult($result);
          return $user;
      }

      function fetchbyversnummer($versnummer,$rechtskreis)
      {
          $query = "SELECT * FROM abgleich WHERE versnummer = '$versnummer' AND rechtskreis = '$rechtskreis'";
          $result = dbQuery($query)
              or error ("Konnte Logindaten nicht aus der Datenbank lesen: " . dbError());
          $numRows = dbNumRows($result);
          $user = new User();
          if ($numRows != 0 )
          {
              $row = dbFetchRow($result);
              $this->setattributes($row,$user);
          } else {
              dbFreeResult($result);
              return false;
          }
          dbFreeResult($result);
          return $user;
      }

      /**
       * @param $id
       * @return Mitglied
       */
      public function fetchbyid($id)
      {
          $user = null;
          $query = "SELECT * FROM abgleich WHERE id = $id";
          $result = dbQuery($query)
              or error ("Konnte Logindaten nicht aus der Datenbank lesen: " . dbError());
          $numRows = dbNumRows($result);
          if ($numRows != 0 ) {
              $user = new User();
              $row = dbFetchRow($result);
              $this->setattributes($row, $user);
          } else {
          }
          dbFreeResult($result);
          return $user;
      }


      /**
       *
       * @return array Mitglied
       */
      public function searchinabgleich()
      {
          $query = null;
          $searchfields = array('versnummerneu', 'versnummer','rechtskreis', 'anrede', 'titel', 'name', 'vorname', 'geburtsdatum', 'strasse', 'plz', 'ort', 'land', 'email', 'status','id');
          foreach ($searchfields as $searchfield)
          {
              if (isset($this->$searchfield) && ($this->$searchfield != ''))
              {
                  if ($query) $query .= ' AND';
                  if ($searchfield == 'versnummer') {
                      $query .= " (versnummer like '%" .
                        dbEscapeString($this->$searchfield) . "%'" .
                        " OR versnummerneu like '%" .
                        dbEscapeString($this->$searchfield) . "%') ";
                  } else {

                    $query .= " " . $searchfield ." like '%" .
                    dbEscapeString($this->$searchfield) . "%'";
                  }
              }
          }
          $users = array();
          if ($query) {
              $myquery = "SELECT versnummerneu, versnummer, rechtskreis,id 
                  FROM abgleich WHERE $query" ;
              $result = dbQuery($myquery) or error('Kann teilnehmer nicht aus abgleich suchen'. dbError());
              while ($row = dbFetchRow($result))
              {
                  $id = $row['id'];
                  $user = $this->fetchbyid($id);
                  // Check if mitglied is a teilnehmer
                  if (! $user->userId) {
                      array_push($users,$user);
                  } else {
                  }
              }
          }
          return $users;
      }


      function fetchdoublekvnrneu()
      {
          $query = "SELECT versnummerneu, COUNT( versnummerneu ) AS anzahl
              FROM abgleich
              GROUP BY versnummerneu
              HAVING anzahl >1";
          $result = dbQuery($query) or
              error ("Kann doppelte KVNrNeu nicht suchen: ". dbError());
          print "Anzahl von Doppelten: " . dbNumRows($result) . "\n";
          $doppeltekvnrs= array();
          while ($row = dbFetchRow($result))
          {
              $versnummerneu = $row['versnummerneu'];
              if ($versnummerneu != '') {
                  array_push($doppeltekvnrs,$versnummerneu);
              }
          }

          $dups = array();
          foreach ($doppeltekvnrs as $kvnrneu)
          {
              $query = "SELECT id FROM abgleich 
                  WHERE versnummerneu = '$kvnrneu'";
              $result = dbQuery($query) or
                  error ("Kann doppelte KVNrNeu nicht suchen: " . dbError());
              while ($row = dbFetchRow($result))
              {
                  array_push($dups, new Mitglied('','',$row['id']));
              }
          }
          return $dups;
      }
  }
