'Gastro', 'Uid' => 'sa', 'PWD' => 'karczma!@#26', 'CharacterSet' => 'UTF-8', ]; // Połączenie z bazą $conn = sqlsrv_connect($serverName, $connectionOptions); if (!$conn) { die(json_encode([ 'status' => 'error', 'message' => 'Błąd połączenia z bazą danych.', 'errors' => sqlsrv_errors() ])); } $tableParam = isset($_GET['table']) ? strtolower(trim($_GET['table'])) : ''; // Zapytanie SQL wyciągające aktywne pozycje (StatusRealizacji < 4) // Łączymy NGastroDTRachunekPozycja z NGastroDTRachunek (żeby mieć stolik) i z NGastroTowar (żeby mieć nazwę) $tsql = " SELECT r.StolikID, s.Nazwa AS NazwaStolika, r.Numer AS NumerRachunku, r.Opis, r.NumerReczny AS NumerRecznyRachunku, rp.ID AS PozycjaID, rp.StatusRealizacji, rp.Ilosc, rp.DataDodania, rp.Notatka, CASE WHEN rp.NazwaDanieOtwarte != '' THEN rp.NazwaDanieOtwarte ELSE ISNULL(NULLIF(t.NazwaNaZamowieniu, ''), t.NazwaTowaru) END AS NazwaTowaru, ISNULL(NULLIF(tz.NazwaNaZamowieniu, ''), tz.NazwaTowaru) AS NazwaZestawu, rp.GrupaZestawuID, rp.TowarID FROM dbo.NGastroDTRachunekPozycja rp INNER JOIN dbo.NGastroDTRachunek r ON r.ID = rp.DTRachunekID LEFT JOIN dbo.NGastroTowar t ON t.ID = rp.TowarID LEFT JOIN dbo.NGastroTowar tz ON tz.ID = rp.ZestawID LEFT JOIN dbo.NGastroStolik s ON s.ID = r.StolikID LEFT JOIN dbo.NGastroKonfiguracjaDrukowaniaZamowien kdz ON kdz.ID = ISNULL(rp.KonfiguracjaDrukowaniaZamowienID, t.KonfiguracjaDrukowaniaZamowienID) WHERE r.Status = 0 AND rp.StatusRealizacji > 0 AND rp.StatusRealizacji < 4 AND kdz.ID IS NOT NULL AND CAST(rp.DataDodania AS DATE) = CAST(GETDATE() AS DATE) AND rp.DataUsuniecia = '1900-01-01' ORDER BY rp.DataDodania ASC "; $stmt = sqlsrv_query($conn, $tsql); if ($stmt === false) { die(json_encode([ 'status' => 'error', 'message' => 'Błąd podczas wykonywania zapytania SQL.', 'errors' => sqlsrv_errors() ])); } $pozycje = []; while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { $stolikNazwa = strtolower($row['NazwaStolika'] ?? ''); $opis = strtolower($row['Opis'] ?? ''); $normalizedTableParam = str_replace('o', '0', $tableParam); $normalizedStolikNazwa = str_replace('o', '0', $stolikNazwa); $normalizedOpis = str_replace('o', '0', $opis); $isMatched = false; if (!$tableParam) { $isMatched = true; } else { $pattern = '/\b' . preg_quote($normalizedTableParam, '/') . '\b/i'; if ( $normalizedStolikNazwa === $normalizedTableParam || $normalizedOpis === $normalizedTableParam || preg_match($pattern, $normalizedStolikNazwa) || preg_match($pattern, $normalizedOpis) ) { $isMatched = true; } } if ($isMatched) { if ($row['DataDodania'] instanceof DateTime) { $row['DataDodania'] = $row['DataDodania']->format('Y-m-d H:i:s'); } $row['StolikID'] = $row['StolikID'] ? strtoupper($row['StolikID']) : null; $row['PozycjaID'] = strtoupper($row['PozycjaID']); $row['TowarID'] = strtoupper($row['TowarID']); $pozycje[] = $row; } } // Zwracamy czysty JSON echo json_encode([ 'status' => 'success', 'count' => count($pozycje), 'data' => $pozycje ]); sqlsrv_free_stmt($stmt); sqlsrv_close($conn); ?>