'success', 'count' => 0, 'data' => []])); } if (!$conn) { die(json_encode([ 'status' => 'error', 'message' => 'Błąd połączenia z bazą danych.', 'errors' => sqlsrv_errors() ])); } $tableParam = $myTable; // 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, o.Imie AS OtwierajacyImie, o.Nazwisko AS OtwierajacyNazwisko, o.Nick AS OtwierajacyNick, 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.NGastroUzytkownik u ON u.ID = r.UzytkownikOtwierajacyID LEFT JOIN dbo.NSysOperator o ON o.ID = u.OperatorID 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), 'tableName' => strtoupper($myTable), 'data' => $pozycje ], JSON_UNESCAPED_UNICODE); sqlsrv_free_stmt($stmt); sqlsrv_close($conn); ?>