Porządki
This commit is contained in:
@@ -1,20 +1,16 @@
|
||||
<?php
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
|
||||
$serverName = '192.168.20.20';
|
||||
$connectionOptions = [
|
||||
'Database' => 'Gastro',
|
||||
'Uid' => 'sa',
|
||||
'PWD' => 'karczma!@#26',
|
||||
'CharacterSet' => 'UTF-8',
|
||||
];
|
||||
$conn = sqlsrv_connect($serverName, $connectionOptions);
|
||||
if (!$conn) {
|
||||
die(json_encode(['status' => 'error', 'message' => 'Błąd połączenia.']));
|
||||
}
|
||||
require_once __DIR__ . '/../config/database.php';
|
||||
require_once __DIR__ . '/get_table_name.php';
|
||||
|
||||
$tableParam = isset($_GET['table']) ? strtolower(trim($_GET['table'])) : '';
|
||||
// Usunąłem die() na pustym tableParam, aby ułatwić Ci testowanie w przeglądarce!
|
||||
$hashParam = isset($_GET['h']) ? trim($_GET['h']) : '';
|
||||
$tableParam = getTableNameByHash($conn, $hashParam);
|
||||
$tableParam = strtolower($tableParam);
|
||||
|
||||
if (empty($tableParam)) {
|
||||
die(json_encode(['status' => 'success', 'data' => []]));
|
||||
}
|
||||
|
||||
// 1. & 2. & 3. Pobranie dzisiejszych rachunków ze statusem 0
|
||||
$tsqlBills = "
|
||||
@@ -175,5 +171,6 @@ foreach ($bills as $bill) {
|
||||
|
||||
echo json_encode([
|
||||
'status' => 'success',
|
||||
'tableName' => strtoupper($tableParam),
|
||||
'data' => $finalData
|
||||
], JSON_UNESCAPED_UNICODE);
|
||||
1
api/cache/tables_cache.json
vendored
Normal file
1
api/cache/tables_cache.json
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"00E3F7CD-2DD6-4719-ABCE-FE45AADB6E11":"STOLIK 1","A7B40445-11F2-4078-AAE2-4FE70886C745":"STOLIK 2","7F434E77-5F23-49CD-8FD5-CA6EED6F9FD3":"STOLIK 3","28AF701C-4664-49BE-A5AB-F4AA60A47DF2":"STOLIK 4","59491B8A-EB04-4981-B825-CD644639247B":"STOLIK 5","C6B285A4-6DFC-4254-8195-20339C56D9DF":"STOLIK 6","585BA56A-5A33-4A9A-B2C0-168088500010":"STOLIK 7","C2AE32AD-C283-43D6-BB84-D5AE1E81CA6E":"STOLIK 8","E62159AC-E76A-400E-B883-144FB3F0EDAC":"STOLIK 9","86949E9C-B276-4A0C-8C04-CC1689D03D33":"STOLIK 11","72ADEDAC-BE8C-4AB6-9EA1-563C31DBF3C4":"STOLIK 11A","12EF66B0-D639-42FD-A4F1-9420AB65FB18":"STOLIK 10","FB62083F-7F98-42AA-B61E-CEA28F31717F":"STOLIK 13","13E84A2D-C4A3-4122-B166-9C42C011FA80":"STOLIK 14","480EA2AF-6C0C-40AE-9422-84CFC026D0B7":"STOLIK 15","A1B032B9-D849-4E16-8B27-46E3A45D0F86":"STOLIK 16","8E48ED78-3202-461F-A140-74FF63A50E9D":"STOLIK 17","B6D6D5A8-252C-43BA-8B87-6F9CAE39A747":"STOLIK 23","D799A844-B4E7-4025-94E2-8147E93DC525":"STOLIK 22","EF848BE1-DB17-42D7-A9C6-27B753F161B1":"STOLIK 21","FA6061CC-FA66-4474-9EB6-F26483596826":"STOLIK 20","92367DDA-B500-4C40-885A-0574163DDBBC":"STOLIK 19","0C64E565-9823-439C-B6D3-6FD38251F289":"STOLIK 18","A825B28F-3E79-4A3A-887C-A72F6BAFB299":"STOLIK T_24","4CD3FB15-7A6E-4FE7-8C48-07AB57CE5FBC":"STOLIK T_25","55283F68-78A0-4D00-9B47-FD305370932F":"STOLIK T_30","42A76757-3E9A-450D-A9C1-67A35A83F04A":"STOLIK T_29","D80DE0F0-5591-4ECE-8AD4-01CD77508D10":"O-65","60356B27-5569-4504-AFE2-E349155957EE":"0-64","1B78C97A-C555-44E2-A60E-D8EC251034C7":"O-63","43731846-7C88-4E86-9DBC-C4BB5EDD313F":"O-61","2304DE24-398C-4854-A352-78F6A6B8CFAB":"0-62","FB6E8FAD-3E35-4CF2-B604-59A140A09D84":"O-31","D06E92B4-7E45-46BA-92FC-DF4D6C7F0665":"O-32","54E81D67-D63C-49E5-B64F-8952D1CEA50F":"O-33","A44BB845-9950-47E4-90C8-CAFF1FF44F90":"O-34","09F2601D-C08C-498D-8376-27BDA690750A":"O-35","935BA7EE-1883-4B30-B581-48B72210BBDB":"O-36","F8052EE2-41BE-4286-B4F6-1361C1713270":"0-37","3EE3DF0A-70B2-47CC-848A-E1E7D23C64BB":"0-40","D57FCE56-BD9A-4BA9-8B37-A7E9B7DFDCE1":"0-37A","BB439A64-E7B9-4460-A9A1-BA06908FABC7":"O-38A","0CA2F62E-5EAB-4214-8B71-52ED86DCAF88":"O-38","EABA9383-59B5-4FCC-B45C-2CAF5DFEDC5C":"O-39","23ED63BF-D70E-4FA7-990E-BF91DD1E80C6":"O-40A","C626612E-AC85-41A4-9BEF-44231D5FCAA6":"O-41A","BC97200A-3334-4D49-A51A-0F20CF7B6E2D":"0-44","B54B052F-A284-4025-9F50-8345416AFE32":"0-45","AEEBA14C-0E0F-4E59-9EF2-7D95953DECF8":"O-46","5D1BF524-F8B3-4D34-BEF5-9BA1A25E0475":"O-47","266E2DE1-96E5-430C-80BE-1564B7E2A7C0":"O-48","3F1E9A2F-EF23-44DE-8D7D-0EE2398CAA45":"O-38","B764B09A-73FB-40C1-8788-B2940EC22756":"O-39","AD105452-3A99-4ED5-8E64-6AB2EABC7F37":"O-41","5F09DAC8-219C-4912-8190-DE8D90789DA4":"O-42","F63FA7C0-FE0A-454B-BF81-A63BA6EDA395":"0-72","1CCEC9F0-A636-42DD-8D78-70F3E8F06F31":"O-39A","8BE52ACA-4505-472A-9EEE-B1CD8F56F136":"O-42A","59B296A3-54FB-47E8-A6C5-ABFC07D921DC":"O-48A","DCE351C7-4C51-4892-A736-C43A6258D35A":"O-48B","E25860EF-285C-46E8-938C-67CEC2C1174A":"O-48","A116FD34-6A57-4819-A809-FA02AD834B4E":"O-70","F36A0857-964E-4BC4-B130-653E76874476":"O-71","BE4C3E15-016B-4C30-9023-0CF1527AE732":"C-55","D17FE879-BD11-4EBF-908C-E69E9BBE6FBB":"C-56","B0606B71-0310-46C4-9993-2408C1BBF26B":"C-59","7BC90104-2A30-4BE9-B6A8-82D8EB716E7A":"C-60","F59C03AB-60FE-4560-BB23-5070F4D64394":"C-57","02D53EE2-B1CF-4114-B56C-1D41FFDBC6E9":"C-58","57AF1C72-5CE5-4573-A026-D8D99D30C50D":"C-49A","5CB1B9E5-77E5-4A85-A1CC-6D950F696C60":"C-49","DB4CF965-C41D-4621-9039-B9F2BBD3AB3B":"C-50","2DD0A8F1-637C-4DB7-87D6-4B8D9276730C":"C-51","0116D15C-3378-48A6-ADB4-5AE4B090929D":"C-52","3C667D41-0F3A-446E-A96B-8EFD33596D89":"C-52","16D24F95-D9BA-4419-AFFD-F149D0B7CD50":"C-53"}
|
||||
40
api/get_table_name.php
Normal file
40
api/get_table_name.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
function getTableNameByHash($conn, $hash) {
|
||||
if (empty($hash)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$cacheFile = __DIR__ . '/cache/tables_cache.json';
|
||||
$cacheLifetime = 24 * 3600; // 24 godziny
|
||||
|
||||
$cacheData = [];
|
||||
$cacheValid = false;
|
||||
|
||||
if (file_exists($cacheFile)) {
|
||||
if (time() - filemtime($cacheFile) < $cacheLifetime) {
|
||||
$json = file_get_contents($cacheFile);
|
||||
$cacheData = json_decode($json, true);
|
||||
if (is_array($cacheData)) {
|
||||
$cacheValid = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$cacheValid) {
|
||||
$cacheData = [];
|
||||
$tsql = "SELECT ID, Nazwa FROM dbo.NGastroStolik";
|
||||
$stmt = sqlsrv_query($conn, $tsql);
|
||||
|
||||
if ($stmt !== false) {
|
||||
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
||||
$id = strtoupper($row['ID']);
|
||||
$nazwa = trim($row['Nazwa']);
|
||||
$cacheData[$id] = $nazwa;
|
||||
}
|
||||
file_put_contents($cacheFile, json_encode($cacheData, JSON_UNESCAPED_UNICODE));
|
||||
}
|
||||
}
|
||||
|
||||
$hashUpper = strtoupper($hash);
|
||||
return $cacheData[$hashUpper] ?? '';
|
||||
}
|
||||
@@ -2,17 +2,18 @@
|
||||
// api_kds.php
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
|
||||
// Konfiguracja bazy danych z ai.txt
|
||||
$serverName = '192.168.20.20';
|
||||
$connectionOptions = [
|
||||
'Database' => 'Gastro',
|
||||
'Uid' => 'sa',
|
||||
'PWD' => 'karczma!@#26',
|
||||
'CharacterSet' => 'UTF-8',
|
||||
];
|
||||
require_once __DIR__ . '/../config/database.php';
|
||||
require_once __DIR__ . '/get_table_name.php';
|
||||
|
||||
// Połączenie z bazą
|
||||
$conn = sqlsrv_connect($serverName, $connectionOptions);
|
||||
$hashParam = isset($_GET['h']) ? trim($_GET['h']) : '';
|
||||
$myTable = getTableNameByHash($conn, $hashParam);
|
||||
$myTable = strtolower($myTable);
|
||||
|
||||
$isKitchen = (isset($_GET['kds_secret']) && $_GET['kds_secret'] === 'karczma_kuchnia');
|
||||
|
||||
if (empty($myTable) && !$isKitchen) {
|
||||
die(json_encode(['status' => 'success', 'count' => 0, 'data' => []]));
|
||||
}
|
||||
|
||||
if (!$conn) {
|
||||
die(json_encode([
|
||||
@@ -22,7 +23,7 @@ if (!$conn) {
|
||||
]));
|
||||
}
|
||||
|
||||
$tableParam = isset($_GET['table']) ? strtolower(trim($_GET['table'])) : '';
|
||||
$tableParam = $myTable;
|
||||
|
||||
// Zapytanie SQL wyciągające aktywne pozycje (StatusRealizacji < 4)
|
||||
// Łączymy NGastroDTRachunekPozycja z NGastroDTRachunek (żeby mieć stolik) i z NGastroTowar (żeby mieć nazwę)
|
||||
@@ -110,8 +111,9 @@ while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
||||
echo json_encode([
|
||||
'status' => 'success',
|
||||
'count' => count($pozycje),
|
||||
'tableName' => strtoupper($myTable),
|
||||
'data' => $pozycje
|
||||
]);
|
||||
], JSON_UNESCAPED_UNICODE);
|
||||
|
||||
sqlsrv_free_stmt($stmt);
|
||||
sqlsrv_close($conn);
|
||||
20
config/database.php
Normal file
20
config/database.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
// config/database.php
|
||||
|
||||
$serverName = '192.168.20.20';
|
||||
$connectionOptions = [
|
||||
'Database' => 'Gastro',
|
||||
'Uid' => 'sa',
|
||||
'PWD' => 'karczma!@#26',
|
||||
'CharacterSet' => 'UTF-8',
|
||||
];
|
||||
|
||||
$conn = sqlsrv_connect($serverName, $connectionOptions);
|
||||
|
||||
if (!$conn) {
|
||||
die(json_encode([
|
||||
'status' => 'error',
|
||||
'message' => 'Błąd połączenia z bazą danych.',
|
||||
'errors' => sqlsrv_errors()
|
||||
], JSON_UNESCAPED_UNICODE));
|
||||
}
|
||||
@@ -7,20 +7,22 @@ window.kitchenAnimations = [
|
||||
];
|
||||
window.selectedAnimationHtml = null;
|
||||
|
||||
const params = new URLSearchParams(location.search);
|
||||
let tableParam = (params.get("table") || "").trim();
|
||||
const params = new URLSearchParams(location.search);
|
||||
let hashParam = (params.get("h") || "").trim();
|
||||
|
||||
// Jeśli brak numeru stolika w URL – zapytaj użytkownika
|
||||
if (!tableParam) {
|
||||
const input = prompt("Podaj numer stolika:");
|
||||
// Jeśli brak hasha w URL – zapytaj użytkownika (np. do testów)
|
||||
if (!hashParam) {
|
||||
const input = prompt("Podaj bezpieczny hash stolika (wymagane):");
|
||||
const trimmed = (input || "").trim();
|
||||
if (trimmed) {
|
||||
const newUrl = new URL(location.href);
|
||||
newUrl.searchParams.set("table", trimmed);
|
||||
newUrl.searchParams.set("h", trimmed);
|
||||
location.replace(newUrl.toString());
|
||||
}
|
||||
}
|
||||
|
||||
let tableParam = ""; // Puste, zostanie uzupełnione przez backend
|
||||
|
||||
// UI Elements
|
||||
const loadingScreen = document.getElementById("loadingScreen");
|
||||
const loaderMsg = document.getElementById("loaderMsg");
|
||||
@@ -338,15 +340,20 @@ const params = new URLSearchParams(location.search);
|
||||
// API Fetch Logic
|
||||
async function fetchOrders() {
|
||||
try {
|
||||
if (!tableParam) {
|
||||
if (!hashParam) {
|
||||
updateUI([]);
|
||||
return;
|
||||
}
|
||||
|
||||
const response = await fetch(`../api_kds.php?table=${encodeURIComponent(tableParam)}`);
|
||||
const response = await fetch(`../api/kds.php?h=${encodeURIComponent(hashParam)}`);
|
||||
const result = await response.json();
|
||||
|
||||
if (result.status === 'success') {
|
||||
if (result.tableName && result.tableName !== '') {
|
||||
tableLabel.textContent = `Stolik ${result.tableName}`;
|
||||
tableParam = result.tableName; // Aktualizacja do właściwej nazwy na poczet innych zapytań
|
||||
}
|
||||
|
||||
// API teraz samo filtruje i zwraca tylko to co nas interesuje (za pomocą mocnego wyrażenia regularnego)
|
||||
const matches = result.data;
|
||||
|
||||
@@ -434,7 +441,7 @@ const params = new URLSearchParams(location.search);
|
||||
goToStep("stepBillList");
|
||||
|
||||
try {
|
||||
const res = await fetch(`../api_bills.php?table=${encodeURIComponent(tableParam)}`);
|
||||
const res = await fetch(`../api/bills.php?h=${encodeURIComponent(hashParam)}`);
|
||||
const result = await res.json();
|
||||
|
||||
if (result.status === 'success' && result.data.length > 0) {
|
||||
|
||||
50
public/staff/generator.php
Normal file
50
public/staff/generator.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../../config/database.php';
|
||||
|
||||
$tsql = "SELECT ID, Nazwa FROM dbo.NGastroStolik ORDER BY Nazwa";
|
||||
$stmt = sqlsrv_query($conn, $tsql);
|
||||
|
||||
$host = $_SERVER['HTTP_HOST'] ?? 'localhost';
|
||||
$baseUrl = "http://$host/karczma-stoliki/public/stolik2_api.html?h=";
|
||||
|
||||
echo "<!DOCTYPE html>
|
||||
<html lang='pl'>
|
||||
<head>
|
||||
<meta charset='UTF-8'>
|
||||
<title>Generator Linków QR - Stoliki</title>
|
||||
<style>
|
||||
body { font-family: sans-serif; padding: 20px; }
|
||||
table { border-collapse: collapse; width: 100%; max-width: 800px; }
|
||||
th, td { border: 1px solid #ccc; padding: 10px; text-align: left; }
|
||||
th { background: #eee; }
|
||||
a { color: #0066cc; text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Linki do aplikacji (Kody QR)</h1>
|
||||
<p>Skopiuj poniższe linki lub wygeneruj z nich kody QR do umieszczenia na stolikach.</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Nazwa stolika</th>
|
||||
<th>Hash (ID z bazy)</th>
|
||||
<th>Bezpieczny Link (KOD QR)</th>
|
||||
</tr>";
|
||||
|
||||
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
||||
$id = strtoupper($row['ID']);
|
||||
$nazwa = htmlspecialchars($row['Nazwa']);
|
||||
$link = $baseUrl . $id;
|
||||
echo "<tr>
|
||||
<td><strong>$nazwa</strong></td>
|
||||
<td style='font-size: 0.8em; color: #666;'>$id</td>
|
||||
<td><a href='$link' target='_blank'>$link</a></td>
|
||||
</tr>";
|
||||
}
|
||||
|
||||
echo " </table>
|
||||
</body>
|
||||
</html>";
|
||||
|
||||
sqlsrv_free_stmt($stmt);
|
||||
sqlsrv_close($conn);
|
||||
@@ -249,7 +249,7 @@
|
||||
|
||||
async function fetchOrders() {
|
||||
try {
|
||||
const response = await fetch('api_kds.php');
|
||||
const response = await fetch('../../api/kds.php?kds_secret=karczma_kuchnia');
|
||||
const result = await response.json();
|
||||
|
||||
if (result.status === 'success') {
|
||||
Reference in New Issue
Block a user