init
parent
b0b4bc34d2
commit
a6b8d3285f
|
@ -1,132 +1 @@
|
|||
# ---> Node
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# Snowpack dependency directory (https://snowpack.dev/)
|
||||
web_modules/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional stylelint cache
|
||||
.stylelintcache
|
||||
|
||||
# Microbundle cache
|
||||
.rpt2_cache/
|
||||
.rts2_cache_cjs/
|
||||
.rts2_cache_es/
|
||||
.rts2_cache_umd/
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variable files
|
||||
.env
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
.env.local
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
.parcel-cache
|
||||
|
||||
# Next.js build output
|
||||
.next
|
||||
out
|
||||
|
||||
# Nuxt.js build / generate output
|
||||
.nuxt
|
||||
dist
|
||||
|
||||
# Gatsby files
|
||||
.cache/
|
||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||
# public
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# vuepress v2.x temp and cache directory
|
||||
.temp
|
||||
.cache
|
||||
|
||||
# Docusaurus cache and generated files
|
||||
.docusaurus
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
.tern-port
|
||||
|
||||
# Stores VSCode versions used for testing VSCode extensions
|
||||
.vscode-test
|
||||
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
|
||||
config.php
|
|
@ -1,3 +1,9 @@
|
|||
# Attendance-list
|
||||
|
||||
## Install
|
||||
1. Set up MySQL DB whit file db.sql
|
||||
1. fill config.php.temp file
|
||||
1. rename config.php.temp to config.php
|
||||
|
||||
## Licence
|
||||
Attendance-list © 2023 by kry008 is licensed under Attribution-NonCommercial-NoDerivatives 4.0 International
|
|
@ -0,0 +1,113 @@
|
|||
<?php
|
||||
if($_SERVER['REQUEST_METHOD'] == 'POST')
|
||||
{
|
||||
require_once 'db.php';
|
||||
$sql = "INSERT INTO `dzialy` (`id`, `skrot`, `nazwa`, `aktywne`) VALUES
|
||||
(NULL, '".$_POST['departmentShort']."', '".$_POST['department']."', 1);";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
//wstaw pierwszego użytkownika
|
||||
$sql = "INSERT INTO `users` (`id`, `login`, `haslo`, `imie`, `nazwisko`, `dzial`, `przelozony`, `aktywne`) VALUES
|
||||
(NULL, '".$_POST['usernameUser']."', SHA1('".($_POST['passwordUser'])."'), '".$_POST['nameUser']."', '".$_POST['surnameUser']."', 1, 1, 1);";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
//usun plik index.php
|
||||
unlink("index.html");
|
||||
//zamien nazwę index.php.temp na index.php
|
||||
rename("index.php.temp", "index.php");
|
||||
//przejdź do index.php
|
||||
header("Location: index.php");
|
||||
}
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Instalacja</title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj</h1>
|
||||
</header>
|
||||
<main id="register">
|
||||
|
||||
<?php
|
||||
if(@isset($_SESSION['error']))
|
||||
{
|
||||
echo '<p class="error">'.$_SESSION['error'].'</p>';
|
||||
unset($_SESSION['error']);
|
||||
}
|
||||
?>
|
||||
<table class="form">
|
||||
<form method="post" action="_install.php">
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
Skrypt zakłada że baza danych jest uzupełniona plikiem db.sql i config.php jest uzupełniony
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label>Login pierwszego użytkownika</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="usernameUser">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label>Hasło pierwszego użytkownika</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="password" name="passwordUser">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label>Imie</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="nameUser">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label>Nazwisko</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="surnameUser">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label>Nazwa działu</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="department">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label>Skrót działu</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="departmentShort" max="5">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" name="install" class="btn" value="Zainstaluj"/>
|
||||
</td>
|
||||
</tr>
|
||||
</form>
|
||||
</table>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
@session_start();
|
||||
//sprawdź czy użytkownik jest przełożonym $_POST['user'], jeżeli tak to dal danej daty $_POST['mm'] (YYYY-MM) ustaw obecności $_POST['user'] na zaakceptowane na 1
|
||||
//jeżeli nie to $_SESSION["innfoError"] = "Nie jesteś przełożonym tego użytkownika" i wróć do panel.php
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE id = :id AND przelozony = :przelozony";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $_POST['user'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':przelozony', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$user = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if($user === false)
|
||||
{
|
||||
$_SESSION["innfoError"] = "Nie jesteś przełożonym tego użytkownika";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = "UPDATE obecnosc SET zaakceptowane = 1 WHERE kto = :kto AND data LIKE :data";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_POST['user'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', $_POST['month'].'%', PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$_SESSION["innfoError"] = "Zaakceptowano dni";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
//activate.php?id=ID
|
||||
require_once 'db.php';
|
||||
@session_start();
|
||||
if($_SERVER['REQUEST_METHOD'] === 'GET')
|
||||
{
|
||||
if(isset($_GET['id']))
|
||||
{
|
||||
$id = $_GET['id'];
|
||||
$sql = "UPDATE uzytkownicy SET aktywne = 1 WHERE id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$_SESSION['innfoError'] = "Aktywowano użytkownika";
|
||||
header("Location: activateWorker.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
$_SESSION['innfoError'] = "Nie podano id użytkownika";
|
||||
header("Location: activateWorker.php");
|
||||
exit();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$_SESSION['innfoError'] = "Nie podano id użytkownika";
|
||||
header("Location: activateWorker.php");
|
||||
exit();
|
||||
}
|
||||
?>
|
|
@ -0,0 +1,85 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
@session_start();
|
||||
//wypisz wszystki użytkowników którzy mają status aktywne 0 i przelozony = id zalogowanego użytkownika, jeżeli nie ma takich to $_SESSION["innfoError"] = "Brak pracowników do aktywacji" i wróć do panel.php
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE aktywne = 0 AND przelozony = :przelozony";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':przelozony', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$uzytkownicy = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
if($uzytkownicy === false)
|
||||
{
|
||||
$_SESSION["innfoError"] = "Brak pracowników do aktywacji";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<div id="info">
|
||||
<?php
|
||||
echo @$_SESSION["innfoError"];
|
||||
$_SESSION["innfoError"] = "";
|
||||
?>
|
||||
</div>
|
||||
<main id="uzytkownicy">
|
||||
<table>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>IMIĘ</th>
|
||||
<th>NAZWISKO</th>
|
||||
<th>SKRÓT DZIAŁU</th>
|
||||
<th>AKTYWOWAĆ?</th>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
$i = 0;
|
||||
foreach($uzytkownicy as $user)
|
||||
{
|
||||
$i++;
|
||||
echo '<tr>';
|
||||
echo '<td>'.$user['id'].'</td>';
|
||||
echo '<td>'.$user['imie'].'</td>';
|
||||
echo '<td>'.$user['nazwisko'].'</td>';
|
||||
$sql = "SELECT * FROM dzialy WHERE id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $user['dzial'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$dzial = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
echo '<td>'.$dzial['skrot'].'</td>';
|
||||
echo '<td><a href="activate.php?id='.$user['id'].'"><button>Aktywuj</button></a><br /><a href="delUser.php?id='.$user['id'].'"><button>Usuń</button></a></td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
if($i == 0)
|
||||
{
|
||||
$_SESSION["innfoError"] = "Brak pracowników do aktywacji";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
</main>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,97 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
if($_SESSION['user_admin'] != 1)
|
||||
{
|
||||
//redirect to panel.php
|
||||
$_SESSION["innfoError"] = "Brak uprawnień do tej strony";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
//pobierz wszystkie dane użytkowników, których nie ma w tabeli admini kolumna kto
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE id NOT IN (SELECT kto FROM admini) AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
$uzytkownicy = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
//print_r($uzytkownicy);
|
||||
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['addAdmin']))
|
||||
{
|
||||
$user = $_POST['user'];
|
||||
$sql = "INSERT INTO admini (kto) VALUES (:kto)";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $user, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$_SESSION['innfoError'] = "Dodano admina";
|
||||
header("Location: dictionaries.php");
|
||||
exit();
|
||||
}
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="addAdmin.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<h3>Dodaj admina</h3>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="user">Wybierz użytkownika</label>
|
||||
</td>
|
||||
<td>
|
||||
<select name="user" id="user">
|
||||
<?php
|
||||
foreach($uzytkownicy as $user)
|
||||
{
|
||||
?>
|
||||
<option value="<?php echo $user['id']; ?>"><?php echo $user['imie']." ".$user['nazwisko']." (".$user['login'].")"; ?></option>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" name="addAdmin" class="btn" value="Dodaj"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,109 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="addDay_form.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="day">Wybierz dzień</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="date" name="day" id="day" value="<?php echo date('Y-m-d'); ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="start">Rozpoczęcie pracy*</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="time" name="start" id="start">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="end">Zakończenie pracy*</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="time" name="end" id="end">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="status">Status</label>
|
||||
</td>
|
||||
<td>
|
||||
<select name="status" id="status">
|
||||
<?php
|
||||
$sql = "SELECT * FROM statusy";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
$statusy = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
foreach($statusy as $status)
|
||||
{
|
||||
echo "<option value='".$status['id']."'>".$status['skrot']." - ".$status['nazwa']."</option>";
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="text-align: center;">
|
||||
<label for="zdalne">Praca zdalna (inna niż okazjonalna)</label>
|
||||
<input type="checkbox" name="zdalne" id="zdalne" value="1">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
* - opcjonalne przy statusach oznaczających wolne
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" name="submit" value="Dodaj dzień">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<button class="cancel" type="button" onclick="window.location.href='panel.php'">Anuluj</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,86 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
|
||||
//sprawdź czy ten dzień jeszcze nie był dodany
|
||||
$sql = "SELECT * FROM obecnosc WHERE kto = :kto AND data = :data AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', $_POST['day'], PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$work = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if($work !== false)
|
||||
{
|
||||
$_SESSION['innfoError'] = "Ten dzień już został dodany!";
|
||||
header('Location: addDay.php');
|
||||
exit();
|
||||
}
|
||||
//sprawdź czy podano godzinę rozpoczęcia i zakończenia pracy, jeżeli nie to ustaw NULL
|
||||
if($_POST['start'] == "")
|
||||
{
|
||||
$start = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
$start = $_POST['start'];
|
||||
}
|
||||
if($_POST['end'] == "")
|
||||
{
|
||||
$end = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
$end = $_POST['end'];
|
||||
}
|
||||
//jeżeli status oznaczaWolne == 0 to sprawdź czy jest podana godzina rozpoczęcia i zakończenia pracy, zakończenie musi być większe od rozpoczęcia
|
||||
$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'] == 0)
|
||||
{
|
||||
if($_POST['start'] == "" || $_POST['end'] == "")
|
||||
{
|
||||
$_SESSION['innfoError'] = "Musisz podać godzinę rozpoczęcia i zakończenia pracy!";
|
||||
header('Location: addDay.php');
|
||||
exit();
|
||||
}
|
||||
if($_POST['start'] >= $_POST['end'])
|
||||
{
|
||||
$_SESSION['innfoError'] = "Godzina zakończenia pracy musi być większa od godziny rozpoczęcia pracy!";
|
||||
header('Location: addDay.php');
|
||||
exit();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$end = NULL;
|
||||
$start = NULL;
|
||||
}
|
||||
//jeżeli status oznaczaWolne == 1 to praca zdalna zawsze będzie 0
|
||||
if($status['oznaczaWolne'] == 1)
|
||||
{
|
||||
$zdalne = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$zdalne = $_POST['zdalne'];
|
||||
}
|
||||
//dodaj dzień do bazy
|
||||
$sql = "INSERT INTO obecnosc VALUES (NULL, :kto, :data, :start, :end, :status, 0, :zdalne, 1)";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', $_POST['day'], PDO::PARAM_STR);
|
||||
$stmt->bindValue(':start', $start, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':end', $end, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':status', $_POST['status'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':zdalne', $zdalne, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$_SESSION['innfoError'] = "Dzień został dodany!";
|
||||
header('Location: addDay.php');
|
||||
exit();
|
||||
|
||||
|
||||
?>
|
|
@ -0,0 +1,98 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
/*
|
||||
CREATE TABLE IF NOT EXISTS `dzialy` (
|
||||
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`skrot` varchar(25) NOT NULL,
|
||||
`nazwa` text NOT NULL,
|
||||
`aktywne` int(11) NOT NULL DEFAULT 1,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `skrot` (`skrot`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
|
||||
*/
|
||||
if($_SESSION['user_admin'] != 1)
|
||||
{
|
||||
//redirect to panel.php
|
||||
$_SESSION["innfoError"] = "Brak uprawnień do tej strony";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['addDepartment']))
|
||||
{
|
||||
$name = trim($_POST['name']);
|
||||
$skrot = trim($_POST['skrot']);
|
||||
$sql = "INSERT INTO dzialy (skrot, nazwa) VALUES (:skrot, :nazwa)";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':skrot', $skrot, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':nazwa', $name, PDO::PARAM_STR);
|
||||
$result = $stmt->execute();
|
||||
if($result)
|
||||
{
|
||||
$_SESSION["innfoError"] = "Dodano dział";
|
||||
header("Location: dictionaries.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
$_SESSION["innfoError"] = "Błąd dodawania działu";
|
||||
header("Location: dictionaries.php");
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="addDepartment.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>Nazwa działu</td>
|
||||
<td><input type="text" name="name" required></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Skrót działu</td>
|
||||
<td><input type="text" name="skrot" required></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><input type="submit" name="addDepartment" value="Dodaj"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,111 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
if($_SESSION['user_admin'] != 1)
|
||||
{
|
||||
//redirect to panel.php
|
||||
$_SESSION["innfoError"] = "Brak uprawnień do tej strony";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['addFree']))
|
||||
{
|
||||
//sprawdź czy podany dzień nie jest już wpisany do bazy
|
||||
/*
|
||||
CREATE TABLE `dniwolne` (
|
||||
`id` int(10) UNSIGNED NOT NULL,
|
||||
`data` date NOT NULL,
|
||||
`nazwaSwieta` text NOT NULL,
|
||||
`aktywne` int(1) NOT NULL DEFAULT 1
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
*/
|
||||
|
||||
$data = $_POST['data'];
|
||||
//sprawdź czy data jest przyszła
|
||||
$today = date("Y-m-d");
|
||||
if($data < $today)
|
||||
{
|
||||
$_SESSION['innfoError'] = "Podana data jest z przeszłości";
|
||||
header("Location: dictionaries.php");
|
||||
exit();
|
||||
}
|
||||
|
||||
$nazwaSwieta = $_POST['nazwaSwieta'];
|
||||
$sql = "SELECT * FROM dniwolne WHERE data = :data";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':data', $data, PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$count = $stmt->rowCount();
|
||||
if($count > 0)
|
||||
{
|
||||
$_SESSION['innfoError'] = "Podany dzień jest już w bazie";
|
||||
header("Location: dictionaries.php");
|
||||
exit();
|
||||
}
|
||||
$sql = "INSERT INTO dniwolne (data, nazwaSwieta) VALUES (:data, :nazwaSwieta)";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':data', $data, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':nazwaSwieta', $nazwaSwieta, PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$_SESSION['innfoError'] = "Dodano dzień wolny";
|
||||
header("Location: dictionaries.php");
|
||||
exit();
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="addFree.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>Data</td>
|
||||
<td><input type="date" name="data" required min="<?php echo date("Y-m-d"); ?>"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Nazwa święta</td>
|
||||
<td><input type="text" name="nazwaSwieta" required></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><input type="submit" name="addFree" value="Dodaj"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<button class="cancel" type="button" onclick="window.location.href='dictionaries.php'">Anuluj</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,91 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="addFreeDay_form.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="dateFirst">Wybierz pierwszy dzień</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="date" name="dateFirst" id="dateFirst" value="<?php echo date('Y-m-d'); ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="dateLast">Wybierz ostatni dzień</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="date" name="dateLast" id="dateLast" value="<?php echo date('Y-m-d'); ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="status">Status</label>
|
||||
</td>
|
||||
<td>
|
||||
<select name="status" id="status">
|
||||
<option value="0" disabled selected>Wybierz status</option>
|
||||
<?php
|
||||
$sql = "SELECT * FROM statusy WHERE oznaczaWolne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
$statusy = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
foreach($statusy as $status)
|
||||
{
|
||||
echo "<option value='".$status['id']."'>".$status['skrot']." - ".$status['nazwa']."</option>";
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" name="submit" value="Dodaj dzień">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<button class="cancel" type="button" onclick="window.location.href='panel.php'">Anuluj</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,95 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
//CREATE TABLE `dniwolne` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT , `data` DATE NOT NULL , `nazwaSwieta` TEXT NOT NULL , `aktywne` INT(1) NOT NULL DEFAULT '1' , PRIMARY KEY (`id`)) ENGINE = InnoDB;
|
||||
|
||||
//w post jest przekazany start i koniec dat, sprawdź czy w tym przedziale (włącznie) nie ma już wpisanej obecności
|
||||
//jeżeli jest to wyświetl błąd $_SESSION['innfoError']
|
||||
$start = $_POST['dateFirst'];
|
||||
$end = $_POST['dateLast'];
|
||||
//sprawdź czy data końcowa jest późniejsza niż data początkowa
|
||||
if($end < $start)
|
||||
{
|
||||
$_SESSION['innfoError'] = "Data końcowa nie może być wcześniejsza niż data początkowa";
|
||||
header('Location: addFreeDay.php');
|
||||
exit();
|
||||
}
|
||||
//sprawdź czy id statusu ma oznaczaWolne = 1
|
||||
$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)
|
||||
{
|
||||
$_SESSION['innfoError'] = "Wybrany status nie oznacza wolnego";
|
||||
header('Location: addFreeDay.php');
|
||||
exit();
|
||||
}
|
||||
//wpisz do tablicy wszystkie daty, poniedziałek-piątek w danym przedziale
|
||||
$dates = [];
|
||||
$day = $start;
|
||||
while($day <= $end)
|
||||
{
|
||||
//sprawdź czy sobota lub niedziela
|
||||
if(date('N', strtotime($day)) < 6)
|
||||
{
|
||||
$dates[] = $day;
|
||||
}
|
||||
$day = date('Y-m-d', strtotime($day.' + 1 day'));
|
||||
}
|
||||
//sprawdź czy w danym przedziale nie ma już wpisanej obecności
|
||||
$sql = "SELECT * FROM obecnosc WHERE kto = :kto AND data BETWEEN :start AND :end AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':start', $start, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':end', $end, PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$work = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
if($work !== false)
|
||||
{
|
||||
foreach($work as $day)
|
||||
{
|
||||
if(in_array($day['data'], $dates))
|
||||
{
|
||||
$_SESSION['innfoError'] = "W danym przedziale jest już wpisana obecność";
|
||||
header('Location: addFreeDay.php');
|
||||
exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
//pobierz wszystkie wolne z tego przedziału z tabeli dniwolne
|
||||
$sql = "SELECT * FROM dniwolne WHERE data BETWEEN :start AND :end AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':start', $start, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':end', $end, PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$wolne = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
//sprawdź czy w danym przedziale nie ma już wpisanych dni wolnych, jeżeli tak to usuń je z tablicy $dates
|
||||
if($wolne !== false)
|
||||
{
|
||||
foreach($wolne as $day)
|
||||
{
|
||||
if(in_array($day['data'], $dates))
|
||||
{
|
||||
$key = array_search($day['data'], $dates);
|
||||
unset($dates[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//jeżeli nie ma wpisanej obecności w danym przedziale to dodaj wpisy
|
||||
foreach($dates as $day)
|
||||
{
|
||||
$sql = "INSERT INTO obecnosc VALUES (NULL, :kto, :data, NULL, NULL, :status, 0, 0, 1)";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', $day, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':status', $_POST['status'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
}
|
||||
$_SESSION['innfoError'] = "Wolne zostało dodane";
|
||||
header('Location: addFreeDay.php');
|
||||
exit();
|
||||
?>
|
|
@ -0,0 +1,74 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
@session_start();
|
||||
|
||||
//pobierz listę danych pracowników których przełożonym jest zalogowany użytkownik
|
||||
$podlega = array();
|
||||
$sql = "SELECT id, imie, nazwisko FROM uzytkownicy WHERE przelozony = :przelozony AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':przelozony', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$podlega = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
//print_r($podlega);
|
||||
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="allWorkersMonth.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="user">Wybierz pracownika:</label>
|
||||
</td>
|
||||
<td>
|
||||
<select name="user" id="user">
|
||||
<?php
|
||||
foreach($podlega as $user)
|
||||
{
|
||||
echo '<option value="'.$user['id'].'">'.$user['imie'].' '.$user['nazwisko'].'</option>';
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" name="show" value="Pokaż">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
@session_start();
|
||||
//sprawdź czy użytkownik jest przełożonym tego pracownik $_POST["user"]
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE id = :id AND przelozony = :przelozony";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $_POST["user"], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':przelozony', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$user = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if($user === false)
|
||||
{
|
||||
$_SESSION["innfoError"] = "Nie jesteś przełożonym tego pracownika";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="waitingForAcceptsShow.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="mm">Pokaż miesiąc:</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="month" name="mm" id="mm" value="<?php echo date('Y-m'); ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="hidden" name="user" value="<?php echo $_POST['user']; ?>">
|
||||
<input type="submit" name="show" value="Pokaż">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,8 @@
|
|||
<?php
|
||||
@session_start();
|
||||
require_once 'db.php';
|
||||
if($_SESSION['user_login_mark'] != 1)
|
||||
{
|
||||
header("Location: index.php");
|
||||
exit();
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
$host = "localhost";
|
||||
$db = "YOURDBNAME";
|
||||
$dbUser = "root";
|
||||
$dbPassword = "";
|
||||
?>
|
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
require_once('config.php');
|
||||
$pdo = new PDO('mysql:host='.$host.';dbname='.$db.';charset=utf8',$dbUser,$dbPassword);
|
||||
if(!$pdo) {
|
||||
die('Could not connect');
|
||||
}
|
||||
?>
|
|
@ -0,0 +1,118 @@
|
|||
CREATE TABLE IF NOT EXISTS `dniwolne` (
|
||||
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`data` date NOT NULL,
|
||||
`nazwaSwieta` text NOT NULL,
|
||||
`aktywne` int(1) NOT NULL DEFAULT 1,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `dzialy` (
|
||||
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`skrot` varchar(25) NOT NULL,
|
||||
`nazwa` text NOT NULL,
|
||||
`aktywne` int(11) NOT NULL DEFAULT 1,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `skrot` (`skrot`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `logi` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`log` text NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `obecnosc` (
|
||||
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`kto` int(10) UNSIGNED NOT NULL,
|
||||
`data` date NOT NULL,
|
||||
`czasZaczecia` time DEFAULT NULL,
|
||||
`czasKonca` time DEFAULT NULL,
|
||||
`status` int(10) UNSIGNED NOT NULL,
|
||||
`zaakceptowane` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`zdalne` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`aktywne` tinyint(1) NOT NULL DEFAULT 1,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `kto` (`kto`),
|
||||
KEY `status` (`status`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `statusy` (
|
||||
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`skrot` varchar(10) NOT NULL,
|
||||
`nazwa` text NOT NULL,
|
||||
`oznaczaWolne` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`aktywne` tinyint(4) NOT NULL DEFAULT 1,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `skrot` (`skrot`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `uzytkownicy` (
|
||||
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`login` text NOT NULL,
|
||||
`haslo` text NOT NULL,
|
||||
`imie` text NOT NULL,
|
||||
`nazwisko` text NOT NULL,
|
||||
`dzial` int(10) UNSIGNED NOT NULL,
|
||||
`przelozony` int(10) UNSIGNED DEFAULT NULL,
|
||||
`aktywne` int(1) NOT NULL DEFAULT 1,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `dzial` (`dzial`),
|
||||
KEY `przelozony` (`przelozony`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
|
||||
|
||||
ALTER TABLE
|
||||
`obecnosc`
|
||||
ADD
|
||||
CONSTRAINT `obecnosc_ibfk_1` FOREIGN KEY (`kto`) REFERENCES `uzytkownicy` (`id`),
|
||||
ADD
|
||||
CONSTRAINT `obecnosc_ibfk_2` FOREIGN KEY (`status`) REFERENCES `statusy` (`id`);
|
||||
|
||||
ALTER TABLE
|
||||
`uzytkownicy`
|
||||
ADD
|
||||
CONSTRAINT `uzytkownicy_ibfk_1` FOREIGN KEY (`dzial`) REFERENCES `dzialy` (`id`),
|
||||
ADD
|
||||
CONSTRAINT `uzytkownicy_ibfk_2` FOREIGN KEY (`przelozony`) REFERENCES `uzytkownicy` (`id`);
|
||||
|
||||
INSERT INTO
|
||||
`dniwolne` (`id`, `data`, `nazwaSwieta`, `aktywne`)
|
||||
VALUES
|
||||
(
|
||||
1,
|
||||
'2023-08-15',
|
||||
'Wniebowzięcie Najświętszej Maryi Panny',
|
||||
1
|
||||
);
|
||||
|
||||
INSERT INTO
|
||||
`statusy` (
|
||||
`id`,
|
||||
`skrot`,
|
||||
`nazwa`,
|
||||
`oznaczaWolne`,
|
||||
`aktywne`
|
||||
)
|
||||
VALUES
|
||||
(1, 'OB', 'OBECNY/A', 0, 1),
|
||||
(2, 'UW', 'URLOP WYPOCZYNKOWY', 1, 1),
|
||||
(3, 'UO', 'URLOP OKOLICZNOŚCIOWY', 1, 1),
|
||||
(4, 'UR', 'URLOP REHABILITACYJNY', 1, 1),
|
||||
(5, 'OP', 'OPIEKA NAD DZIECKIEM', 1, 1),
|
||||
(6, 'D', 'DELEGACJA', 1, 1),
|
||||
(7, 'L4', 'ZWOLNIENIE LEKARSKIE - CHOROBA', 1, 1),
|
||||
(8, 'UB', 'URLOP BEZPŁATNY', 1, 1),
|
||||
(9, 'UŻ', 'URLOP NA ŻĄDANIE', 1, 1),
|
||||
(10, 'WŚ', 'WOLNE ZA ŚWIĘTO', 1, 1),
|
||||
(11, 'OPZ', 'Okazjonalna PZ', 0, 1);
|
||||
|
||||
CREATE TABLE `admini` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`kto` INT UNSIGNED NOT NULL,
|
||||
`odKiedy` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE = InnoDB;
|
||||
|
||||
INSERT INTO
|
||||
`admini` (`id`, `kto`, `odKiedy`)
|
||||
VALUES
|
||||
(NULL, '1', CURRENT_TIMESTAMP)
|
|
@ -0,0 +1,93 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
if($_SESSION['user_admin'] != 1)
|
||||
{
|
||||
//redirect to panel.php
|
||||
$_SESSION["innfoError"] = "Brak uprawnień do tej strony";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
//pobierz wszystki użytkwoników którzy zanjdują się w tabeli admini po za obecnie zalogowanym
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE id IN (SELECT kto FROM admini) AND id != :id AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$uzytkownicy = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
//print_r($uzytkownicy);
|
||||
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['delAdmin']))
|
||||
{
|
||||
$user = $_POST['user'];
|
||||
$sql = "DELETE FROM admini WHERE kto = :kto";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $user, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$_SESSION['innfoError'] = "Usunięto admina";
|
||||
header("Location: dictionaries.php");
|
||||
exit();
|
||||
}
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="delAdmin.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="user">Wybierz użytkownika</label>
|
||||
</td>
|
||||
<td>
|
||||
<select name="user" id="user">
|
||||
<?php
|
||||
foreach($uzytkownicy as $user)
|
||||
{
|
||||
?>
|
||||
<option value="<?php echo $user['id']; ?>"><?php echo $user['imie']." ".$user['nazwisko']." (".$user['login'].")"; ?></option>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" name="delAdmin" value="Usuń admina">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,109 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
/*
|
||||
CREATE TABLE IF NOT EXISTS `dzialy` (
|
||||
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`skrot` varchar(25) NOT NULL,
|
||||
`nazwa` text NOT NULL,
|
||||
`aktywne` int(11) NOT NULL DEFAULT 1,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `skrot` (`skrot`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
|
||||
*/
|
||||
if($_SESSION['user_admin'] != 1)
|
||||
{
|
||||
//redirect to panel.php
|
||||
$_SESSION["innfoError"] = "Brak uprawnień do tej strony";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
//chodzi o zaaktualizowanie aktywne na 0
|
||||
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['delDepartment']))
|
||||
{
|
||||
$id = $_POST['id'];
|
||||
$sql = "UPDATE dzialy SET aktywne = 0 WHERE id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
|
||||
$result = $stmt->execute();
|
||||
if($result)
|
||||
{
|
||||
$_SESSION["innfoError"] = "Usunięto dział";
|
||||
header("Location: dictionaries.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
$_SESSION["innfoError"] = "Błąd usuwania działu";
|
||||
header("Location: dictionaries.php");
|
||||
exit();
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="delDepartment.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>Wybierz dział</td>
|
||||
<td>
|
||||
<select name="id">
|
||||
<?php
|
||||
$sql = "SELECT * FROM dzialy WHERE aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
|
||||
{
|
||||
echo "<option value='".$row['id']."'>".$row['nazwa']."(".$row['skrot'].")</option>";
|
||||
}
|
||||
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><input type="submit" name="delDepartment" value="Usuń dział"></td>
|
||||
</tr>
|
||||
<!-- anuluj -->
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<button class="cancel" type="button" onclick="window.location.href='dictionaries.php'">Anuluj</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
//delUser.php?id=ID
|
||||
//zamień aktywne na 2
|
||||
require_once 'db.php';
|
||||
@session_start();
|
||||
if($_SERVER['REQUEST_METHOD'] === 'GET')
|
||||
{
|
||||
$id = $_GET['id'];
|
||||
$sql = "UPDATE uzytkownicy SET aktywne = 2 WHERE id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$_SESSION["innfoError"] = "Użytkownik został usunięty";
|
||||
header("Location: activateWorker.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
$_SESSION["innfoError"] = "Niepoprawne dane";
|
||||
header("Location: activateWorker.php");
|
||||
exit();
|
||||
}
|
|
@ -0,0 +1,101 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
@session_start();
|
||||
|
||||
if($_SESSION['user_admin'] != 1)
|
||||
{
|
||||
//redirect to panel.php
|
||||
$_SESSION["innfoError"] = "Brak uprawnień do tej strony";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE id NOT IN (SELECT kto FROM admini) AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
$uzytkownicy = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
//print_r($uzytkownicy);
|
||||
$countuzytkownicy = $stmt->rowCount();
|
||||
//policz adminów
|
||||
$sql = "SELECT * FROM admini";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
$admins = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
$countAdmins = $stmt->rowCount();
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<div id="info">
|
||||
<?php
|
||||
echo @$_SESSION["innfoError"];
|
||||
$_SESSION["innfoError"] = "";
|
||||
?>
|
||||
</div>
|
||||
<main id="start">
|
||||
<a href="panel.php">
|
||||
<h3>Wróć</h3>
|
||||
</a>
|
||||
<a><h3>Nie usuwasz danych, tylko je dezaktywujesz (nie będzie możliwości ich wyboru)</h3></a>
|
||||
<?php
|
||||
if($countuzytkownicy > 0)
|
||||
{
|
||||
?>
|
||||
<a href="addAdmin.php">
|
||||
<h3>Dodanie admina</h3>
|
||||
</a>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
if($countAdmins > 1)
|
||||
{
|
||||
?>
|
||||
<a href="delAdmin.php">
|
||||
<h3>Usunięcie admina</h3>
|
||||
</a>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<a href="addDepartment.php">
|
||||
<h3>Dodanie działu</h3>
|
||||
</a>
|
||||
<a href="delDepartment.php">
|
||||
<h3>Usunięcie działu</h3>
|
||||
</a>
|
||||
<a href="addFree.php">
|
||||
<h3>Dodanie wolnego</h3>
|
||||
</a>
|
||||
<a href="statAdd.php">
|
||||
<h3>Dodaj status</h3>
|
||||
</a>
|
||||
<a href="statDel.php">
|
||||
<h3>Usuń status</h3>
|
||||
</a>
|
||||
<a href="printWorkerForm.php">
|
||||
<h3>Wydrukuj listy pracownika</h3>
|
||||
</a>
|
||||
<a href="passReset.php">
|
||||
<h3>Resetuj hasło użytkownika</h3>
|
||||
</a>
|
||||
</main>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,63 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="editDaySelectForm.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="date">Wybierz dzień</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="date" name="date" id="date" value="<?php echo date('Y-m-d'); ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="text-align: center;">
|
||||
<input type="submit" value="Wybierz">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<button class="cancel" type="button" onclick="window.location.href='panel.php'">Anuluj</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,149 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
//sprawdź czy dane zostały przesłane w post, $_POST['date'] a także czy to jest data
|
||||
if(!(strtotime($_POST["date"])!== false))
|
||||
{
|
||||
$_SESSION['innfoError'] = "Nioeprawidłowa data";
|
||||
header("Location: editDaySelect.php");
|
||||
exit();
|
||||
}
|
||||
//pobierz dane o tym dniu z bazy, połącz z tabelą statusy
|
||||
$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();
|
||||
}
|
||||
//sprawdź czy sobota lub niedziela
|
||||
if(date('N', strtotime($_POST['date'])) > 5)
|
||||
{
|
||||
$_SESSION['innfoError'] = "Nie można edytować weekendu";
|
||||
header("Location: editDaySelect.php");
|
||||
exit();
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="editDaySelectFormEdit.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>
|
||||
<label>Wybrany dzień</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="date"value="<?php echo $_POST['date']; ?>" disabled>
|
||||
<input type="hidden" name="date" value="<?php echo $_POST['date']; ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="start">Rozpoczęcie pracy*</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="time" name="start" id="start" value="<?php echo $work['czasZaczecia']; ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="end">Zakończenie pracy*</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="time" name="end" id="end" value="<?php echo $work['czasKonca']; ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="text-align: center;">
|
||||
<hr />
|
||||
<label for="clearTime">Zaznacz tutaj aby wyczyścić czas pracy, <br />jeżeli status oznacza wolne zostanie automatycznie czas usunięty</label><br />
|
||||
<input type="checkbox" name="clearTime" id="clearTime">
|
||||
<hr />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="status">Status</label>
|
||||
</td>
|
||||
<td>
|
||||
<select name="status" id="status">
|
||||
<?php
|
||||
$sql = "SELECT * FROM statusy";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
$statusy = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
foreach($statusy as $status)
|
||||
{
|
||||
if($status['id'] == $work['status'])
|
||||
{
|
||||
echo "<option value='".$status['id']."' selected>".$status['skrot']." - ".$status['nazwa']."</option>";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<option value='".$status['id']."'>".$status['skrot']." - ".$status['nazwa']."</option>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="text-align: center;">
|
||||
<label for="zdalne">Praca zdalna (inna niż okazjonalna)</label>
|
||||
<input type="checkbox" name="zdalne" id="zdalne" <?php if($work['zdalne'] == 1) echo "checked"; ?>>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="text-align: center;">
|
||||
<input type="submit" value="Edytuj">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<button class="cancel" type="button" onclick="window.location.href='panel.php'">Anuluj</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,97 @@
|
|||
<?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();
|
||||
?>
|
|
@ -0,0 +1,63 @@
|
|||
<?php
|
||||
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
|
||||
//sprawdź czy to jest metodą post
|
||||
if($_SERVER['REQUEST_METHOD'] == 'POST')
|
||||
{
|
||||
//sprawdź czy hasła są takie same
|
||||
if($_POST['newPass'] != $_POST['newPass2'])
|
||||
{
|
||||
$_SESSION['innfoError'] = "Nowe hasła nie są takie same";
|
||||
header("Location: pass.php");
|
||||
exit();
|
||||
}
|
||||
//sprawdź czy hasło jest dłuższe niż 8 znaków
|
||||
if(strlen($_POST['newPass']) < 8)
|
||||
{
|
||||
$_SESSION['innfoError'] = "Nowe hasło jest za krótkie";
|
||||
header("Location: pass.php");
|
||||
exit();
|
||||
}
|
||||
//sprawdź czy hasło jest różne od starego
|
||||
if($_POST['newPass'] == $_POST['oldPass'])
|
||||
{
|
||||
$_SESSION['innfoError'] = "Nowe hasło musi być różne od starego";
|
||||
header("Location: pass.php");
|
||||
exit();
|
||||
}
|
||||
//sprawdź czy stare hasło jest poprawne
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE id = :id AND haslo = SHA1(:haslo)";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':haslo', $_POST['oldPass'], PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$user = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if($user === false)
|
||||
{
|
||||
$_SESSION['innfoError'] = "Stare hasło jest niepoprawne";
|
||||
header("Location: pass.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
//zmień hasło
|
||||
$sql = "UPDATE uzytkownicy SET haslo = :haslo WHERE id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':haslo', sha1($_POST['newPass']), PDO::PARAM_STR);
|
||||
$stmt->bindValue(':id', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$_SESSION['innfoError'] = "Hasło zostało zmienione";
|
||||
header("Location: pass.php");
|
||||
exit();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$_SESSION['innfoError'] = "Niepoprawne wywołanie strony";
|
||||
header("Location: pass.php");
|
||||
exit();
|
||||
}
|
||||
?>
|
|
@ -0,0 +1,12 @@
|
|||
<div id="puste"></div>
|
||||
<?php
|
||||
//You are not allowed to change this code. Exception is license given privately
|
||||
?>
|
||||
<div id="stopka">
|
||||
Made by <a href="https://kry008.xyz">Kry008</a> © <?php
|
||||
if(date("Y") != "2023")
|
||||
{
|
||||
echo "2023 - ";
|
||||
}
|
||||
echo date("Y"); ?>
|
||||
</div>
|
|
@ -0,0 +1 @@
|
|||
<a href="_install.php"><button>START</button></a>
|
|
@ -0,0 +1,72 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
//require_once 'checkLogin.php';
|
||||
session_start();
|
||||
//jeżeli istnieje plik _install.php, usuń go
|
||||
if(file_exists('_install.php'))
|
||||
{
|
||||
unlink('_install.php');
|
||||
}
|
||||
|
||||
//login form
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Rejestracja</title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj</h1>
|
||||
</header>
|
||||
<main id="register">
|
||||
|
||||
<?php
|
||||
if(@isset($_SESSION['error']))
|
||||
{
|
||||
echo '<p class="error">'.$_SESSION['error'].'</p>';
|
||||
unset($_SESSION['error']);
|
||||
}
|
||||
?>
|
||||
<table class="form">
|
||||
<form method="post" action="login.php">
|
||||
<tr>
|
||||
<td>
|
||||
<label>Login</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="username">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label>Hasło</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="password" name="password">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" name="login" class="btn" value="Login"/>
|
||||
</td>
|
||||
</tr>
|
||||
</form>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<a href="register.php"><button>Rejestracja</button></a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,106 @@
|
|||
<?php
|
||||
|
||||
require_once 'db.php';
|
||||
session_start();
|
||||
/*
|
||||
|
||||
CREATE TABLE `uzytkownicy` (
|
||||
`id` int(10) UNSIGNED NOT NULL,
|
||||
`login` text NOT NULL,
|
||||
`haslo` text NOT NULL,
|
||||
`imie` text NOT NULL,
|
||||
`nazwisko` text NOT NULL,
|
||||
`dzial` int(10) UNSIGNED NOT NULL,
|
||||
`przelozony` int(10) UNSIGNED DEFAULT NULL,
|
||||
`akrywne` int(11) NOT NULL DEFAULT 1
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
CREATE TABLE `dzialy` (
|
||||
`id` int(10) UNSIGNED NOT NULL,
|
||||
`skrot` varchar(25) NOT NULL,
|
||||
`nazwa` text NOT NULL,
|
||||
`aktywne` int(11) NOT NULL DEFAULT 1
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
*/
|
||||
|
||||
|
||||
//validate login
|
||||
if(isset($_POST['login']))
|
||||
{
|
||||
$login = $_POST['username'];
|
||||
$password = $_POST['password'];
|
||||
|
||||
if(empty($login))
|
||||
{
|
||||
$_SESSION['error'] = "Username is required";
|
||||
header("Location: index.php");
|
||||
exit();
|
||||
}
|
||||
else if(empty($password))
|
||||
{
|
||||
$_SESSION['error'] = "Password is required";
|
||||
header("Location: index.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = "SELECT uzytkownicy.id AS id, login, imie, nazwisko, uzytkownicy.dzial AS dzial, `przelozony`, dzialy.nazwa AS nazwa, dzialy.skrot AS skrot FROM uzytkownicy, dzialy WHERE uzytkownicy.login = :login AND dzialy.id = uzytkownicy.dzial AND uzytkownicy.aktywne = 1 AND uzytkownicy.haslo = sha1(:password)";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':login', $login, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':password', $password, PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$user = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if($user === false)
|
||||
{
|
||||
$_SESSION['error'] = "Zły login lub hasło lub użytkownik nie zaakceptowany przez przełożonego";
|
||||
header("Location: index.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
$_SESSION['user_id'] = $user['id'];
|
||||
$_SESSION['user_login'] = $user['login'];
|
||||
$_SESSION['user_imie'] = $user['imie'];
|
||||
$_SESSION['user_nazwisko'] = $user['nazwisko'];
|
||||
$_SESSION['user_dzial'] = $user['dzial'];
|
||||
$_SESSION['user_przelozony'] = $user['przelozony'];
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $_SESSION['user_przelozony'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$przelozony = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if($przelozony !== false)
|
||||
{
|
||||
$_SESSION['user_przelozony_imie'] = $przelozony['imie'];
|
||||
$_SESSION['user_przelozony_nazwisko'] = $przelozony['nazwisko'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$_SESSION['user_przelozony_imie'] = "Brak";
|
||||
$_SESSION['user_przelozony_nazwisko'] = "Przełożonego";
|
||||
}
|
||||
$_SESSION['user_dzial_nazwa'] = $user['nazwa'];
|
||||
$_SESSION['user_dzial_skrot'] = $user['skrot'];
|
||||
$_SESSION['user_login_mark'] = 1;
|
||||
/*
|
||||
CREATE TABLE `admini` (`id` INT UNSIGNED NOT NULL AUTO_INCREMENT , `kto` INT UNSIGNED NOT NULL , `odKiedy` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , PRIMARY KEY (`id`)) ENGINE = InnoDB;
|
||||
*/
|
||||
$sql = "SELECT * FROM admini WHERE kto = :kto";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$admin = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if($admin !== false)
|
||||
{
|
||||
$_SESSION['user_admin'] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$_SESSION['user_admin'] = 0;
|
||||
}
|
||||
header("Location: panel.php");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
//usuń wszystkie zmienne
|
||||
session_unset();
|
||||
//usuń sesję
|
||||
session_destroy();
|
||||
//przekieruj na stronę logowania
|
||||
header('Location: index.php');
|
||||
exit();
|
||||
?>
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
|
||||
?>
|
||||
|
||||
<ol>
|
||||
<?php
|
||||
if($_SESSION['user_admin'] == 1)
|
||||
{
|
||||
?>
|
||||
<li><a href="panel.php">Start</a></li>
|
||||
<?php
|
||||
}
|
||||
else
|
||||
{
|
||||
?>
|
||||
<li><a href="panel.php">🏠</a></li>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<li><a href="showMonth.php">Pokaż miesiąc</a></li>
|
||||
<li>Twój przełożony - <?php echo $_SESSION['user_przelozony_imie']." ".$_SESSION['user_przelozony_nazwisko']; ?></li>
|
||||
<li><a href="pass.php">Zmień hasło</a></li>
|
||||
<li><a href="logout.php">Wyloguj</a></li>
|
||||
</ol>
|
|
@ -0,0 +1,201 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
//print_r($_SESSION);
|
||||
/*
|
||||
CREATE TABLE `obecnosc` (
|
||||
`id` int(10) UNSIGNED NOT NULL,
|
||||
`kto` int(10) UNSIGNED NOT NULL,
|
||||
`data` date NOT NULL,
|
||||
`czasZaczecia` time DEFAULT NULL,
|
||||
`czasKonca` time DEFAULT NULL,
|
||||
`status` int(10) UNSIGNED NOT NULL,
|
||||
`zaakceptowane` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`zdalne` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`aktywne` tinyint(1) NOT NULL DEFAULT 1
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
*/
|
||||
$workStarted = 0;
|
||||
$workEnded = 0;
|
||||
//sprawdzenie czy dzisiaj już rozpoczęto pracę, czy dziś już zakończono pracę, ustaw odpowiednio zmienne
|
||||
$sql = "SELECT * FROM obecnosc WHERE kto = :kto AND data = :data AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', date('Y-m-d'), PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$work = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if($work === false)
|
||||
{
|
||||
$workStarted = 0;
|
||||
$workEnded = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if($work['czasZaczecia'] != NULL)
|
||||
{
|
||||
$workStarted = 1;
|
||||
}
|
||||
if($work['czasKonca'] != NULL)
|
||||
{
|
||||
$workEnded = 1;
|
||||
}
|
||||
$sql = "SELECT * FROM statusy WHERE id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $work['status'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$status = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if($status['oznaczaWolne'] == 1)
|
||||
{
|
||||
$workStarted = 1;
|
||||
$workEnded = 1;
|
||||
}
|
||||
}
|
||||
//sprawdź czy jakiś pracownik czeka na aktywację i jest tego użytkownik przełożonym, ustaw zmienną $uzytkownicyWaiting na ilość
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE aktywne = 0 AND przelozony = :przelozony";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':przelozony', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$uzytkownicyWaiting = $stmt->rowCount();
|
||||
|
||||
//pobierz listę id pracowników których przełożonym jest zalogowany użytkownik
|
||||
$podlega = array();
|
||||
$sql = "SELECT id FROM uzytkownicy WHERE przelozony = :przelozony AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':przelozony', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$podlega = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
$podlegaIlosc = $stmt->rowCount();
|
||||
//print_r($podlega);
|
||||
//sprawdź czy któryś z tych pracowników ma nie zaaakceptowane dni, jeżeli tak to ustaw zmienną $daysWaiting na ilość
|
||||
$daysWaiting = 0;
|
||||
foreach($podlega as $podlega)
|
||||
{
|
||||
$sql = "SELECT * FROM obecnosc WHERE kto = :kto AND zaakceptowane = 0 AND aktywne = 1 AND data < :data";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $podlega['id'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', date('Y-m-d'), PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$daysWaiting += $stmt->rowCount();
|
||||
}
|
||||
//print_r($daysWaiting);
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<div id="info">
|
||||
<?php
|
||||
echo @$_SESSION["innfoError"];
|
||||
$_SESSION["innfoError"] = "";
|
||||
?>
|
||||
</div>
|
||||
<main id="start">
|
||||
<?php
|
||||
if($workStarted == 0)
|
||||
{
|
||||
?>
|
||||
<a href="workStart.php">
|
||||
<h3>Rozpocznij dzisiejszą pracę</h3>
|
||||
</a>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
if($workStarted == 1 && $workEnded == 0)
|
||||
{
|
||||
?>
|
||||
<a href="workEnd.php">
|
||||
<h3>Zakończ dzisiejszą pracę</h3>
|
||||
</a>
|
||||
<?php
|
||||
}
|
||||
$y = date('Y');
|
||||
$m = date('m');
|
||||
//pokaż miesiąc wcześniej
|
||||
if($m == 1)
|
||||
{
|
||||
$m = 12;
|
||||
$y--;
|
||||
}
|
||||
else
|
||||
{
|
||||
$m--;
|
||||
}
|
||||
?>
|
||||
<a href='showMonthForm.php?month=<?php echo $y."-".$m; ?>'>
|
||||
<h3>Raport za poprzedni miesiąc</h3>
|
||||
</a>
|
||||
<a href="showMonth.php">
|
||||
<h3>Raport miesięczny</h3>
|
||||
</a>
|
||||
<a href="addDay.php">
|
||||
<h3>Dodaj inny dzień</h3>
|
||||
</a>
|
||||
<a href="addFreeDay.php">
|
||||
<h3>Dodaj wolne (wszystkie formy)</h3>
|
||||
</a>
|
||||
<a href="editDaySelect.php">
|
||||
<h3>Edytuj dzień</h3>
|
||||
</a>
|
||||
<?php
|
||||
if($uzytkownicyWaiting > 0)
|
||||
{
|
||||
?>
|
||||
<a href="activateWorker.php">
|
||||
<h3>Aktywuj konta pracowników - <?php echo $uzytkownicyWaiting; ?></h3>
|
||||
</a>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
if($podlegaIlosc > 0)
|
||||
{
|
||||
?>
|
||||
<a href="allWorkers.php">
|
||||
<h3>Drukuj listy pracowników</h3>
|
||||
</a>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
if($daysWaiting > 0)
|
||||
{
|
||||
?>
|
||||
<a href="waitingForAcceptsUser_form.php">
|
||||
<h3>Oczekująca ilość dni na akceptację - <?php echo $daysWaiting; ?></h3>
|
||||
</a>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
if($_SESSION['user_admin'] == 1)
|
||||
{
|
||||
?>
|
||||
<a href="dictionaries.php">
|
||||
<h3>Edytuj słowniki/ustawienia</h3>
|
||||
</a>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</main>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,73 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="editPass.php" method="post">
|
||||
<input type="hidden" name="username" value="<?php echo $_SESSION['user_login']; ?>">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="oldPass">Stare hasło:</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="password" name="oldPass" id="oldPass">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="newPass">Nowe hasło:</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="password" name="newPass" id="newPass">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="newPass2">Powtórz nowe hasło:</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="password" name="newPass2" id="newPass2">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" name="change" value="Zmień hasło">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
if($_SESSION['user_admin'] != 1)
|
||||
{
|
||||
//redirect to panel.php
|
||||
$_SESSION["innfoError"] = "Brak uprawnień do tej strony";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
$uzytkownicy = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="passReset_form.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="user">Wybierz użytkownika</label>
|
||||
</td>
|
||||
<td>
|
||||
<select name="user" id="user">
|
||||
<?php
|
||||
foreach($uzytkownicy as $user)
|
||||
{
|
||||
?>
|
||||
<option value="<?php echo $user['id']; ?>"><?php echo $user['imie']." ".$user['nazwisko']." (".$user['login'].")"; ?></option>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" name="passReset" value="Resetuj hasło">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,94 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
if($_SESSION['user_admin'] != 1)
|
||||
{
|
||||
//redirect to panel.php
|
||||
$_SESSION["innfoError"] = "Brak uprawnień do tej strony";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
$temp = "abcdedfghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ123456789.!@#$%^&*()-?";
|
||||
//stwórz 10 znakowe hasło
|
||||
$haslo = substr(str_shuffle($temp), 0, 11);
|
||||
//echo $haslo;
|
||||
|
||||
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['user']) && !empty($_POST['user']))
|
||||
{
|
||||
//UPDATE uzytkownicy SET haslo = SHA1(:haslo) WHERE id = :id"
|
||||
$user = $_POST['user'];
|
||||
$sql = "UPDATE uzytkownicy SET haslo = SHA1(:haslo) WHERE id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':haslo', $haslo, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':id', $user, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
//$_SESSION["innfoError"] = "Hasło użytkownika zostało zresetowane";
|
||||
}
|
||||
else
|
||||
{
|
||||
$_SESSION["innfoError"] = "Błąd przetwarzania danych";
|
||||
header("Location: passReset.php");
|
||||
exit();
|
||||
}
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<h3>Hasło użytkownika zostało zresetowane</h3>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Nowe hasło:
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
echo $haslo;
|
||||
?>
|
||||
</td>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<a href="passReset.php">
|
||||
<h3 style="text-align: center;">Wróć</h3>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,177 @@
|
|||
<?php
|
||||
//print_r($_POST);
|
||||
$kto = $_POST['user'];
|
||||
$miesiac = $_POST['month']; //YYYY-MM
|
||||
|
||||
require_once 'db.php';
|
||||
@session_start();
|
||||
//pobierz dane o pracowniku
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $kto, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$user = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
//pobierz dni z tabeli obecnosc dla pracownika
|
||||
$sql = "SELECT * FROM obecnosc WHERE kto = :kto AND data LIKE :data";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $kto, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', $miesiac.'%', PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$days = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
//pobierz dni wolne z dniwolne
|
||||
$sql = "SELECT * FROM dniwolne WHERE data LIKE :data";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':data', $miesiac.'%', PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$dniWolne = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
$dniWolneArray = [];
|
||||
foreach($dniWolne as $dzienWolny)
|
||||
{
|
||||
$dniWolneArray[] = $dzienWolny['data'];
|
||||
}
|
||||
|
||||
$sql = "SELECT skrot FROM dzialy WHERE id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $user['dzial'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$dzial = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
?>
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title><?php echo $_POST['month']; ?> - ewidencja czasu - <?php echo $user['imie'].' '.$user['nazwisko']; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
|
||||
<body onLoad="window.print()">
|
||||
|
||||
<main id="print">
|
||||
<h2 style="font-size: xx-large;">
|
||||
<?php
|
||||
$mArray = ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec","Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"];
|
||||
$month = $_POST['month'];
|
||||
$month = explode('-', $month);
|
||||
echo $mArray[$month[1]-1]." ".$month[0];
|
||||
?>
|
||||
</h2>
|
||||
<div>
|
||||
Imię i nazwisko: <b><?php echo $user['imie'].' '.$user['nazwisko']; ?></b><br>
|
||||
Dział: <b><?php echo $dzial['skrot']; ?></b><br>
|
||||
<?php
|
||||
//sprawdź ilość dni pracy zdalnej w danym miesiącu
|
||||
$sql = "SELECT * FROM obecnosc WHERE kto = :kto AND data LIKE :data AND zdalne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $kto, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', $miesiac.'%', PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$zdalnie = $stmt->rowCount();
|
||||
?>
|
||||
Ilość dni pracy zdalnej: <b><?php echo $zdalnie; ?></b>
|
||||
<?php
|
||||
$sql = "SELECT COUNT(*) FROM obecnosc WHERE kto = :kto AND zaakceptowane = 0 AND aktywne = 1 AND data LIKE :data";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $kto, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', $miesiac.'%', PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$niezaakceptowane = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if($niezaakceptowane['COUNT(*)'] > 0)
|
||||
{
|
||||
?>
|
||||
<br />
|
||||
<span class="bigError">Są niezaakceptowane dni pracy</span>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<table class="month" style="margin: 0 0;">
|
||||
<tr>
|
||||
<th>Dzień</th>
|
||||
<th>Czas pracy</th>
|
||||
</tr>
|
||||
<?php
|
||||
//sprawdź ilość dni w miesiącu, następnie wykonaj pętlę tyle razy ile jest dni w miesiącu
|
||||
$daysInMonth = cal_days_in_month(CAL_GREGORIAN, $month[1], $month[0]);
|
||||
for($i = 1; $i <= $daysInMonth; $i++)
|
||||
{
|
||||
|
||||
//sprawdź czy jest wpis w bazie dla danego dnia
|
||||
$sql = "SELECT * FROM obecnosc, statusy WHERE obecnosc.kto = :kto AND obecnosc.data = :data AND obecnosc.aktywne = 1 AND obecnosc.status = statusy.id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $kto, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', $month[0].'-'.$month[1].'-'.$i, PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$work = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
//sprawdź czy to sobota czy niedziela lub czy to dzień wolny
|
||||
if(date('N', strtotime($month[0]."-".$month[1]."-".$i)) > 5 || in_array($month[0]."-".$month[1]."-".$i, $dniWolneArray))
|
||||
{
|
||||
echo "<tr class='weekend'>";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<tr>";
|
||||
}
|
||||
if($work === false)
|
||||
{
|
||||
//nie ma wpisu w bazie
|
||||
echo "<td>".$i."</td>";
|
||||
echo "<td></td>";
|
||||
}
|
||||
else
|
||||
{
|
||||
//jest wpis w bazie
|
||||
echo "<td>".$i."</td>";
|
||||
if($work['czasZaczecia'] != NULL && $work['czasKonca'] != NULL)
|
||||
{
|
||||
echo "<td>".$work['czasZaczecia']." - ".$work['czasKonca']."";
|
||||
if($work['skrot'] != "OB")
|
||||
{
|
||||
echo " - ".$work['skrot']."";
|
||||
}
|
||||
}
|
||||
else if($work['czasZaczecia'] != NULL && $work['czasKonca'] == NULL)
|
||||
{
|
||||
echo "<td>".$work['czasZaczecia']." - ";
|
||||
if($work['skrot'] != "OB")
|
||||
{
|
||||
echo " - ".$work['skrot']."";
|
||||
}
|
||||
}
|
||||
else if($work['czasZaczecia'] == NULL && $work['czasKonca'] != NULL)
|
||||
{
|
||||
echo "<td> - ".$work['czasKonca']."";
|
||||
if($work['skrot'] != "OB")
|
||||
{
|
||||
echo " - ".$work['skrot']."";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<td>".$work['skrot']."";
|
||||
//
|
||||
}
|
||||
if($work['zdalne'] == 1)
|
||||
{
|
||||
echo " - PZ";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "</td>";
|
||||
}
|
||||
}
|
||||
echo "</tr>";
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
</main>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
<script>
|
||||
//przejdź do panel.php po 5 sekundach
|
||||
setTimeout(function(){ window.location.href = "panel.php"; }, 5000);
|
||||
</script>
|
||||
</html>
|
|
@ -0,0 +1,217 @@
|
|||
<?php
|
||||
//Array ( [id] => 1 [month] => 2023-08 [printWorker] => Pokaż )
|
||||
//notAccepted - checkbox
|
||||
/*
|
||||
CREATE TABLE `obecnosc` (
|
||||
`id` int(10) UNSIGNED NOT NULL,
|
||||
`kto` int(10) UNSIGNED NOT NULL,
|
||||
`data` date NOT NULL,
|
||||
`czasZaczecia` time DEFAULT NULL,
|
||||
`czasKonca` time DEFAULT NULL,
|
||||
`status` int(10) UNSIGNED NOT NULL,
|
||||
`zaakceptowane` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`zdalne` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`aktywne` tinyint(1) NOT NULL DEFAULT 1
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
CREATE TABLE IF NOT EXISTS `uzytkownicy` (
|
||||
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`login` text NOT NULL,
|
||||
`haslo` text NOT NULL,
|
||||
`imie` text NOT NULL,
|
||||
`nazwisko` text NOT NULL,
|
||||
`dzial` int(10) UNSIGNED NOT NULL,
|
||||
`przelozony` int(10) UNSIGNED DEFAULT NULL,
|
||||
`aktywne` int(1) NOT NULL DEFAULT 1,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `dzial` (`dzial`),
|
||||
KEY `przelozony` (`przelozony`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
|
||||
*/
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
if($_SESSION['user_admin'] != 1 && $_POST["printWorker"] != "Pokaż")
|
||||
{
|
||||
//redirect to panel.php
|
||||
$_SESSION["innfoError"] = "Brak uprawnień do tej strony";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
//sprawdź czy istnieje
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE aktywne IN (1, 0) AND id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $_POST['id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$count = $stmt->rowCount();
|
||||
if($count == 0)
|
||||
{
|
||||
$_SESSION['innfoError'] = "Nie ma takiego pracownika";
|
||||
header("Location: printWorkerForm.php");
|
||||
exit();
|
||||
}
|
||||
$user = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
$year = substr($_POST['month'], 0, 4);
|
||||
$month = substr($_POST['month'], 5, 2);
|
||||
//pobierz skrót działu
|
||||
$sql = "SELECT skrot FROM dzialy WHERE id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $user['dzial'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$dzial = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title><?php echo $month." - ".$year; ?> - ewidencja czasu - <?php echo $user['imie']." ".$user['nazwisko']; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body onLoad="window.print()">
|
||||
<main id="print">
|
||||
<h2 style="font-size: xx-large;">
|
||||
<?php
|
||||
$mArray = ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec","Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"];
|
||||
echo $mArray[$month-1]." ".$year;
|
||||
?>
|
||||
</h2>
|
||||
<div>
|
||||
Imię i nazwisko: <b><?php echo $user['imie']." ".$user['nazwisko']; ?> </b><br>
|
||||
Dział: <b><?php echo $dzial['skrot']; ?></b><br>
|
||||
<?php
|
||||
//sprawdź ilość dni pracy zdalnej w danym miesiącu
|
||||
$sql = "SELECT COUNT(*) FROM obecnosc WHERE kto = :kto AND data LIKE :data AND zdalne = 1 AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $user['id'], PDO::PARAM_INT);
|
||||
//dodaj zero wiodące do miesiąca
|
||||
$m = $month;
|
||||
if($m < 10 && strlen($m) < 2)
|
||||
{
|
||||
$m = "0".$m;
|
||||
}
|
||||
$stmt->bindValue(':data', $year."-".$m."%", PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$zdalne = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
echo "Ilość dni pracy zdalnej: <b>".$zdalne['COUNT(*)']."</b>";
|
||||
$notAccepted = 0;
|
||||
if(isset($_POST['notAccepted']))
|
||||
{
|
||||
$notAccepted = 1;
|
||||
}
|
||||
if($notAccepted == 1)
|
||||
{
|
||||
//sprawdź czy są dni niezaakceptowane
|
||||
$sql = "SELECT COUNT(*) FROM obecnosc WHERE kto = :kto AND zaakceptowane = 0 AND aktywne = 1 AND data LIKE :data";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':data', $year."-".$m."%", PDO::PARAM_STR);
|
||||
$stmt->bindValue(':kto', $user['id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$niezaakceptowane = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if($niezaakceptowane['COUNT(*)'] > 0)
|
||||
{
|
||||
?>
|
||||
<br />
|
||||
<span class="bigError">Są niezaakceptowane dni pracy</span>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<table class="month" style="margin: 0 0;">
|
||||
<tr>
|
||||
<th>Dzień</th>
|
||||
<th>Czas pracy</th>
|
||||
</tr>
|
||||
<?php
|
||||
$daysInMonth = cal_days_in_month(CAL_GREGORIAN, $month, $year);
|
||||
$sql = "SELECT * FROM dniwolne WHERE data LIKE :data AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':data', $year."-".$m."%", PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$dniWolne = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
$dniWolneArray = [];
|
||||
foreach($dniWolne as $dzienWolny)
|
||||
{
|
||||
$dniWolneArray[] = $dzienWolny['data'];
|
||||
}
|
||||
for($i = 1; $i <= $daysInMonth; $i++)
|
||||
{
|
||||
//sprawdź czy jest wpis w bazie dla danego dnia
|
||||
$sql = "SELECT * FROM obecnosc, statusy WHERE obecnosc.kto = :kto AND obecnosc.data = :data AND obecnosc.aktywne = 1 AND obecnosc.status = statusy.id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':data', $year."-".$m."-".$i, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':kto', $user['id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$stmt->execute();
|
||||
$work = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if(date('N', strtotime($month[0]."-".$month[1]."-".$i)) > 5 || in_array($year."-".$m."-".$i, $dniWolneArray))
|
||||
{
|
||||
echo "<tr class=\"weekend\">";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<tr>";
|
||||
}
|
||||
if($work === false)
|
||||
{
|
||||
//nie ma wpisu w bazie
|
||||
echo "<td>".$i."</td>";
|
||||
echo "<td></td>";
|
||||
}
|
||||
else
|
||||
{
|
||||
//jest wpis w bazie
|
||||
echo "<td>".$i."</td>";
|
||||
if($work['czasZaczecia'] != NULL && $work['czasKonca'] != NULL)
|
||||
{
|
||||
echo "<td>".$work['czasZaczecia']." - ".$work['czasKonca']."";
|
||||
if($work['skrot'] != "OB")
|
||||
{
|
||||
echo " - ".$work['skrot']."";
|
||||
}
|
||||
}
|
||||
else if($work['czasZaczecia'] != NULL && $work['czasKonca'] == NULL)
|
||||
{
|
||||
echo "<td>".$work['czasZaczecia']." - ";
|
||||
if($work['skrot'] != "OB")
|
||||
{
|
||||
echo " - ".$work['skrot']."";
|
||||
}
|
||||
}
|
||||
else if($work['czasZaczecia'] == NULL && $work['czasKonca'] != NULL)
|
||||
{
|
||||
echo "<td> - ".$work['czasKonca']."";
|
||||
if($work['skrot'] != "OB")
|
||||
{
|
||||
echo " - ".$work['skrot']."";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<td>".$work['skrot']."";
|
||||
//
|
||||
}
|
||||
if($work['zdalne'] == 1)
|
||||
{
|
||||
echo " - PZ";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "</td>";
|
||||
}
|
||||
}
|
||||
echo "</tr>";
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
</main>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
<script>
|
||||
//Przejdź do strony printWorkerForm.php po 2 s
|
||||
setTimeout(function(){
|
||||
window.location.href = 'printWorkerForm.php';
|
||||
}, 2000);
|
||||
</script>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
if($_SESSION['user_admin'] != 1)
|
||||
{
|
||||
//redirect to panel.php
|
||||
$_SESSION["innfoError"] = "Brak uprawnień do tej strony";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
//pobierz wszystkich pracowników, najpierw wyświetl aktywnych, potem nieaktywnych
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE aktywne IN (1, 0) ORDER BY aktywne DESC, nazwisko ASC";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
|
||||
$uzytkownicyArray = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="printWorker.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>Wybierz pracownika</td>
|
||||
<td>
|
||||
<select name="id">
|
||||
<option disabled selected>Wybierz pracownika</option>
|
||||
<?php
|
||||
foreach($uzytkownicyArray as $user)
|
||||
{
|
||||
$aktywny = "nieaktywny";
|
||||
if($user['aktywne'] == 1)
|
||||
{
|
||||
$aktywny = "aktywny";
|
||||
}
|
||||
echo "<option value='".$user['id']."'>".$user['nazwisko']." ".$user['imie']." - (".$aktywny.")</option>";
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- wybór miesiąca -->
|
||||
<tr>
|
||||
<td>Wybierz miesiąc</td>
|
||||
<td>
|
||||
<input type="month" name="month" value="<?php echo date('Y-m'); ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
Pokaż czy są niezaakceptowane dni?: <input type="checkbox" name="notAccepted" value="1">
|
||||
</td>
|
||||
<tr>
|
||||
<td colspan="2"><input type="submit" name="printWorker" value="Pokaż"></td>
|
||||
</tr>
|
||||
<!-- anuluj -->
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<button class="cancel" type="button" onclick="window.location.href='dictionaries.php'">Anuluj</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,230 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
@session_start();
|
||||
|
||||
/*
|
||||
CREATE TABLE `uzytkownicy` (
|
||||
`id` int(10) UNSIGNED NOT NULL,
|
||||
`login` text NOT NULL,
|
||||
`haslo` text NOT NULL,
|
||||
`imie` text NOT NULL,
|
||||
`nazwisko` text NOT NULL,
|
||||
`dzial` int(10) UNSIGNED NOT NULL,
|
||||
`przelozony` int(10) UNSIGNED DEFAULT NULL,
|
||||
`aktywne` int(1) NOT NULL DEFAULT 1
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE `dzialy` (
|
||||
`id` int(10) UNSIGNED NOT NULL,
|
||||
`skrot` varchar(25) NOT NULL,
|
||||
`nazwa` text NOT NULL,
|
||||
`aktywne` int(11) NOT NULL DEFAULT 1
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
*/
|
||||
//Przełożony to id innego użytkownika, domyślnie aktywne = 0 do momentu aż przełożony zaakceptuje lub odrzuci (wówczas aktywne 2)
|
||||
//Dział to id działu
|
||||
//pozwól wybrać z list rozwijanych dział i przełożonych
|
||||
|
||||
|
||||
//jeżeli POST
|
||||
if($_SERVER['REQUEST_METHOD'] === 'POST')
|
||||
{
|
||||
//sprawdź czy wszystkie pola są wypełnione, hasło min 8 znaków, hasło = hasło2, login nie jest zajęty
|
||||
$login = $_POST['login'];
|
||||
$pass1 = $_POST['password'];
|
||||
$pass2 = $_POST['password2'];
|
||||
$imie = $_POST['imie'];
|
||||
$nazwisko = $_POST['nazwisko'];
|
||||
$dzial = $_POST['dzial'];
|
||||
$przelozony = $_POST['przelozony'];
|
||||
if($pass1 !== $pass2)
|
||||
{
|
||||
$_SESSION['error'] = "Hasła nie są takie same";
|
||||
header("Location: register.php");
|
||||
exit();
|
||||
}
|
||||
if(strlen($pass1) < 8)
|
||||
{
|
||||
$_SESSION['error'] = "Hasło musi mieć minimum 8 znaków";
|
||||
header("Location: register.php");
|
||||
exit();
|
||||
}
|
||||
if(empty($login))
|
||||
{
|
||||
$_SESSION['error'] = "Login jest wymagany";
|
||||
header("Location: register.php");
|
||||
exit();
|
||||
}
|
||||
if(empty($imie))
|
||||
{
|
||||
$_SESSION['error'] = "Imię jest wymagane";
|
||||
header("Location: register.php");
|
||||
exit();
|
||||
}
|
||||
if(empty($nazwisko))
|
||||
{
|
||||
$_SESSION['error'] = "Nazwisko jest wymagane";
|
||||
header("Location: register.php");
|
||||
exit();
|
||||
}
|
||||
if(empty($dzial))
|
||||
{
|
||||
$_SESSION['error'] = "Dział jest wymagany";
|
||||
header("Location: register.php");
|
||||
exit();
|
||||
}
|
||||
if(empty($przelozony))
|
||||
{
|
||||
$_SESSION['error'] = "Przełożony jest wymagany";
|
||||
header("Location: register.php");
|
||||
exit();
|
||||
}
|
||||
//sprawdź czy login jest zajęty
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE login = :login";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':login', $login, PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$user = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if($user !== false)
|
||||
{
|
||||
$_SESSION['error'] = "Login jest zajęty";
|
||||
header("Location: register.php");
|
||||
exit();
|
||||
}
|
||||
//dodaj użytkownika
|
||||
$sql = "INSERT INTO uzytkownicy (login, haslo, imie, nazwisko, dzial, przelozony, aktywne) VALUES (:login, sha1(:haslo), :imie, :nazwisko, :dzial, :przelozony, 0)";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':login', $login, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':haslo', $pass1, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':imie', $imie, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':nazwisko', $nazwisko, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':dzial', $dzial, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':przelozony', $przelozony, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$_SESSION['error'] = "Użytkownik dodany";
|
||||
header("Location: index.php");
|
||||
exit();
|
||||
}
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Rejestracja</title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj</h1>
|
||||
</header>
|
||||
<main id="register">
|
||||
<?php
|
||||
if(@isset($_SESSION['error']))
|
||||
{
|
||||
echo '<p class="error">'.$_SESSION['error'].'</p>';
|
||||
unset($_SESSION['error']);
|
||||
}
|
||||
?>
|
||||
<form action="register.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="login">Login</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="login" id="login" required>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="password">Hasło</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="password" name="password" id="password" required>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="password">Powtórz hasło</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="password" name="password2" id="password2" required>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="imie">Imię</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="imie" id="imie" required>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="nazwisko">Nazwisko</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="nazwisko" id="nazwisko" required>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="dzial">Dział</label>
|
||||
</td>
|
||||
<td>
|
||||
<select name="dzial" id="dzial">
|
||||
<?php
|
||||
$sql = "SELECT * FROM dzialy WHERE aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
while($dzial = $stmt->fetch(PDO::FETCH_ASSOC))
|
||||
{
|
||||
echo "<option value=\"".$dzial['id']."\">".$dzial['nazwa']."</option>";
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="przelozony">Przełożony</label>
|
||||
</td>
|
||||
<td>
|
||||
<select name="przelozony" id="przelozony">
|
||||
<?php
|
||||
$sql = "SELECT * FROM uzytkownicy, dzialy WHERE uzytkownicy.aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
while($przelozony = $stmt->fetch(PDO::FETCH_ASSOC))
|
||||
{
|
||||
//dopisz skrót działu
|
||||
echo "<option value=\"".$przelozony['id']."\">".$przelozony['imie']." ".$przelozony['nazwisko']." (".$przelozony['nazwa'].")</option>";
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" name="submit" value="Zarejestruj">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<button class="cancel" type="button" onclick="window.location.href='index.php'">Anuluj</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
<form action="showMonthForm.php" method="get">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="month">Pokaż miesiąc</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="month" name="month" id="month" value="<?php echo date('Y-m'); ?>" max="<?php echo date('Y-m'); ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" name="submit" value="Pokaż miesiąc">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<button class="cancel" type="button" onclick="window.location.href='panel.php'">Anuluj</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,233 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
/*
|
||||
CREATE TABLE `obecnosc` (
|
||||
`id` int(10) UNSIGNED NOT NULL,
|
||||
`kto` int(10) UNSIGNED NOT NULL,
|
||||
`data` date NOT NULL,
|
||||
`czasZaczecia` time DEFAULT NULL,
|
||||
`czasKonca` time DEFAULT NULL,
|
||||
`status` int(10) UNSIGNED NOT NULL,
|
||||
`zaakceptowane` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`zdalne` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`aktywne` tinyint(1) NOT NULL DEFAULT 1
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE `statusy` (
|
||||
`id` int(10) UNSIGNED NOT NULL,
|
||||
`skrot` varchar(10) NOT NULL,
|
||||
`nazwa` text NOT NULL,
|
||||
`oznaczaWolne` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`aktywne` tinyint(4) NOT NULL DEFAULT 1
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
CREATE TABLE `dniwolne` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT , `data` DATE NOT NULL , `nazwaSwieta` TEXT NOT NULL , `aktywne` INT(1) NOT NULL DEFAULT '1' , PRIMARY KEY (`id`)) ENGINE = InnoDB;
|
||||
*/
|
||||
// Lp | Numer Dnia | Czas rozpoczęcia - Czas zakończenia | Status (z tabeli statusy XX - Nazwa) | Zdalne | Zaakceptowane
|
||||
//nagłówek nad tabelą MIESIĄC - ROK
|
||||
//poniżej ilość dni pracy zdalnej w danym miesiącu
|
||||
//pokaż w tabeli dany miesiąc, jeżeli na dany dzień nie ma wpisu zostaw puste pole godzina i czas pracy
|
||||
// dane podawane przez $_GET['month'] = 2023-08
|
||||
//dla soboty i niedzieli dodaj klasę weekend
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="monthShow">
|
||||
<div id="doPodzialu">
|
||||
<h2>
|
||||
<?php
|
||||
if(isset($_GET['month']))
|
||||
{
|
||||
$mArray = ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec","Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"];
|
||||
$month = $_GET['month'];
|
||||
$month = explode('-', $month);
|
||||
echo $mArray[$month[1]-1]." ".$month[0];
|
||||
|
||||
}
|
||||
?>
|
||||
</h2>
|
||||
<div class="addInfo">
|
||||
Imię i nazwisko: <b><?php echo $_SESSION['user_imie']." ".$_SESSION['user_nazwisko']; ?> </b><br>
|
||||
Dział: <b><?php echo $_SESSION['user_dzial_nazwa']; ?></b><br>
|
||||
<?php
|
||||
//sprawdź ilość dni pracy zdalnej w danym miesiącu
|
||||
$sql = "SELECT COUNT(*) FROM obecnosc WHERE kto = :kto AND data LIKE :data AND zdalne = 1 AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
//dodaj zero wiodące do miesiąca
|
||||
$m = $month[1];
|
||||
if($m < 10 && strlen($m) < 2)
|
||||
{
|
||||
$m = "0".$m;
|
||||
}
|
||||
$stmt->bindValue(':data', $month[0]."-".$m."%", PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$zdalne = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
echo "Ilość dni pracy zdalnej: <b>".$zdalne['COUNT(*)']."</b>";
|
||||
//sprawdź czy są dni niezaakceptowane
|
||||
$sql = "SELECT COUNT(*) FROM obecnosc WHERE kto = :kto AND zaakceptowane = 0 AND aktywne = 1 AND data LIKE :data";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':data', $month[0]."-".$m."%", PDO::PARAM_STR);
|
||||
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$niezaakceptowane = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if($niezaakceptowane['COUNT(*)'] > 0)
|
||||
{
|
||||
?>
|
||||
<br />
|
||||
<span class="bigError">Masz niezaakceptowane dni pracy</span>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<table class="month">
|
||||
<tr>
|
||||
<th>Dzień</th>
|
||||
<th>Czas pracy</th>
|
||||
</tr>
|
||||
<?php
|
||||
//sprawdź ilość dni w miesiącu, następnie wykonaj pętlę tyle razy ile jest dni w miesiącu
|
||||
$daysInMonth = cal_days_in_month(CAL_GREGORIAN, $month[1], $month[0]);
|
||||
//pobierz dni wolne na dany miesiąc (o ile są)
|
||||
$sql = "SELECT * FROM dniwolne WHERE data LIKE :data AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':data', $month[0]."-".$m."%", PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$dniWolne = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
$dniWolneArray = [];
|
||||
foreach($dniWolne as $dzienWolny)
|
||||
{
|
||||
$dniWolneArray[] = $dzienWolny['data'];
|
||||
}
|
||||
|
||||
for($i = 1; $i <= $daysInMonth; $i++)
|
||||
{
|
||||
//sprawdź czy jest wpis w bazie dla danego dnia
|
||||
$sql = "SELECT * FROM obecnosc, statusy WHERE obecnosc.kto = :kto AND obecnosc.data = :data AND obecnosc.aktywne = 1 AND obecnosc.status = statusy.id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', $month[0]."-".$month[1]."-".$i, PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$work = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
//sprawdź czy sobota lub niedziela
|
||||
if(date('N', strtotime($month[0]."-".$month[1]."-".$i)) > 5 || in_array($month[0]."-".$month[1]."-".$i, $dniWolneArray))
|
||||
{
|
||||
echo "<tr class='weekend'>";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<tr>";
|
||||
}
|
||||
if($work === false)
|
||||
{
|
||||
//nie ma wpisu w bazie
|
||||
echo "<td>".$i."</td>";
|
||||
echo "<td></td>";
|
||||
}
|
||||
else
|
||||
{
|
||||
//jest wpis w bazie
|
||||
echo "<td>".$i;
|
||||
//jeżeli niezaakceptowane ❌
|
||||
if($work['zaakceptowane'] == 0)
|
||||
{
|
||||
echo " ❌";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo " ✔️";
|
||||
}
|
||||
echo "</td>";
|
||||
if($work['czasZaczecia'] != NULL && $work['czasKonca'] != NULL)
|
||||
{
|
||||
echo "<td>".$work['czasZaczecia']." - ".$work['czasKonca']."";
|
||||
if($work['skrot'] != "OB")
|
||||
{
|
||||
echo " - ".$work['skrot']."";
|
||||
}
|
||||
}
|
||||
else if($work['czasZaczecia'] != NULL && $work['czasKonca'] == NULL)
|
||||
{
|
||||
echo "<td>".$work['czasZaczecia']." - ";
|
||||
if($work['skrot'] != "OB")
|
||||
{
|
||||
echo " - ".$work['skrot']."";
|
||||
}
|
||||
}
|
||||
else if($work['czasZaczecia'] == NULL && $work['czasKonca'] != NULL)
|
||||
{
|
||||
echo "<td> - ".$work['czasKonca']."";
|
||||
if($work['skrot'] != "OB")
|
||||
{
|
||||
echo " - ".$work['skrot']."";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<td>".$work['skrot']."";
|
||||
//
|
||||
}
|
||||
if($work['zdalne'] == 1)
|
||||
{
|
||||
echo " - PZ";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "</td>";
|
||||
}
|
||||
}
|
||||
echo "</tr>";
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
</div>
|
||||
<div id="legenda">
|
||||
<a href="showMonthFormPrint.php?month=<?php echo $_GET['month']; ?>" target="_blank">
|
||||
<button>Wydrukuj</button>
|
||||
</a>
|
||||
<a href="showMonth.php">
|
||||
<button>Wróć</button>
|
||||
</a>
|
||||
<?php
|
||||
//Wypisz legendę z tabeli statusy
|
||||
$sql = "SELECT * FROM statusy WHERE aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
$statusy = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
echo "<h2>Legenda</h2>";
|
||||
echo "<table>";
|
||||
foreach($statusy as $status)
|
||||
{
|
||||
echo "<tr>";
|
||||
echo "<td>".$status['skrot']."</td>";
|
||||
echo "<td>".$status['nazwa']."</td>";
|
||||
echo "</tr>";
|
||||
}
|
||||
echo "</table>";
|
||||
|
||||
?>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,186 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
/*
|
||||
CREATE TABLE `obecnosc` (
|
||||
`id` int(10) UNSIGNED NOT NULL,
|
||||
`kto` int(10) UNSIGNED NOT NULL,
|
||||
`data` date NOT NULL,
|
||||
`czasZaczecia` time DEFAULT NULL,
|
||||
`czasKonca` time DEFAULT NULL,
|
||||
`status` int(10) UNSIGNED NOT NULL,
|
||||
`zaakceptowane` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`zdalne` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`aktywne` tinyint(1) NOT NULL DEFAULT 1
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE `statusy` (
|
||||
`id` int(10) UNSIGNED NOT NULL,
|
||||
`skrot` varchar(10) NOT NULL,
|
||||
`nazwa` text NOT NULL,
|
||||
`oznaczaWolne` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`aktywne` tinyint(4) NOT NULL DEFAULT 1
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
*/
|
||||
// Lp | Numer Dnia | Czas rozpoczęcia - Czas zakończenia | Status (z tabeli statusy XX - Nazwa) | Zdalne | Zaakceptowane
|
||||
//nagłówek nad tabelą MIESIĄC - ROK
|
||||
//poniżej ilość dni pracy zdalnej w danym miesiącu
|
||||
//pokaż w tabeli dany miesiąc, jeżeli na dany dzień nie ma wpisu zostaw puste pole godzina i czas pracy
|
||||
// dane podawane przez $_GET['month'] = 2023-08
|
||||
//dla soboty i niedzieli dodaj klasę weekend
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title><?php echo $_GET['month']; ?> - ewidencja czasu - <?php echo $_SESSION['user_imie']." ".$_SESSION['user_nazwisko']; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body onLoad="window.print()">
|
||||
|
||||
<main id="print">
|
||||
<h2 style="font-size: xx-large;">
|
||||
<?php
|
||||
if(isset($_GET['month']))
|
||||
{
|
||||
$mArray = ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec","Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"];
|
||||
$month = $_GET['month'];
|
||||
$month = explode('-', $month);
|
||||
echo $mArray[$month[1]-1]." ".$month[0];
|
||||
|
||||
}
|
||||
?>
|
||||
</h2>
|
||||
<div>
|
||||
Imię i nazwisko: <b><?php echo $_SESSION['user_imie']." ".$_SESSION['user_nazwisko']; ?> </b><br>
|
||||
Dział: <b><?php echo $_SESSION['user_dzial_nazwa']; ?></b><br>
|
||||
<?php
|
||||
//sprawdź ilość dni pracy zdalnej w danym miesiącu
|
||||
$sql = "SELECT COUNT(*) FROM obecnosc WHERE kto = :kto AND data LIKE :data AND zdalne = 1 AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
//dodaj zero wiodące do miesiąca
|
||||
$m = $month[1];
|
||||
if($m < 10 && strlen($m) < 2)
|
||||
{
|
||||
$m = "0".$m;
|
||||
}
|
||||
$stmt->bindValue(':data', $month[0]."-".$m."%", PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$zdalne = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
echo "Ilość dni pracy zdalnej: <b>".$zdalne['COUNT(*)']."</b>";
|
||||
//sprawdź czy są dni niezaakceptowane
|
||||
$sql = "SELECT COUNT(*) FROM obecnosc WHERE kto = :kto AND zaakceptowane = 0 AND aktywne = 1 AND data LIKE :data";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':data', $month[0]."-".$m."%", PDO::PARAM_STR);
|
||||
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$niezaakceptowane = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if($niezaakceptowane['COUNT(*)'] > 0)
|
||||
{
|
||||
?>
|
||||
<br />
|
||||
<span class="bigError">Masz niezaakceptowane dni pracy</span>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<table class="month" style="margin: 0 0;">
|
||||
<tr>
|
||||
<th>Dzień</th>
|
||||
<th>Czas pracy</th>
|
||||
</tr>
|
||||
<?php
|
||||
//sprawdź ilość dni w miesiącu, następnie wykonaj pętlę tyle razy ile jest dni w miesiącu
|
||||
$daysInMonth = cal_days_in_month(CAL_GREGORIAN, $month[1], $month[0]);
|
||||
for($i = 1; $i <= $daysInMonth; $i++)
|
||||
{
|
||||
//pobierz dni wolne na dany miesiąc (o ile są)
|
||||
$sql = "SELECT * FROM dniwolne WHERE data LIKE :data AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':data', $month[0]."-".$m."%", PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$dniWolne = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
$dniWolneArray = [];
|
||||
foreach($dniWolne as $dzienWolny)
|
||||
{
|
||||
$dniWolneArray[] = $dzienWolny['data'];
|
||||
}
|
||||
//sprawdź czy jest wpis w bazie dla danego dnia
|
||||
$sql = "SELECT * FROM obecnosc, statusy WHERE obecnosc.kto = :kto AND obecnosc.data = :data AND obecnosc.aktywne = 1 AND obecnosc.status = statusy.id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', $month[0]."-".$month[1]."-".$i, PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$work = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
//sprawdź czy sobota lub niedziela
|
||||
if(date('N', strtotime($month[0]."-".$month[1]."-".$i)) > 5 || in_array($month[0]."-".$month[1]."-".$i, $dniWolneArray))
|
||||
{
|
||||
echo "<tr class='weekend'>";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<tr>";
|
||||
}
|
||||
if($work === false)
|
||||
{
|
||||
//nie ma wpisu w bazie
|
||||
echo "<td>".$i."</td>";
|
||||
echo "<td></td>";
|
||||
}
|
||||
else
|
||||
{
|
||||
//jest wpis w bazie
|
||||
echo "<td>".$i."</td>";
|
||||
if($work['czasZaczecia'] != NULL && $work['czasKonca'] != NULL)
|
||||
{
|
||||
echo "<td>".$work['czasZaczecia']." - ".$work['czasKonca']."";
|
||||
if($work['skrot'] != "OB")
|
||||
{
|
||||
echo " - ".$work['skrot']."";
|
||||
}
|
||||
}
|
||||
else if($work['czasZaczecia'] != NULL && $work['czasKonca'] == NULL)
|
||||
{
|
||||
echo "<td>".$work['czasZaczecia']." - ";
|
||||
if($work['skrot'] != "OB")
|
||||
{
|
||||
echo " - ".$work['skrot']."";
|
||||
}
|
||||
}
|
||||
else if($work['czasZaczecia'] == NULL && $work['czasKonca'] != NULL)
|
||||
{
|
||||
echo "<td> - ".$work['czasKonca']."";
|
||||
if($work['skrot'] != "OB")
|
||||
{
|
||||
echo " - ".$work['skrot']."";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<td>".$work['skrot']."";
|
||||
//
|
||||
}
|
||||
if($work['zdalne'] == 1)
|
||||
{
|
||||
echo " - PZ";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "</td>";
|
||||
}
|
||||
}
|
||||
echo "</tr>";
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
</main>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
<script>
|
||||
//zamknij kartę po 5 sekundach
|
||||
setTimeout(function(){ window.close(); }, 5000);
|
||||
</script>
|
||||
</html>
|
|
@ -0,0 +1,111 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
if($_SESSION['user_admin'] != 1)
|
||||
{
|
||||
//redirect to panel.php
|
||||
$_SESSION["innfoError"] = "Brak uprawnień do tej strony";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST["statAdd"]))
|
||||
{
|
||||
//sprawdź czy podany skrot i nazwa nie jest już wpisany do bazy
|
||||
$skrot = $_POST['skrot'];
|
||||
$nazwa = $_POST['nazwa'];
|
||||
$sql = "SELECT * FROM statusy WHERE skrot = :skrot OR nazwa = :nazwa";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':skrot', $skrot, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':nazwa', $nazwa, PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$count = $stmt->rowCount();
|
||||
if($count > 0)
|
||||
{
|
||||
$_SESSION['innfoError'] = "Podany skrot lub nazwa jest już w bazie";
|
||||
header("Location: statAdd.php");
|
||||
exit();
|
||||
}
|
||||
$oznaczaWolne = 0;
|
||||
if(isset($_POST['oznaczaWolne']))
|
||||
{
|
||||
$oznaczaWolne = 1;
|
||||
}
|
||||
$aktywne = 0;
|
||||
if(isset($_POST['aktywne']))
|
||||
{
|
||||
$aktywne = 1;
|
||||
}
|
||||
$sql = "INSERT INTO statusy (skrot, nazwa, oznaczaWolne, aktywne) VALUES (:skrot, :nazwa, :oznaczaWolne, :aktywne)";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':skrot', $skrot, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':nazwa', $nazwa, PDO::PARAM_STR);
|
||||
$stmt->bindValue(':oznaczaWolne', $oznaczaWolne, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':aktywne', 1, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$_SESSION['innfoError'] = "Dodano status";
|
||||
header("Location: dictionaries.php");
|
||||
exit();
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="statAdd.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>Skrot</td>
|
||||
<td><input type="text" name="skrot" required></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Nazwa</td>
|
||||
<td><input type="text" name="nazwa" required></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Oznacza wolne</td>
|
||||
<td><input type="checkbox" name="oznaczaWolne"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><input type="submit" name="statAdd" value="Dodaj"></td>
|
||||
</tr>
|
||||
<!-- anuluj -->
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<button class="cancel" type="button" onclick="window.location.href='dictionaries.php'">Anuluj</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,110 @@
|
|||
<?php
|
||||
/*
|
||||
CREATE TABLE IF NOT EXISTS `statusy` (
|
||||
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`skrot` varchar(10) NOT NULL,
|
||||
`nazwa` text NOT NULL,
|
||||
`oznaczaWolne` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`aktywne` tinyint(4) NOT NULL DEFAULT 1,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `skrot` (`skrot`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
|
||||
*/
|
||||
//nie wyświetlaj statusu o id 1 (zabezpieczony przed usunięciem)
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
if($_SESSION['user_admin'] != 1)
|
||||
{
|
||||
//redirect to panel.php
|
||||
$_SESSION["innfoError"] = "Brak uprawnień do tej strony";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
|
||||
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST["statDel"]))
|
||||
{
|
||||
//sprawdź czy nie jest to status 1
|
||||
$id = $_POST['id'];
|
||||
if($id == 1)
|
||||
{
|
||||
$_SESSION['innfoError'] = "Nie można usunąć tego statusu";
|
||||
header("Location: dictionaries.php");
|
||||
exit();
|
||||
}
|
||||
$sql = "UPDATE statusy SET aktywne = 0 WHERE id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$_SESSION['innfoError'] = "Usunięto status";
|
||||
header("Location: dictionaries.php");
|
||||
exit();
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="statDel.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>Wybierz status</td>
|
||||
<td>
|
||||
<select name="id">
|
||||
<?php
|
||||
$sql = "SELECT * FROM statusy WHERE aktywne = 1 AND id != 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute();
|
||||
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
|
||||
{
|
||||
echo "<option value=\"".$row['id']."\">".$row['skrot']." - ".$row['nazwa']."</option>";
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" name="statDel" value="Usuń status">
|
||||
</td>
|
||||
</tr>
|
||||
<!-- anuluj -->
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<button class="cancel" type="button" onclick="window.location.href='dictionaries.php'">Anuluj</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,414 @@
|
|||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-size: 1.18rem;
|
||||
text-decoration: none;
|
||||
font-family: 'Ubuntu', sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
-webkit-print-color-adjust: exact !important;
|
||||
print-color-adjust: exact !important;
|
||||
}
|
||||
|
||||
::selection {
|
||||
background-color: rgb(135, 250, 160);
|
||||
color: white;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background-color: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color: rgb(135, 250, 160);
|
||||
}
|
||||
|
||||
body {
|
||||
padding: 15px;
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
a {
|
||||
color: black;
|
||||
transition: 0.2s;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: rgb(135, 250, 160);
|
||||
}
|
||||
|
||||
nav {
|
||||
width: 97%;
|
||||
margin: 0 auto;
|
||||
padding: 4px;
|
||||
border-bottom: 1px solid rgb(222, 222, 222);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
nav ol {
|
||||
list-style: none;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-around;
|
||||
}
|
||||
|
||||
nav ol li {
|
||||
min-width: 85px;
|
||||
padding: 2px;
|
||||
margin: 3px;
|
||||
border-radius: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
header {
|
||||
width: 97%;
|
||||
margin: 0 auto;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
header h1 {
|
||||
text-align: center;
|
||||
font-size: 3rem;
|
||||
}
|
||||
|
||||
#info {
|
||||
width: 97%;
|
||||
margin: 0 auto;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
main#start {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
width: 97%;
|
||||
margin: 0 auto;
|
||||
background-color: rgba(252, 252, 252, 0.5);
|
||||
padding: 5px;
|
||||
border: 1px solid rgb(222, 222, 222);
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
main#start a {
|
||||
width: 23%;
|
||||
min-width: 250px;
|
||||
height: 150px;
|
||||
margin: 5px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
text-decoration: none;
|
||||
transition: .2s;
|
||||
padding: 10px 5px;
|
||||
border-radius: 5px;
|
||||
border: 1px solid black;
|
||||
font-weight: bolder;
|
||||
|
||||
}
|
||||
|
||||
main#start a:hover {
|
||||
background-color: rgb(135, 250, 160);
|
||||
color: white;
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
main#start a h3 {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
main#work {
|
||||
width: 97%;
|
||||
margin: 0 auto;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
main#work table.form {
|
||||
min-width: 450px;
|
||||
margin: 0 auto;
|
||||
padding: 5px;
|
||||
border: 1px solid rgb(222, 222, 222);
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
main#work table.form tr {
|
||||
margin: 0 auto;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
main#work table.form tr td {
|
||||
margin: 0 auto;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
main#work table.form tr td input[type="submit"] {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
padding: 5px;
|
||||
border-radius: 5px;
|
||||
border: 1px solid black;
|
||||
background-color: white;
|
||||
font-weight: bolder;
|
||||
transition: .2s;
|
||||
}
|
||||
|
||||
main#work table.form tr td input[type="submit"]:hover {
|
||||
background-color: rgb(135, 250, 160);
|
||||
color: white;
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
#monthShow {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#monthShow table.month {
|
||||
margin: 0 auto;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
max-width: 20cm;
|
||||
}
|
||||
|
||||
#monthShow table.month td,
|
||||
#monthShow table.month th {
|
||||
padding: 4px;
|
||||
border: 1px solid black;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
#monthShow table.month .weekend {
|
||||
background-color: rgba(72, 110, 192, 1);
|
||||
}
|
||||
|
||||
#monthShow table.month th {
|
||||
background-color: rgb(123, 211, 94)
|
||||
}
|
||||
|
||||
#monthShow #doPodzialu {
|
||||
width: 74%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#monthShow #legenda {
|
||||
width: 24%;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#monthShow #legenda table {
|
||||
margin: 5px auto;
|
||||
border-collapse: collapse;
|
||||
|
||||
}
|
||||
|
||||
#monthShow #legenda table td {
|
||||
padding: 4px;
|
||||
border: 1px solid black;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
#monthShow #legenda button {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.cancel {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#monthShow #legenda button,
|
||||
.cancel {
|
||||
margin: 5px auto;
|
||||
padding: 5px;
|
||||
border-radius: 5px;
|
||||
border: 1px solid black;
|
||||
background-color: white;
|
||||
font-weight: bolder;
|
||||
transition: .2s;
|
||||
}
|
||||
|
||||
#monthShow #legenda button:hover,
|
||||
.cancel:hover {
|
||||
background-color: rgb(135, 250, 160);
|
||||
color: white;
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
#print table.month {
|
||||
margin: 0 auto;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
#print table.month td,
|
||||
#print table.month th {
|
||||
padding: 0 4px;
|
||||
font-size: 16px;
|
||||
border: 1px solid black;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
#print table.month .weekend {
|
||||
background-color: rgba(72, 110, 192, 1);
|
||||
}
|
||||
|
||||
#print table.month th {
|
||||
background-color: rgb(123, 211, 94)
|
||||
}
|
||||
|
||||
#puste {
|
||||
clear: both;
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
#stopka {
|
||||
height: 50px;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
background-color: rgba(252, 252, 252, 1);
|
||||
}
|
||||
|
||||
#stopka a {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
main#register {
|
||||
width: 97%;
|
||||
margin: 0 auto;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
main#register table.form {
|
||||
min-width: 450px;
|
||||
margin: 0 auto;
|
||||
padding: 5px;
|
||||
border: 1px solid rgb(222, 222, 222);
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
main#register table.form tr {
|
||||
margin: 0 auto;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
main#register table.form tr td {
|
||||
margin: 0 auto;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
main#register table.form tr td input,
|
||||
main#register table.form tr td select {
|
||||
width: 99%;
|
||||
}
|
||||
|
||||
main#register table.form tr td input[type="submit"],
|
||||
main#register table.form tr td button {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
padding: 5px;
|
||||
border-radius: 5px;
|
||||
border: 1px solid black;
|
||||
background-color: white;
|
||||
font-weight: bolder;
|
||||
transition: .2s;
|
||||
}
|
||||
|
||||
main#register table.form tr td input[type="submit"]:hover,
|
||||
main#register table.form tr td button:hover {
|
||||
background-color: rgb(135, 250, 160);
|
||||
color: white;
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
main#uzytkownicy {
|
||||
width: 97%;
|
||||
margin: 0 auto;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
main#uzytkownicy table {
|
||||
min-width: 550px;
|
||||
margin: 0 auto;
|
||||
padding: 5px;
|
||||
border: 1px solid rgb(222, 222, 222);
|
||||
border-radius: 5px;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
main#uzytkownicy table tr {
|
||||
margin: 0 auto;
|
||||
padding: 5px;
|
||||
border: 1px solid black;
|
||||
}
|
||||
|
||||
main#uzytkownicy table tr td,
|
||||
main#uzytkownicy table tr th {
|
||||
margin: 0 auto;
|
||||
padding: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
main#uzytkownicy table tr td:hover,
|
||||
main#uzytkownicy table tr:hover,
|
||||
main#uzytkownicy table tr th:hover {
|
||||
background-color: rgba(155, 155, 155, 0.187);
|
||||
}
|
||||
|
||||
main#uzytkownicy table tr td button {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
padding: 2px;
|
||||
border-radius: 5px;
|
||||
border: 1px solid black;
|
||||
background-color: white;
|
||||
font-weight: bolder;
|
||||
transition: .2s;
|
||||
}
|
||||
|
||||
main#uzytkownicy table tr td button:hover {
|
||||
background-color: rgb(135, 250, 160);
|
||||
color: white;
|
||||
border: 1px solid white;
|
||||
}
|
||||
|
||||
|
||||
/* Detect is printing? */
|
||||
@media print {
|
||||
#puste {
|
||||
clear: both;
|
||||
height: .5cm;
|
||||
}
|
||||
|
||||
#stopka,
|
||||
#stopka a {
|
||||
font-size: 7px;
|
||||
color: #fffffe;
|
||||
}
|
||||
|
||||
#stopka {
|
||||
height: .5cm;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
table.month {
|
||||
width: 10cm;
|
||||
}
|
||||
}
|
||||
.bigError
|
||||
{
|
||||
color: red;
|
||||
font-size: 2rem;
|
||||
font-weight: bold;
|
||||
}
|
|
@ -0,0 +1,90 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
@session_start();
|
||||
//sprawdź czy użytkownik jest przełożonym tego pracownik $_POST["user"]
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE id = :id AND przelozony = :przelozony";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $_POST["user"], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':przelozony', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$user = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if($user === false)
|
||||
{
|
||||
$_SESSION["innfoError"] = "Nie jesteś przełożonym tego pracownika";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
//sprawdź jakie miesiące mają niezaakceptowane dni, wpisz do zmiennej $months w formacie YYYY-MM (z zerem wiodącym)
|
||||
$months = array();
|
||||
$sql = "SELECT DISTINCT DATE_FORMAT(data, '%Y-%m') AS miesiac FROM obecnosc WHERE kto = :kto AND zaakceptowane = 0 AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_POST["user"], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$months = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
//print_r($months);
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="waitingForAcceptsShow.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="mm">Pokaż miesiąc:</label>
|
||||
</td>
|
||||
<td>
|
||||
<select name="mm" id="mm">
|
||||
<?php
|
||||
foreach($months as $month)
|
||||
{
|
||||
echo '<option value="'.$month['miesiac'].'">'.$month['miesiac'].'</option>';
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="hidden" name="user" value="<?php echo $_POST['user']; ?>">
|
||||
<input type="submit" name="show" value="Pokaż">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,221 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
@session_start();
|
||||
|
||||
//sprawdź czy zalogowany użytkownik jest przełożonym $_POST["user"]
|
||||
|
||||
$sql = "SELECT * FROM uzytkownicy WHERE id = :id AND przelozony = :przelozony";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $_POST["user"], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':przelozony', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
|
||||
if($stmt->rowCount() === 0)
|
||||
{
|
||||
$_SESSION["innfoError"] = "Nie jesteś przełożonym tego użytkownika";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
//pobierz dane z tabeli uzytkownicy, dzialy
|
||||
$sql = "SELECT uzytkownicy.id AS id, login, imie, nazwisko, uzytkownicy.dzial AS dzial, `przelozony`, dzialy.nazwa AS nazwa, dzialy.skrot AS skrot FROM uzytkownicy, dzialy WHERE uzytkownicy.id = :id AND dzialy.id = uzytkownicy.dzial AND uzytkownicy.aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':id', $_POST["user"], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$user = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
//print_r($user);
|
||||
//pobierz wszystkie obecności z danego miesiąca
|
||||
$sql = "SELECT * FROM obecnosc WHERE kto = :kto AND aktywne = 1 AND data LIKE :data";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_POST["user"], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', $_POST['mm'].'%', PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$obecnosci = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
//print_r($obecnosci);
|
||||
//$_POST['mm'] = YYYY-MM
|
||||
//pobierz ilość dni w miesiącu
|
||||
$daysInMonth = cal_days_in_month(CAL_GREGORIAN, explode('-', $_POST['mm'])[1], explode('-', $_POST['mm'])[0]);
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="monthShow">
|
||||
<div id="doPodzialu">
|
||||
<h2>
|
||||
<?php
|
||||
if(isset($_GET['month']))
|
||||
{
|
||||
$mArray = ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec","Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"];
|
||||
$month = $_GET['month'];
|
||||
$month = explode('-', $month);
|
||||
echo $mArray[$month[1]-1]." ".$month[0];
|
||||
|
||||
}
|
||||
?>
|
||||
</h2>
|
||||
<div class="addInfo">
|
||||
<?php
|
||||
echo @$_SESSION["innfoError"];
|
||||
$_SESSION["innfoError"] = "";
|
||||
?>
|
||||
</div>
|
||||
Imię i nazwisko: <b><?php echo $user['imie']." ".$user['nazwisko']; ?></b><br>
|
||||
Dział: <b><?php echo $user['nazwa']; ?></b><br>
|
||||
<?php
|
||||
//sprawdź ilość dni pracy zdalnej w danym miesiącu
|
||||
$sql = "SELECT * FROM obecnosc WHERE kto = :kto AND aktywne = 1 AND data LIKE :data AND zdalne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_POST["user"], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', $_POST['mm'].'%', PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$zdalnie = $stmt->rowCount();
|
||||
echo "Ilość dni pracy zdalnej: <b>".$zdalnie."</b>";
|
||||
?>
|
||||
<table class="month">
|
||||
<tr>
|
||||
<th>Dzień</th>
|
||||
<th>Czas pracy</th>
|
||||
</tr>
|
||||
<?php
|
||||
$sql = "SELECT * FROM dniwolne WHERE data LIKE :data AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':data', $_POST['mm'].'%', PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$dniWolne = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
$dniWolneArray = [];
|
||||
foreach($dniWolne as $dzienWolny)
|
||||
{
|
||||
$dniWolneArray[] = $dzienWolny['data'];
|
||||
}
|
||||
for($i = 1; $i <= $daysInMonth; $i++)
|
||||
{
|
||||
//sprawdź czy jest wpis w bazie dla danego dnia
|
||||
$day = $_POST['mm']."-".($i < 10 ? "0".$i : $i);
|
||||
$sql = "SELECT * FROM obecnosc, statusy WHERE obecnosc.kto = :kto AND obecnosc.data = :data AND obecnosc.aktywne = 1 AND obecnosc.status = statusy.id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_POST["user"], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', $day, PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$obecnosc = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
//sprawdź czy sobota lub niedziela
|
||||
$dayOfWeek = date('w', strtotime($day));
|
||||
if($dayOfWeek == 0 || $dayOfWeek == 6)
|
||||
{
|
||||
echo '<tr class="weekend">';
|
||||
}
|
||||
else if(in_array($day, $dniWolneArray))
|
||||
{
|
||||
echo '<tr class="weekend">';
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '<tr>';
|
||||
}
|
||||
//brak wpisu w bazie
|
||||
if($obecnosc === false)
|
||||
{
|
||||
echo '<td>'.$i.'</td>';
|
||||
echo '<td></td>';
|
||||
}
|
||||
else
|
||||
{
|
||||
//jest wpis w bazie
|
||||
echo "<td>".$i;
|
||||
//jeżeli niezaakceptowane ❌
|
||||
if($obecnosc['zaakceptowane'] == 0)
|
||||
{
|
||||
echo " ❌";
|
||||
}
|
||||
//jeżeli zaakceptowane ✔️
|
||||
else if($obecnosc['zaakceptowane'] == 1)
|
||||
{
|
||||
echo " ✔️";
|
||||
}
|
||||
echo "</td>";
|
||||
if($obecnosc['czasZaczecia'] != NULL && $obecnosc['czasKonca'] != NULL)
|
||||
{
|
||||
echo "<td>".$obecnosc['czasZaczecia']." - ".$obecnosc['czasKonca']."";
|
||||
if($obecnosc['skrot'] != "OB")
|
||||
{
|
||||
echo " - ".$obecnosc['skrot']."";
|
||||
}
|
||||
}
|
||||
else if($obecnosc['czasZaczecia'] != NULL && $obecnosc['czasKonca'] == NULL)
|
||||
{
|
||||
echo "<td>".$obecnosc['czasZaczecia']." - ";
|
||||
if($obecnosc['skrot'] != "OB")
|
||||
{
|
||||
echo " - ".$obecnosc['skrot']."";
|
||||
}
|
||||
}
|
||||
else if($obecnosc['czasZaczecia'] == NULL && $obecnosc['czasKonca'] != NULL)
|
||||
{
|
||||
echo "<td> - ".$obecnosc['czasKonca']."";
|
||||
if($obecnosc['skrot'] != "OB")
|
||||
{
|
||||
echo " - ".$obecnosc['skrot']."";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<td>".$obecnosc['skrot']."";
|
||||
//
|
||||
}
|
||||
if($obecnosc['zdalne'] == 1)
|
||||
{
|
||||
echo " - PZ";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "</td>";
|
||||
}
|
||||
}
|
||||
echo "</tr>";
|
||||
}
|
||||
?>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
<div id="legenda">
|
||||
<div style="height: 20px;"></div>
|
||||
<h3>Opcje</h3>
|
||||
<form action="accept.php" method="post">
|
||||
<input type="hidden" name="user" value="<?php echo $_POST['user']; ?>">
|
||||
<input type="hidden" name="month" value="<?php echo $_POST['mm']; ?>">
|
||||
<button type="submit" name="akceptuj">Akceptuj</button>
|
||||
</form>
|
||||
<form action="print.php" method="post">
|
||||
<input type="hidden" name="user" value="<?php echo $_POST['user']; ?>">
|
||||
<input type="hidden" name="month" value="<?php echo $_POST['mm']; ?>">
|
||||
<button type="submit" name="drukuj">Drukuj</button>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
}
|
||||
|
||||
|
||||
//print_r($_POST);
|
|
@ -0,0 +1,89 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
@session_start();
|
||||
|
||||
//pobierz listę danych pracowników których przełożonym jest zalogowany użytkownik
|
||||
$podlega = array();
|
||||
$sql = "SELECT id, imie, nazwisko FROM uzytkownicy WHERE przelozony = :przelozony AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':przelozony', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$podlega = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
//print_r($podlega);
|
||||
//sprawdź czy któryś z tych pracowników ma nie zaaakceptowane dni
|
||||
$uzytkownicyWithDaysWaiting = array();
|
||||
foreach($podlega as $podlega)
|
||||
{
|
||||
$sql = "SELECT * FROM obecnosc WHERE kto = :kto AND zaakceptowane = 0 AND aktywne = 1 AND data < :data";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $podlega['id'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', date('Y-m-d'), PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$daysWaiting = $stmt->rowCount();
|
||||
if($daysWaiting > 0)
|
||||
{
|
||||
$uzytkownicyWithDaysWaiting[] = $podlega;
|
||||
}
|
||||
}
|
||||
//print_r($uzytkownicyWithDaysWaiting);
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
<div class="error">
|
||||
<?php
|
||||
if(isset($_SESSION['innfoError']))
|
||||
{
|
||||
echo $_SESSION['innfoError'];
|
||||
unset($_SESSION['innfoError']);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<form action="waitingForAcceptsMonth_form.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="user">Wybierz pracownika:</label>
|
||||
</td>
|
||||
<td>
|
||||
<select name="user" id="user">
|
||||
<?php
|
||||
foreach($uzytkownicyWithDaysWaiting as $user)
|
||||
{
|
||||
echo '<option value="'.$user['id'].'">'.$user['imie'].' '.$user['nazwisko'].'</option>';
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" name="show" value="Pokaż">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,55 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
//print_r($_SESSION);
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
<form action="workEnd_form.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="end">Zakończenie pracy</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="time" name="end" id="end" value="<?php echo date('H:00'); ?>" max="<?php echo date('TH:i'); ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" name="submit" value="Zakończ pracę">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<button class="cancel" type="button" onclick="window.location.href='panel.php'">Anuluj</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,75 @@
|
|||
<?php
|
||||
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
|
||||
/*
|
||||
|
||||
CREATE TABLE `obecnosc` (
|
||||
`id` int(10) UNSIGNED NOT NULL,
|
||||
`kto` int(10) UNSIGNED NOT NULL,
|
||||
`data` date NOT NULL,
|
||||
`czasZaczecia` time DEFAULT NULL,
|
||||
`czasKonca` time DEFAULT NULL,
|
||||
`status` int(10) UNSIGNED NOT NULL,
|
||||
`zaakceptowane` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`zdalne` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`aktywne` tinyint(1) NOT NULL DEFAULT 1
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
*/
|
||||
|
||||
//dane za pomocą post przekazywane $_POST['end']
|
||||
//sprawdź czy dziś już zaczął pracę, sprawdź czy już dziś nie zakończył pracę, sprawdź czy zakończenie pracy jest później niż rozpoczęcie
|
||||
$sql = "SELECT * FROM obecnosc WHERE kto = :kto AND data = :data AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', date('Y-m-d'), PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$work = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if($work === false)
|
||||
{
|
||||
$_SESSION['innfoError'] = "Dziś nie rozpoczęto pracy";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
if($work['czasZaczecia'] == NULL)
|
||||
{
|
||||
$_SESSION['innfoError'] = "Dziś nie rozpoczęto pracy";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
if($work['czasKonca'] != NULL)
|
||||
{
|
||||
$_SESSION['innfoError'] = "Dziś już zakończono pracę";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
if($_POST['end'] < $work['czasZaczecia'])
|
||||
{
|
||||
$_SESSION['innfoError'] = "Zakończenie pracy nie może być wcześniej niż rozpoczęcie";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
//zakończ pracę
|
||||
$sql = "UPDATE obecnosc SET czasKonca = :czasKonca WHERE id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':czasKonca', $_POST['end'], PDO::PARAM_STR);
|
||||
$stmt->bindValue(':id', $work['id'], PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$_SESSION['innfoError'] = "Zakończono pracę";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
//print_r($_SESSION);
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Panel <?php echo $_SESSION["user_login"]; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="panel">
|
||||
<div id="panel">
|
||||
<header>
|
||||
<h1>Witaj <?php echo $_SESSION["user_imie"]; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<?php
|
||||
require_once 'nav.php';
|
||||
?>
|
||||
</nav>
|
||||
<main id="work">
|
||||
<form action="workStart_form.php" method="post">
|
||||
<table class="form">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="start">Rozpoczęcie pracy</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="time" name="start" id="start" value="<?php echo date('H:00'); ?>" max="<?php echo date('TH:i'); ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<label for="remote">Praca zdalna</label>
|
||||
<input type="checkbox" name="remote" id="remote" value="0">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" name="submit" value="Rozpocznij pracę">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<button class="cancel" type="button" onclick="window.location.href='panel.php'">Anuluj</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
require_once 'footer.php';
|
||||
?>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
|
||||
require_once 'db.php';
|
||||
require_once 'checkLogin.php';
|
||||
@session_start();
|
||||
|
||||
/*
|
||||
|
||||
CREATE TABLE `obecnosc` (
|
||||
`id` int(10) UNSIGNED NOT NULL,
|
||||
`kto` int(10) UNSIGNED NOT NULL,
|
||||
`data` date NOT NULL,
|
||||
`czasZaczecia` time DEFAULT NULL,
|
||||
`czasKonca` time DEFAULT NULL,
|
||||
`status` int(10) UNSIGNED NOT NULL,
|
||||
`zaakceptowane` tinyint(4) NOT NULL DEFAULT 0,
|
||||
`zdalne` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`aktywne` tinyint(1) NOT NULL DEFAULT 1
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
*/
|
||||
|
||||
//dane za pomocą post przekazywane $_POST['start']
|
||||
|
||||
//sprawdź czy już nie jest już obecność rozpoczęta
|
||||
$sql = "SELECT * FROM obecnosc WHERE kto = :kto AND data = :data AND aktywne = 1";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', date('Y-m-d'), PDO::PARAM_STR);
|
||||
$stmt->execute();
|
||||
$work = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
//<input type="checkbox" name="remote" id="remote" value="0">
|
||||
$remoteWork = 0;
|
||||
if(isset($_POST['remote']))
|
||||
{
|
||||
$remoteWork = 1;
|
||||
}
|
||||
if($work === false)
|
||||
{
|
||||
//rozpocznij pracę
|
||||
$sql = "INSERT INTO obecnosc (kto, data, czasZaczecia, status, zdalne, aktywne) VALUES (:kto, :data, :czasZaczecia, :status, :zdalne, 1)";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT);
|
||||
$stmt->bindValue(':data', date('Y-m-d'), PDO::PARAM_STR);
|
||||
$stmt->bindValue(':czasZaczecia', $_POST['start'], PDO::PARAM_STR);
|
||||
$stmt->bindValue(':status', 1, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':zdalne', $remoteWork, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
$_SESSION['innfoError'] = "Rozpoczęto pracę";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
$_SESSION['innfoError'] = "Dziś już rozpoczęto pracę";
|
||||
header("Location: panel.php");
|
||||
exit();
|
||||
|
||||
}
|
Loading…
Reference in New Issue