98 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
<?php
 | 
						|
require_once 'db.php';
 | 
						|
require_once 'checkLogin.php';
 | 
						|
@session_start();
 | 
						|
//print_r($_POST);
 | 
						|
//sprawdź czy dane zostały przesłane w post, data (DD-MM-RRRR), start (HH:MM), end (HH:MM), status (id statusu), zdalne (checkbox), clearTime (checkbox)
 | 
						|
//zweryfikuj poprawność wszystkich danych, a także czy dany dzień jest w bazie
 | 
						|
if(!(strtotime($_POST["date"])!== false))
 | 
						|
{
 | 
						|
    $_SESSION['innfoError'] = "Nioeprawidłowa data1";
 | 
						|
    header("Location: editDaySelect.php");
 | 
						|
    exit();
 | 
						|
}
 | 
						|
if(!(strtotime($_POST["start"])!== false))
 | 
						|
{
 | 
						|
    $_SESSION['innfoError'] = "Nioeprawidłowa godzina rozpoczęcia";
 | 
						|
    header("Location: editDaySelect.php");
 | 
						|
    exit();
 | 
						|
}
 | 
						|
if(!(strtotime($_POST["end"])!== false))
 | 
						|
{
 | 
						|
    $_SESSION['innfoError'] = "Nioeprawidłowa godzina zakończenia";
 | 
						|
    header("Location: editDaySelect.php");
 | 
						|
    exit();
 | 
						|
}
 | 
						|
//clearTime może być tylko true lub false
 | 
						|
$clearTime = false;
 | 
						|
if(isset($_POST['clearTime']))
 | 
						|
{
 | 
						|
    $clearTime = true;
 | 
						|
}
 | 
						|
$zdalne = false;
 | 
						|
if(isset($_POST['zdalne']))
 | 
						|
{
 | 
						|
    $zdalne = true;
 | 
						|
}
 | 
						|
//sprawdź czy jest wpis w bazie dla danego dnia
 | 
						|
$sql = "SELECT * FROM obecnosc, statusy WHERE obecnosc.kto = :kto AND obecnosc.data = :data AND obecnosc.status = statusy.id";
 | 
						|
$stmt = $pdo->prepare($sql);
 | 
						|
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
 | 
						|
$stmt->bindValue(':data', $_POST['date'], PDO::PARAM_STR);
 | 
						|
$stmt->execute();
 | 
						|
$work = $stmt->fetch(PDO::FETCH_ASSOC);
 | 
						|
//sprawdź czy jest wpis w bazie dla danego dnia
 | 
						|
if($work === false)
 | 
						|
{
 | 
						|
    $_SESSION['innfoError'] = "Brak danych o tym dniu";
 | 
						|
    header("Location: editDaySelect.php");
 | 
						|
    exit();
 | 
						|
}
 | 
						|
//jeżeli statusy oznaczaWolne ustaw clearTime na true
 | 
						|
$sql = "SELECT * FROM statusy WHERE id = :id";
 | 
						|
$stmt = $pdo->prepare($sql);
 | 
						|
$stmt->bindValue(':id', $_POST['status'], PDO::PARAM_INT);
 | 
						|
$stmt->execute();
 | 
						|
$status = $stmt->fetch(PDO::FETCH_ASSOC);
 | 
						|
if($status['oznaczaWolne'] == 1)
 | 
						|
{
 | 
						|
    $clearTime = true;
 | 
						|
}
 | 
						|
//jeżeli $status['oznaczaWolne'] == 0 to musi być ustawiony czas rozpoczęcia i zakończenia
 | 
						|
if($status['oznaczaWolne'] == 0 && $clearTime == true)
 | 
						|
{
 | 
						|
    $_SESSION['innfoError'] = "Nie można ustawić czasu rozpoczęcia i zakończenia na NULL";
 | 
						|
    header("Location: editDaySelect.php");
 | 
						|
    exit();
 | 
						|
}
 | 
						|
//sprawdź czy już jest zaakceptowane, takich nie można edytować
 | 
						|
if($work['zaakceptowane'] == 1)
 | 
						|
{
 | 
						|
    $_SESSION['innfoError'] = "Nie można edytować już zaakceptowanego dnia";
 | 
						|
    header("Location: editDaySelect.php");
 | 
						|
    exit();
 | 
						|
}
 | 
						|
//update
 | 
						|
$sql = "UPDATE obecnosc SET czasZaczecia = :czasZaczecia, czasKonca = :czasKonca, status = :status, zdalne = :zdalne WHERE kto = :kto AND data = :data";
 | 
						|
$stmt = $pdo->prepare($sql);
 | 
						|
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
 | 
						|
$stmt->bindValue(':data', $_POST['date'], PDO::PARAM_STR);
 | 
						|
$stmt->bindValue(':czasZaczecia', $_POST['start'], PDO::PARAM_STR);
 | 
						|
$stmt->bindValue(':czasKonca', $_POST['end'], PDO::PARAM_STR);
 | 
						|
$stmt->bindValue(':status', $_POST['status'], PDO::PARAM_INT);
 | 
						|
$stmt->bindValue(':zdalne', $zdalne, PDO::PARAM_INT);
 | 
						|
$stmt->execute();
 | 
						|
//jeżeli clearTime jest true to ustaw czas rozpoczęcia i zakończenia na NULL
 | 
						|
if($clearTime)
 | 
						|
{
 | 
						|
    $sql = "UPDATE obecnosc SET czasZaczecia = NULL, czasKonca = NULL WHERE kto = :kto AND data = :data";
 | 
						|
    $stmt = $pdo->prepare($sql);
 | 
						|
    $stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
 | 
						|
    $stmt->bindValue(':data', $_POST['date'], PDO::PARAM_STR);
 | 
						|
    $stmt->execute();
 | 
						|
}
 | 
						|
$_SESSION['innfoError'] = "Dane zostały zaktualizowane";
 | 
						|
header("Location: editDaySelect.php");
 | 
						|
exit();
 | 
						|
?>
 |