<?php
/* Copyright (C) 2009 Technikum-Wien
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
 *
 * Authors: Christian Paminger 	< christian.paminger@technikum-wien.at >
 *          Andreas Oesterreicher 	< andreas.oesterreicher@technikum-wien.at >
 *          Rudolf Hangl 		< rudolf.hangl@technikum-wien.at >
 *          Gerald Simane-Sequens 	< gerald.simane-sequens@technikum-wien.at >
 */
   
/*
 * Prueft im Stundenplan ob die Personen in den zugeteilten Räumen Platz haben
 */
require_once('../../../config/vilesci.config.inc.php');
require_once('../../../include/studiensemester.class.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/studiengang.class.php');
require_once('../../../include/ort.class.php');

if (!$db = new basis_db())
	die('Es konnte keine Verbindung zum Server aufgebaut werden.');

$beginn = (isset($_GET['beginn'])?$_GET['beginn']:'');
$ende = (isset($_GET['ende'])?$_GET['ende']:'');
$stg_kz = (isset($_GET['stg_kz'])?$_GET['stg_kz']:'');
$dontloadcontent=false;

$user = get_uid();
loadVariables($user);
if (empty($db_stpl_table))
	die('Bitte die Variablen warten! db_stpl_table ist leer');

echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
	<title>LV-Plan - Überbuchungen</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<link rel="stylesheet" href="../../../skin/vilesci.css" type="text/css" />
	<link rel="stylesheet" href="../../../skin/jquery.css" type="text/css"/>
	<link href="../../../skin/jquery-ui-1.9.2.custom.min.css" rel="stylesheet" type="text/css">';

	include('../../../include/meta/jquery.php');
	include('../../../include/meta/jquery-tablesorter.php');

echo '
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>	
	
	
	<script type="text/javascript">	
		$(document).ready(function() 
			{ 
				$("#t1").tablesorter(
				{
					headers:
					{  
						0 : { sorter: "isoDate"  },
					}, 
					sortList: [[0,0],[1,0]],
					widgets: ["zebra","filter"]
				}); 
				
				$( ".datepicker_datum" ).datepicker(
				{
					changeMonth: true,
					changeYear: true,
					dateFormat: "yy-mm-dd",
					showOn: "focus"
				});
			} 
		);
		</script>
</head>
<style>
table.tablesorter tbody td 
{
	padding: 2px;
}
</style>
<body>
<h2>LV-Plan Überbuchungen - '.$db_stpl_table.'</h2>
';
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="GET">';

if($beginn=='' || $ende=='')
{
	$stsem_obj = new studiensemester();
	$stsem_akt = $stsem_obj->getaktorNext();
	$stsem_obj->load($stsem_akt);
	
	//$beginn = $stsem_obj->start;
	$beginn = date("Y-m-d");
	//$ende = $stsem_obj->ende;
	$ende = date("Y-m-d", strtotime('+8 days'));
	$dontloadcontent=true;
}

echo " Beginn <INPUT class='datepicker_datum' type='text' size='10' id='beginn' name='beginn' value='$beginn'>";
echo " Ende <INPUT class='datepicker_datum' type='text' size='10' id='ende' name='ende' value='$ende'>";

$stg = new studiengang();
$stg->getAll('typ, kurzbzlang', true);

echo ' Studiengang <SELECT name="stg_kz">';
echo '<option value="">-- Alle --</option>';
foreach ($stg->result as $row) 
{
	if($stg_kz==$row->studiengang_kz)
		$selected='selected';
	else 
		$selected='';
	
	echo '<option value="'.$row->studiengang_kz.'" '.$selected.'>'.$row->kuerzel.'</option>';
}
echo '</SELECT>';

echo " <INPUT type='submit' value='OK'>";
echo '</form>';

if($dontloadcontent)
	exit;

	
$ort_obj = new ort();
$ort_obj->getAll();
$ort = array();

foreach ($ort_obj->result as $row)
{
	$ort[$row->ort_kurzbz] = new stdClass(); // Prevents the warning "Creating default object from empty value"
	$ort[$row->ort_kurzbz]->max_person = $row->max_person;
}
$qry = "SELECT DISTINCT vw_".$db_stpl_table.".unr,datum, stunde, ort_kurzbz, studiensemester_kurzbz, vw_".$db_stpl_table.".studiengang_kz, vw_".$db_stpl_table.".semester, verband, gruppe, gruppe_kurzbz, UPPER(stg_typ || stg_kurzbz) as stg_kurzbz, lehrfach, lehrfach_bez, lehrform 
		FROM lehre.vw_".$db_stpl_table." JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung ON(tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id)
		WHERE datum>='".addslashes($beginn)."' AND datum<='".addslashes($ende)."'";
if($stg_kz!='')
	$qry.=" AND tbl_lehrveranstaltung.studiengang_kz='".addslashes($stg_kz)."'";

$qry.=" ORDER BY unr, datum, stunde, ort_kurzbz, studiensemester_kurzbz, studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, stg_kurzbz";

echo '<table class="tablesorter" id="t1">
		<thead>
		<tr>
			<th class="table-sortable:date">Datum</th>
			
			<th>Ort</th>
			<th>Studierende aktuell (Plätze maximal)</th>
			<th>Gruppen (Studierende aktuell)</th>
			<th>Lehrveranstaltung</th>
			<th>Lehrform</th>
		</tr>
		</thead>
		<tbody>';

//echo $qry;
$lastdatum=0;
$laststunde=0;
$lastort=0;
$anzahl_studenten=0;
$lehrfach='';
$lehrfach_bez='';
$lehrform='';
$arr=array();

function getAnzahl($studiengang_kz, $semester, $verband, $gruppe, $gruppe_kurzbz, $studiensemester_kurzbz)
{
	global $db;
	if($gruppe_kurzbz=='')
	{
		$qry = "SELECT count(*) as anzahl FROM public.tbl_studentlehrverband 
				WHERE studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'
				AND studiengang_kz='".addslashes($studiengang_kz)."' AND
				semester='".addslashes($semester)."'";
		if(trim($verband)!='')
			$qry.=" AND trim(verband)=trim('".addslashes($verband)."')";
		if(trim($gruppe)!='')
			$qry.=" AND trim(gruppe)=trim('".addslashes($gruppe)."')";
		
	}
	else 
	{
		$qry = "SELECT count(*) as anzahl FROM public.tbl_benutzergruppe 
				WHERE studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'
				AND gruppe_kurzbz='".addslashes($gruppe_kurzbz)."'";
	}
	if($res_anz = $db->db_query($qry))
	{
		if($row_anz = $db->db_fetch_object($res_anz))
		{
			return $row_anz->anzahl;
		}
	}
}
$gruppen='';
if($result = $db->db_query($qry))
{
	while($row = $db->db_fetch_object($result))
	{
		if($lastdatum==$row->datum && $laststunde==$row->stunde && $lastort==$row->ort_kurzbz && $lehrfach==$row->lehrfach && $lehrfach_bez==$row->lehrfach_bez && $lehrform==$row->lehrform)
		{
			//Solange alles gleich ist zusammenzaehlen
			$anzahl = getAnzahl($row->studiengang_kz, $row->semester, $row->verband, $row->gruppe, $row->gruppe_kurzbz, $row->studiensemester_kurzbz);		
			$anzahl_studenten += $anzahl;
			$gruppen .=($row->gruppe_kurzbz==''?$row->stg_kurzbz.$row->semester.$row->verband.$row->gruppe:$row->gruppe_kurzbz)." ($anzahl), ";
		}
		else 
		{
			if($lastdatum!=0)
			{
				// wenn sich der Raum, Datum oder Stunde aendert, dann pruefen ob die Anzahl in den Raum passt
				// und ggf eine Meldung ausgeben
				$gruppen = mb_substr($gruppen, 0, mb_strlen($gruppen)-2);
				if($anzahl_studenten>$ort[$lastort]->max_person)
				{
					//$diff = $anzahl_studenten-$ort[$lastort]->max_person;
					$diffprozent = ($ort[$lastort]->max_person)/100*10;
					
					$style='';
					if((($ort[$lastort]->max_person+$diffprozent)-$anzahl_studenten)<0)
						$style='style="background-color: FCC850;"';
					if((($ort[$lastort]->max_person+$diffprozent)-$anzahl_studenten)<-2)
						$style='style="background-color: FF702D;"';
					if((($ort[$lastort]->max_person+$diffprozent)-$anzahl_studenten)<-4)
						$style='style="background-color: e83700;"';
					if((($ort[$lastort]->max_person+$diffprozent)-$anzahl_studenten)<-6)
						$style='style="background-color: a00404; color: d3d3d3"';

					//echo "<tr><td>$lastdatum</td><td>$laststunde</td><td>$lastort</td><td $style>$anzahl_studenten (".$ort[$lastort]->max_person.")</td><td>$gruppen</td><td>$lehrfach - $lehrfach_bez</td></tr>";
					$arr[]="<tr>
								<td>$lastdatum</td>
								<td>$lastort</td>
								<td $style>$anzahl_studenten (".$ort[$lastort]->max_person.")</td>
								<td>$gruppen</td>
								<td>$lehrfach - $lehrfach_bez</td>
								<td>$lehrform</td></tr>";
					
				}
				$anzahl_studenten=0;
				$gruppen='';
			}
			
			$anzahl = getAnzahl($row->studiengang_kz, $row->semester, $row->verband, $row->gruppe, $row->gruppe_kurzbz, $row->studiensemester_kurzbz);
			$anzahl_studenten += $anzahl;
			$gruppen .=($row->gruppe_kurzbz==''?$row->stg_kurzbz.$row->semester.$row->verband.$row->gruppe:$row->gruppe_kurzbz)." ($anzahl), ";
		}
		$lastdatum = $row->datum;
		$laststunde = $row->stunde;
		$lastort = $row->ort_kurzbz;
		$lehrfach = $row->lehrfach;
		$lehrfach_bez = $row->lehrfach_bez;
		$lehrform = $row->lehrform;
	}
}
else 
{
	echo "Fehler:".$qry;
}
$arr=array_unique($arr);
foreach ($arr AS $row)
	echo $row;
echo '</tbody></table>';
?>
</body>
</html>