<?php

class ref{
	private $db;
	private $config;
	private $verdienst = 0;
	private $konto;
	private $verg = array();
	private $post = array();
	private $session;
	
	function __construct(){
		global $datenbank,$k_buchung,$_SESSION;
		$this->session = $_SESSION;
		$this->db = $datenbank;
		$this->config = $this->db->get_row("SELECT * FROM ". PREFIX . CONFIG ." ",true);
		$this->konto = $k_buchung;
		$explode = explode(";",$this->config->RefVerg);
		for($i = 1; $i <= $this->config->RefEbenen; $i++){
			if(!empty($explode[$i-1])){
				$this->verg[$i] = $explode[$i-1];
			}
		}
	}
	
	public function UserListe(){
		foreach($this->db->get_results("SELECT * FROM ". PREFIX . WERBER ." WHERE werber != '0' ") AS $res){
			$this->Ebenverguetung($res->uid,$res->werber,1,$res);
		}
	}
	
	private function Ebenverguetung($uid,$werber,$ebene,$ressourcen){
		//Bezahlung von Werber in Grundstufe
		$verguetung = $ressourcen->umsatz /100 * $this->verg[$ebene];
		$this->konto->set_var($werber,$verguetung,'+','Refzahlung ('. $uid .')');
		if($ressourcen->refback > 0){
			$refback = $verguetung / 100 * $ressourcen->refback;
			$this->konto->set_var($werber,$refback,'-','Refback ('. $uid .'->'. $ressourcen->refback.'%)');
			$this->konto->set_var($uid,$refback,'+','Refback ('. $ressourcen->refback.'%)');
		}
		if($ebene == 1){
			$this->db->update(PREFIX . WERBER, array("umsatz" => 0, "gesamt" => $ressourcen->gesamt + $ressourcen->umsatz), array("uid" => $uid),1);
		}
		
		$query = "SELECT * FROM ". PREFIX . WERBER ." WHERE werber = '$uid' ";
		if($this->db->num_rows($query) != 0){
			foreach($this->db->get_results($query) AS $res){
				$ebene++;
				$this->Ebenverguetung($res->uid,$werber,$ebene,$res);
			}
		}
	}
	
	private function RefAnzahl($uid){
		$anz = $this->db->num_rows("SELECT uid FROM ". PREFIX . WERBER ." WHERE werber = '$uid'");
		if($anz == 0){
			return 0;
		}else{
			return $anz.'&nbsp;&nbsp;<a class="btn btn-primary btn-sm" data-toggle="collapse" href="#refs_'.$uid.'" role="button" aria-expanded="false" aria-controls="collapseExample">Anzeigen</a>';
		}
	}
	
	private function RefRefListe($uid,$ebene){
		if($ebene <= $this->config->RefEbenen){
			$aus = '<ul class="list-group">';
			foreach($this->db->get_results("SELECT * FROM ". PREFIX . WERBER ." WHERE werber = '$uid' ") AS $res){
				$user = userinfo($res->uid);
				$refs = $this->RefAnzahl($res->uid);
				$aus .= '<li class="list-group-item">';
				$aus .= '
					<div class="row">
						<div class="col">&nbsp;'.$user->nickname.'('.$res->uid.')</div>
						<div class="col">Umsatz: '. number_format($res->umsatz,2,',','.') .' '. $this->config->waehrung .'</div>
						<div class="col">Refs: '. $refs .'</div>
					</div>
				';
				if($refs != 0){
				$aus .= '
					<div class="collapse" id="refs_'. $res->uid .'">
						<div class="card card-body">
							'. $this->RefRefListe($res->uid,$ebene+1) .'
						</div>
					</div>
				';
			}
			}
			$aus .= '</ul>';
			return $aus;
		}
		
		return $aus;
	}
	
	public function RefListe($uid){
		$query = "SELECT * FROM ". PREFIX . WERBER ." WHERE werber = '$uid' ";
		if($this->db->num_rows($query) > 0){
			$aus = '<ul class="list-group">';
			foreach($this->db->get_results($query) AS $res){
				$user = userinfo($res->uid);
				$refs = $this->RefAnzahl($res->uid);
				$aus .= '<li class="list-group-item">';
				$aus .= '<div class="row">
							<div class="col">&nbsp;'.$user->nickname.'('.$res->uid.')</div>
							<div class="col">
								<form method="post" action="">
									<input type="hidden" name="uid" value="'. $res->uid .'">
									<div class="input-group">
										<input type="text" class="form-control" name="refback" value="'. $res->refback.'">
										<div class="input-group-append">
											<span class="input-group-text">%</span>
											<input type="submit" name="run[refback_save]" value="Save" class="btn btn-success btn-sm">
										</div>
									</div>
								</form>
							</div>
							<div class="col">Umsatz: '. number_format($res->umsatz,2,',','.') .' '. $this->config->waehrung .'</div>
							<div class="col">Refs: '. $refs .'</div>
						</div>';
				
				if($refs != 0){
					$aus .= '
						<div class="collapse" id="refs_'. $res->uid .'">
							<div class="card card-body">
								'. $this->RefRefListe($res->uid,1) .'
							</div>
						</div>
					';
				}
				$aus .= '</li>';
			}
			$aus .= '</ul>';
		}else{
			$aus = '<div class=" alert alert-info">Du hast noch keinen User geworben.</div>';
		}
		return $aus;
	}
	
	private function make_array($post){
		foreach($post AS $key => $value){
			if($key != '' && $key != 'run'){
				$this->post[$key] = $this->db->escape($value);
			}
		}
	}
	
	public function RefBackSave($post){
		$this->make_array($post);
		if($this->db->num_rows("SELECT uid FROM ". PREFIX . WERBER ." WHERE uid = '". $this->post['uid'] ."' AND werber = '". $this->session['uid'] ."' ") == 1){
			if($this->db->update(PREFIX . WERBER, array("refback" => $this->post['refback']), array("uid" => $this->post['uid'])) == true){
				meldung(0,REFBACK_SAVE_TRUE);
			}else{
				meldung(1,REFBACK_SAVE_FALSE);
			}
		}else{
			meldung(1,REFBACK_ERROR_USER_FALSE);
		}
	}
}