mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
blockierende Zeitsperren auch serverseitig prüfen, clientseitige Prüfung geringfügig angepasst
This commit is contained in:
@@ -45,6 +45,37 @@ require_once('../../../include/bisverwendung.class.php');
|
|||||||
require_once('../../../include/studiensemester.class.php');
|
require_once('../../../include/studiensemester.class.php');
|
||||||
require_once('../../../include/benutzerberechtigung.class.php');
|
require_once('../../../include/benutzerberechtigung.class.php');
|
||||||
|
|
||||||
|
function checkZeitsperren($p, $uid, $day)
|
||||||
|
{
|
||||||
|
$zs = new zeitsperre();
|
||||||
|
$sperreVorhanden = false;
|
||||||
|
|
||||||
|
if( !$zs->getSperreByDate($uid, $day, null,
|
||||||
|
zeitsperre::NUR_BLOCKIERENDE_ZEITSPERREN) )
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
"status" => false,
|
||||||
|
"msg" => 'Fehler beim Überprüfen der Zeitsperren'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if( count($zs->result) === 0 )
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
"status" => true,
|
||||||
|
"msg" => ''
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$zsdate = new DateTime($day);
|
||||||
|
$zsdate = $zsdate->format('d.m.Y');
|
||||||
|
$msg = $p->t("zeitaufzeichnung/zeitsperreVorhanden",
|
||||||
|
[$zsdate, $zs->result[0]->zeitsperretyp_kurzbz]);
|
||||||
|
return array(
|
||||||
|
"status" => false,
|
||||||
|
"msg" => $msg
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$sprache = getSprache();
|
$sprache = getSprache();
|
||||||
$p=new phrasen($sprache);
|
$p=new phrasen($sprache);
|
||||||
@@ -336,7 +367,7 @@ echo '
|
|||||||
|
|
||||||
ret_uhrzeit = foo(now.getHours());
|
ret_uhrzeit = foo(now.getHours());
|
||||||
ret_uhrzeit = ret_uhrzeit + ":" + foo(now.getMinutes());
|
ret_uhrzeit = ret_uhrzeit + ":" + foo(now.getMinutes());
|
||||||
|
|
||||||
document.getElementById("bis_datum").value=ret_datum;
|
document.getElementById("bis_datum").value=ret_datum;
|
||||||
document.getElementById("bis_uhrzeit").value=ret_uhrzeit;
|
document.getElementById("bis_uhrzeit").value=ret_uhrzeit;
|
||||||
}
|
}
|
||||||
@@ -354,9 +385,10 @@ echo '
|
|||||||
|
|
||||||
ret_uhrzeit = foo(now.getHours());
|
ret_uhrzeit = foo(now.getHours());
|
||||||
ret_uhrzeit = ret_uhrzeit + ":" + foo(now.getMinutes());
|
ret_uhrzeit = ret_uhrzeit + ":" + foo(now.getMinutes());
|
||||||
|
|
||||||
document.getElementById("von_datum").value=ret_datum;
|
document.getElementById("von_datum").value=ret_datum;
|
||||||
document.getElementById("von_uhrzeit").value=ret_uhrzeit;
|
document.getElementById("von_uhrzeit").value=ret_uhrzeit;
|
||||||
|
$("#von_datum").trigger("change");
|
||||||
}
|
}
|
||||||
|
|
||||||
function foo(val)
|
function foo(val)
|
||||||
@@ -464,6 +496,7 @@ echo '
|
|||||||
{
|
{
|
||||||
document.getElementById("von_datum").value=document.getElementById("bis_datum").value;
|
document.getElementById("von_datum").value=document.getElementById("bis_datum").value;
|
||||||
document.getElementById("von_uhrzeit").value=document.getElementById("bis_uhrzeit").value;
|
document.getElementById("von_uhrzeit").value=document.getElementById("bis_uhrzeit").value;
|
||||||
|
$("#von_datum").trigger("change");
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkdatum()
|
function checkdatum()
|
||||||
@@ -794,26 +827,23 @@ echo '
|
|||||||
uid: uid
|
uid: uid
|
||||||
},
|
},
|
||||||
success: function (json)
|
success: function (json)
|
||||||
{
|
|
||||||
if (json.length > 0)
|
|
||||||
{
|
{
|
||||||
var output = "";
|
var output = "";
|
||||||
for (var i = 0; i < json.length; i++)
|
if (json.length > 0)
|
||||||
{
|
{
|
||||||
output = "Für den Tag " + json[i].day + " ist bereits eine Zeitsperre vom Typ " + json[i].typ + " eingetragen!";
|
output = "' . $p->t("zeitaufzeichnung/zeitsperreVorhanden", ['{day}', '{typ}']) . '";
|
||||||
|
output = output.replace(\'{day}\', json[0].day);
|
||||||
var phrase = "' . $p->t("zeitaufzeichnung/zeitsperreVorhanden", ['{day}', '{typ}']) . '";
|
output = output.replace(\'{typ}\', json[0].typ);
|
||||||
phrase = phrase.replace(\'{day}\', json[i].day);
|
$("#errZeitsperren").show();
|
||||||
phrase = phrase.replace(\'{typ}\', json[i].typ);
|
$("#buttonSave").prop("disabled",true);
|
||||||
alert (phrase);
|
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
else
|
{
|
||||||
{
|
$("#errZeitsperren").hide();
|
||||||
$("#buttonSave").prop("disabled",false);
|
$("#buttonSave").prop("disabled",false);
|
||||||
output = "";
|
output = "";
|
||||||
}
|
}
|
||||||
$("#outputZeitsperren").html(output);
|
$("#outputZeitsperren").html(output);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -826,14 +856,6 @@ echo '
|
|||||||
|
|
||||||
echo '<h1>'.$p->t("zeitaufzeichnung/zeitaufzeichnungVon").' '.$db->convert_html_chars($bn->vorname).' '.$db->convert_html_chars($bn->nachname).'</h1>';
|
echo '<h1>'.$p->t("zeitaufzeichnung/zeitaufzeichnungVon").' '.$db->convert_html_chars($bn->vorname).' '.$db->convert_html_chars($bn->nachname).'</h1>';
|
||||||
|
|
||||||
echo '
|
|
||||||
<tr>
|
|
||||||
<td colspan="1">
|
|
||||||
<p id="outputZeitsperren" style="color:red; font-weight:bold;" >
|
|
||||||
</p>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
';
|
|
||||||
// Wenn Kartennummer übergeben wurde dann hole uid von Karteninhaber
|
// Wenn Kartennummer übergeben wurde dann hole uid von Karteninhaber
|
||||||
if($kartennummer != '')
|
if($kartennummer != '')
|
||||||
{
|
{
|
||||||
@@ -934,7 +956,12 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
|
|||||||
$data[7] = NULL;
|
$data[7] = NULL;
|
||||||
if (!isset($data[8]))
|
if (!isset($data[8]))
|
||||||
$data[8] = NULL;
|
$data[8] = NULL;
|
||||||
if ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') < $sperrdatum)
|
|
||||||
|
$zscheck = checkZeitsperren($p, $user, $vonCSV);
|
||||||
|
if( $zscheck['status'] === false ) {
|
||||||
|
echo '<span id="triggerPhasenReset" style="color:red"><b>' . $p->t("global/fehlerBeimSpeichernDerDaten") . ': ' . $zscheck['msg'] . '</b></span><br>';
|
||||||
|
}
|
||||||
|
elseif ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') < $sperrdatum)
|
||||||
echo '<span id="triggerPhasenReset" style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')</b></span><br>';
|
echo '<span id="triggerPhasenReset" style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')</b></span><br>';
|
||||||
elseif ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') > $limitdatum)
|
elseif ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') > $limitdatum)
|
||||||
echo '<span id="triggerPhasenReset" style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da ('.$data[2].') zu weit in der Zukunft liegt.</b></span><br>';
|
echo '<span id="triggerPhasenReset" style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da ('.$data[2].') zu weit in der Zukunft liegt.</b></span><br>';
|
||||||
@@ -1125,8 +1152,13 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
|
|||||||
$extractTimeBis = $datum->formatDatum($bis, $format = 'H:i:s');
|
$extractTimeBis = $datum->formatDatum($bis, $format = 'H:i:s');
|
||||||
$extractVon = $datum->formatDatum($von, $format = 'Y-m-d');
|
$extractVon = $datum->formatDatum($von, $format = 'Y-m-d');
|
||||||
$extractBis = $datum->formatDatum($bis, $format = 'Y-m-d');
|
$extractBis = $datum->formatDatum($bis, $format = 'Y-m-d');
|
||||||
|
|
||||||
if (!$projects_of_user->checkProjectInCorrectTime($projekt_kurzbz, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d')))
|
$zscheck = checkZeitsperren($p, $user, $datum->formatDatum($von, $format='Y-m-d'));
|
||||||
|
if( $zscheck['status'] === false ) {
|
||||||
|
echo '<span id="triggerPhasenReset" style="color:red"><b>' . $p->t("global/fehlerBeimSpeichernDerDaten") . ': ' . $zscheck['msg'] . '</b></span><br>';
|
||||||
|
$saveerror = 1;
|
||||||
|
}
|
||||||
|
elseif (!$projects_of_user->checkProjectInCorrectTime($projekt_kurzbz, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d')))
|
||||||
{
|
{
|
||||||
echo '<span id="triggerPhasenReset" style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.</b></span><br>';
|
echo '<span id="triggerPhasenReset" style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.</b></span><br>';
|
||||||
$saveerror = 1;
|
$saveerror = 1;
|
||||||
@@ -1222,7 +1254,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
|
|||||||
$saveerror = 1;
|
$saveerror = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($saveerror == 0)
|
if ($saveerror == 0)
|
||||||
{
|
{
|
||||||
echo '<span style="color:green"><b>'.$p->t("global/datenWurdenGespeichert").'</b></span>';
|
echo '<span style="color:green"><b>'.$p->t("global/datenWurdenGespeichert").'</b></span>';
|
||||||
@@ -1658,16 +1690,22 @@ if ($projekt->getProjekteMitarbeiter($user, true))
|
|||||||
</tr>';
|
</tr>';
|
||||||
echo '<tr><td colspan="4"> </td></tr>';
|
echo '<tr><td colspan="4"> </td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
//Start/Ende
|
//Start/Ende
|
||||||
$von_ts = $datum->mktime_fromtimestamp($datum->formatDatum($von, $format='Y-m-d H:i:s'));
|
$von_ts = $datum->mktime_fromtimestamp($datum->formatDatum($von, $format='Y-m-d H:i:s'));
|
||||||
$bis_ts = $datum->mktime_fromtimestamp($datum->formatDatum($bis, $format='Y-m-d H:i:s'));
|
$bis_ts = $datum->mktime_fromtimestamp($datum->formatDatum($bis, $format='Y-m-d H:i:s'));
|
||||||
$diff = $bis_ts - $von_ts;
|
$diff = $bis_ts - $von_ts;
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
|
<tr id="errZeitsperren">
|
||||||
|
<td> </td>
|
||||||
|
<td colspan="3">
|
||||||
|
<p id="outputZeitsperren" style="color:red; font-weight:bold;" ></p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>'.$p->t("global/von").' - '.$p->t("global/bis").'</td>
|
<td>'.$p->t("global/von").' - '.$p->t("global/bis").'</td>
|
||||||
<td>
|
<td>
|
||||||
<input type="text" class="datepicker_datum" id="von_datum" name="von_datum" value="'.$db->convert_html_chars($datum->formatDatum($von, $format='d.m.Y')).'" size="9">
|
<input type="text" class="datepicker_datum" id="von_datum" name="von_datum" value="'.$db->convert_html_chars($datum->formatDatum($von, $format='d.m.Y')).'" size="9">
|
||||||
<input onchange="checkZeiten()" type="text" class="timepicker" id="von_uhrzeit" name="von_uhrzeit" value="'.$db->convert_html_chars($datum->formatDatum($von, $format='H:i')).'" size="4">
|
<input onchange="checkZeiten()" type="text" class="timepicker" id="von_uhrzeit" name="von_uhrzeit" value="'.$db->convert_html_chars($datum->formatDatum($von, $format='H:i')).'" size="4">
|
||||||
</td>';
|
</td>';
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ if ( isset($_GET['day']) )
|
|||||||
$zs = new zeitsperre();
|
$zs = new zeitsperre();
|
||||||
$sperreVorhanden = false;
|
$sperreVorhanden = false;
|
||||||
$typ = '';
|
$typ = '';
|
||||||
$zs->getSperreByDate($uid, $day, null);
|
$zs->getSperreByDate($uid, $day, null, zeitsperre::NUR_BLOCKIERENDE_ZEITSPERREN);
|
||||||
$result_obj = array();
|
$result_obj = array();
|
||||||
$now = new DateTime($day);
|
$now = new DateTime($day);
|
||||||
$now = $now->format('d.m.Y');
|
$now = $now->format('d.m.Y');
|
||||||
|
|||||||
@@ -23,6 +23,9 @@ require_once(dirname(__FILE__).'/basis_db.class.php');
|
|||||||
|
|
||||||
class zeitsperre extends basis_db
|
class zeitsperre extends basis_db
|
||||||
{
|
{
|
||||||
|
const NUR_BLOCKIERENDE_ZEITSPERREN = true;
|
||||||
|
const BLOCKIERENDE_ZEITSPERREN = "'Krank','Urlaub','ZA','DienstV','PflegeU','DienstF','CovidSB','CovidKS'";
|
||||||
|
|
||||||
public $new; // boolean
|
public $new; // boolean
|
||||||
public $result = array(); // news Objekt
|
public $result = array(); // news Objekt
|
||||||
|
|
||||||
@@ -369,10 +372,12 @@ class zeitsperre extends basis_db
|
|||||||
* @param $user
|
* @param $user
|
||||||
* @param $datum
|
* @param $datum
|
||||||
* @param $stunde optional, wird nur abgefragt, wenn != null
|
* @param $stunde optional, wird nur abgefragt, wenn != null
|
||||||
|
* @param $nurblockierend boolean default false
|
||||||
* @return true wenn ok, false im Fehlerfall
|
* @return true wenn ok, false im Fehlerfall
|
||||||
*/
|
*/
|
||||||
public function getSperreByDate($user, $datum, $stunde=null)
|
public function getSperreByDate($user, $datum, $stunde=null, $nurblockierend=false)
|
||||||
{
|
{
|
||||||
|
$this->result = array();
|
||||||
$qry = "
|
$qry = "
|
||||||
SELECT
|
SELECT
|
||||||
*
|
*
|
||||||
@@ -382,6 +387,10 @@ class zeitsperre extends basis_db
|
|||||||
vondatum<=".$this->db_add_param($datum)."
|
vondatum<=".$this->db_add_param($datum)."
|
||||||
AND bisdatum>=".$this->db_add_param($datum);
|
AND bisdatum>=".$this->db_add_param($datum);
|
||||||
|
|
||||||
|
if( $nurblockierend ) {
|
||||||
|
$qry .= " AND zeitsperretyp_kurzbz in (" . self::BLOCKIERENDE_ZEITSPERREN . ")";
|
||||||
|
}
|
||||||
|
|
||||||
if(!is_null($stunde))
|
if(!is_null($stunde))
|
||||||
$qry.=" AND
|
$qry.=" AND
|
||||||
((vondatum=".$this->db_add_param($datum)." AND vonstunde<=".$this->db_add_param($stunde).") OR vonstunde is null OR vondatum<>".$this->db_add_param($datum).") AND
|
((vondatum=".$this->db_add_param($datum)." AND vonstunde<=".$this->db_add_param($stunde).") OR vonstunde is null OR vondatum<>".$this->db_add_param($datum).") AND
|
||||||
@@ -485,7 +494,7 @@ class zeitsperre extends basis_db
|
|||||||
|
|
||||||
$qry = "select datum::date, freigabevon, zeitsperretyp_kurzbz
|
$qry = "select datum::date, freigabevon, zeitsperretyp_kurzbz
|
||||||
from (SELECT generate_series(vondatum::timestamp, bisdatum::timestamp, '1 day') as datum, freigabevon, mitarbeiter_uid, zeitsperretyp_kurzbz FROM campus.tbl_zeitsperre where vonstunde is null and bisstunde is null) a
|
from (SELECT generate_series(vondatum::timestamp, bisdatum::timestamp, '1 day') as datum, freigabevon, mitarbeiter_uid, zeitsperretyp_kurzbz FROM campus.tbl_zeitsperre where vonstunde is null and bisstunde is null) a
|
||||||
where a.mitarbeiter_uid = ".$this->db_add_param($uid)." and datum>(now() - interval '".$anz_tage." Days') and zeitsperretyp_kurzbz in ('Krank','Urlaub', 'ZA', 'DienstV','PflegeU', 'DienstF','CovidSB','CovidKS')";
|
where a.mitarbeiter_uid = ".$this->db_add_param($uid)." and datum>(now() - interval '".$anz_tage." Days') and zeitsperretyp_kurzbz in (" . self::BLOCKIERENDE_ZEITSPERREN . ")";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user