first commit
This commit is contained in:
283
krankheit.php
Executable file
283
krankheit.php
Executable file
@ -0,0 +1,283 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
#require_once "func_lvs_exk_mehrtaegig.php";
|
||||
#require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (isset($_GET['edit'])) {
|
||||
$_SESSION["krank_status"] = 'edit';
|
||||
$krid = $_GET['edit'];
|
||||
$_SESSION["krank_krid"] = $krid;
|
||||
} else {
|
||||
$_SESSION["krank_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
# -- Fehlermeldungen -- #
|
||||
if (isset($_GET[error])) {
|
||||
|
||||
$errorno = $_GET[error];
|
||||
|
||||
$smarty->assign('krank_error', 1);
|
||||
|
||||
$smarty->assign('krank_value_funktion', $_SESSION["krank_value_funktion"]);
|
||||
$smarty->assign('krank_value_std', $_SESSION["krank_value_sws"]);
|
||||
$smarty->assign('krank_value_datumvon', $_SESSION["krank_value_beginn_krankheit"]);
|
||||
$smarty->assign('krank_value_datumbis', $_SESSION["krank_value_ende_krankheit"]);
|
||||
|
||||
if ($errorno == 3) {
|
||||
# ungültiges Datum
|
||||
$smarty->assign('krank_error_text', "Das eingegebene Datum ist nicht korrekt. Bitte korrigieren Sie das Datum!");
|
||||
}
|
||||
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
if ($errorno == 5) {
|
||||
$smarty->assign('krank_error_text', "Das Datum ist außerhalb des Jahrgangs!<br>Datum muss im Bereich 01.09.$jahrgang - 31.08.$jahrgang2 liegen.");
|
||||
}
|
||||
if ($errorno == 6) {
|
||||
$smarty->assign('krank_error_text', "Die Krankheitstage müssen zussamenhängend sein und größer 28 Tage betragen.");
|
||||
}
|
||||
}
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if ($_SESSION["krank_status"] == 'edit') {
|
||||
$result_edit = $db->query("SELECT krid, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende
|
||||
FROM dep_krankheit
|
||||
WHERE krid = $krid");
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
$smarty->assign('krank_status', $_SESSION["krank_status"]);
|
||||
$smarty->assign('krank_value_datumvon', "$row_edit[beginn]");
|
||||
$smarty->assign('krank_value_datumbis', "$row_edit[ende]");
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
if ($_GET['editende'] == 1) {
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["krank_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Gespeicherte Werte
|
||||
$query2 = "SELECT krid, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende
|
||||
FROM dep_krankheit
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
ORDER BY krid ASC";
|
||||
|
||||
$result2 = $db->query($query2) or die("Cannot execute query2");
|
||||
|
||||
while ($row2 = $result2->fetch_array()) {
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
|
||||
# Jahressumme
|
||||
$query_jahrsum = $db->query("SELECT sum(lvs) summe_jahr
|
||||
FROM dep_krankheit
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang");
|
||||
$row_jahrsum = $query_jahrsum->fetch_array();
|
||||
$summe_jahr = number_format($row_jahrsum['summe_jahr'], 2, ',', '.');
|
||||
$smarty->assign('krank_value_summe_jahr', $summe_jahr);
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'save') {
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
|
||||
#$funktion = $_POST['funktion'];
|
||||
#$sws = str_replace(',','.',str_replace('.','', $_POST['sws']));
|
||||
|
||||
$beginn = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['beginn_krankheit']);
|
||||
if($beginn == ''){
|
||||
$beginn = $jahrgang."-09-01";
|
||||
}
|
||||
|
||||
$ende = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['ende_krankheit']);
|
||||
if($ende == ''){
|
||||
$ende = $jahrgang2."-08-31";
|
||||
}
|
||||
|
||||
|
||||
#$_SESSION["krank_value_funktion"] = $funktion;
|
||||
#$_SESSION["krank_value_sws"] = $sws;
|
||||
$_SESSION["krank_value_beginn_krankheit"] = $_POST['beginn_krankheit'];
|
||||
$_SESSION["krank_value_ende_krankheit"] = $_POST['ende_krankheit'];
|
||||
|
||||
function validateDate($date, $format = 'Y-m-d')
|
||||
{
|
||||
$d = DateTime::createFromFormat($format, $date);
|
||||
return $d && $d->format($format) == $date;
|
||||
}
|
||||
|
||||
if(!validateDate($beginn)){
|
||||
if($_SESSION["krank_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3&edit=$_SESSION[krank_krid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
if(!validateDate($ende)){
|
||||
if($_SESSION["krank_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3&edit=$_SESSION[krank_krid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
/* Ermäßigungen werden immer nur ganze Monate vergeben*/
|
||||
#$year_start = substr($beginn,0,4);
|
||||
#$mon_start = substr($beginn,5,2);
|
||||
#$day_start = '01'; #substr($beginn,8,2);
|
||||
#$save_beginn = "$year_start-$mon_start-$day_start";
|
||||
|
||||
|
||||
# Ende ist immer Monatsletzter des angegebenen Monats
|
||||
#$year_ende = substr($ende,0,4);
|
||||
#$mon_ende = substr($ende,5,2);
|
||||
#$day_ende = '01'; #substr($ende,8,2); # Hier gibt man monatsersten an, die Funktion Y-m-t macht Monatsende draus
|
||||
#$save_ende = "$year_ende-$mon_ende-$day_ende";
|
||||
#$L = new DateTime( $save_ende);
|
||||
#$save_ende = $L->format( 'Y-m-t' );
|
||||
|
||||
# Datum außerhalb des Jahrgangs 01.09.-31.08
|
||||
if(strtotime($beginn) > strtotime("$jahrgang2-08-31") OR
|
||||
strtotime($beginn) < strtotime("$jahrgang-09-01") OR
|
||||
strtotime($ende) > strtotime("$jahrgang2-08-31") OR
|
||||
strtotime($ende) < strtotime("$jahrgang-09-01")
|
||||
){
|
||||
if($_SESSION["krank_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5&edit=$_SESSION[krank_krid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
# Zeitraum muss über 28 Tage haben. Besprechung Haug, Bittner, Grimm am 27.07.2022
|
||||
# Mailverlauf 28.07.2022
|
||||
#
|
||||
#Ist der Zeitraum zwischen 01.09.2019-10.09.2019 -> 9 Tage oder 10 Tage? Krank ist man ja auch am 01.09 und am 10.09
|
||||
#Zweite Frage: Ist eine längere Krankheit bei >28 Tage oder >=28Tage?
|
||||
#
|
||||
#Hallo Herr Schwarz,
|
||||
#
|
||||
#der erste und letzte Tag zählt mit: in Ihrem Beispiel daher 10 Tage.
|
||||
#Längere Krankheit: >= 28 Tage
|
||||
#
|
||||
#Viele Grüße
|
||||
#Thilo Haug
|
||||
|
||||
function seDay($begin,$end,$format,$sep){
|
||||
|
||||
$pos1 = strpos($format, 'd');
|
||||
$pos2 = strpos($format, 'm');
|
||||
$pos3 = strpos($format, 'Y');
|
||||
|
||||
$begin = explode($sep,$begin);
|
||||
$end = explode($sep,$end);
|
||||
|
||||
$first = GregorianToJD($end[$pos2],$end[$pos1],$end[$pos3]);
|
||||
$second = GregorianToJD($begin[$pos2],$begin[$pos1],$begin[$pos3]);
|
||||
|
||||
# +1 da erster Tag mitgerechnet werden soll
|
||||
if($first > $second)
|
||||
return $first - $second+1;
|
||||
else
|
||||
return $second - $first+1;
|
||||
|
||||
}
|
||||
$diff = seDay($beginn,$ende,"Ymd","-");
|
||||
|
||||
if($diff < 28){
|
||||
if($_SESSION["krank_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=6\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=6&edit=$_SESSION[krank_krid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
if ($_SESSION["krank_status"] == 'neu') {
|
||||
$sql1 = $db->query("INSERT INTO dep_krankheit ( imtuid
|
||||
, jahr
|
||||
, beginn
|
||||
, ende
|
||||
, lvs
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, '$beginn'
|
||||
, '$ende'
|
||||
, ''
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
}
|
||||
|
||||
if ($_SESSION["krank_status"] == 'edit') {
|
||||
$krid = $_SESSION["krank_krid"];
|
||||
|
||||
$result = $db->query("UPDATE dep_krankheit
|
||||
SET beginn = '$beginn'
|
||||
, ende = '$ende'
|
||||
, modify_date = '$datum'
|
||||
WHERE krid = $krid
|
||||
");
|
||||
|
||||
unset($_SESSION['krank_krid']);
|
||||
}
|
||||
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
|
||||
$editende = 1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende\">";
|
||||
|
||||
|
||||
}
|
||||
if ($action == 'del') {
|
||||
$krid = $_GET['krid'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
$del1 = $db->query("DELETE FROM dep_krankheit WHERE krid = $krid AND imtuid=$uid");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
Reference in New Issue
Block a user