<?php
#- Gesamtteilnehmerzahl
#- Teilnehmerzahl, die Healthmiles gesammelt, also Nachweise zur Prävention eingereicht haben
#- Teilnehmerzahl, die eine Prämie erhalten haben.

class bonusstatistics {
  # - Gesamtteilnehmerzahl
  var $datum;
  var $timestamp;
  var $year;
  var $month;
  var $day;
  var $unterkategorien = array();
  var $punkte_gesamt;
  var $punkte_ultimoverfallen;
  var $punkte_eingeloest;
  var $punkte_einloesbar;
  var $neuanmeldungen_O18;
  var $neuanmeldungen_U18;
  var $teilnehmer;
  var $teilnehmer_U18;

  function __construct($datum = false) {
    if ($datum == false) { 
        # default = yesterday
        $this->datum = date("Y-m-1",time());  
    } else {
        $this->datum = $datum;
    }
    
    List($year,$month,$day) = explode('-',$this->datum);
    # Convert strings to numbers
    $this->year = $year+0;
    $this->month = $month+0;
    $this->day = 1;
    $this->datum = "$year-$month-$day";
    $this->timestamp = mktime(0,0,0,$this->month, $this->day, $this->year);
    $month++;
    if ($month > 12) { $month = 1; $year++; }
    $this->timestampend = mktime(0,0,0,$month, 1, $year);

   $this->subcategories = getSubCategories(); 

    return $this;
  }

  function fetchpunkte($category)
  {
          $query = 'SELECT unterkategorie, count(unterkategorie) AS anzahl, sum(wert) AS wertsum
               FROM kontobewegungen WHERE wert > 0
               AND kategorie = ' . $category->id . '
               AND datum >= ' . $this->timestamp  . '
               AND datum < ' . $this->timestampend  . '
               GROUP by unterkategorie
               ORDER by anzahl DESC';
          $result = dbQuery($query) or error($query . ": " . dbError());
          return $result;
  }

  function fetchunterkategorien()
  {
      $unterkategorien = array();
      $subCategories = getSubCategories(true);
      foreach($subCategories as $subCategory) {
          $unterkategorien[$subCategory->id] = $subCategory->name . ": " .
              $subCategory->beschreibung;
          if ($subCategory->geloescht) {
              $unterkategorien[$subCategory->id] .= ' <b>geloescht</b>';
          }
      }
      return $unterkategorien;
  }
  
  function updatecategories()
  {
      $query = "SELECT pkey, unterkategorie FROM kontobewegungen
          WHERE wert > 0
          AND kategorie = 0
          AND unterkategorie != 0";
      $result = dbQuery($query) or die ('Cannot query: ' .  $query . ' ' . dbError());
      while ($row = dbFetchRow($result))
      {
          $pkey = $row['pkey'];
          $unterkategorie = $row['unterkategorie'];
          $kategorie = 0;
          foreach ($this->subcategories as $subcategory)
          {
              if ($subcategory->id == $unterkategorie)
              {
                  $kategorie = $subcategory->kategorie;
                  break;
              }
          }
          if ($kategorie != 0)
          {
              $query = "UPDATE kontobewegungen set kategorie = $kategorie
                  WHERE pkey = $pkey";
              dbQuery($query) or die(dbError());
          }
      }
  }

}
