diff --git a/api.php b/api.php index 076f58d..1cfc3d7 100644 --- a/api.php +++ b/api.php @@ -287,70 +287,40 @@ switch ($action) { break; } - $query = normalizeAddress($_GET['osoite'] ?? ''); - $postinumero = trim($_GET['postinumero'] ?? ''); + // Parametrit: osoite (kadunnimi + numero), postinumero, kaupunki + $queryOsoite = normalizeAddress($_GET['osoite'] ?? ''); + $queryPostinumero = trim($_GET['postinumero'] ?? ''); + $queryKaupunki = strtolower(trim($_GET['kaupunki'] ?? '')); - if (empty($query) && empty($postinumero)) { + if (empty($queryOsoite) || empty($queryPostinumero) || empty($queryKaupunki)) { http_response_code(400); - echo json_encode(['error' => 'Anna osoite tai postinumero']); + echo json_encode(['error' => 'Anna osoite, postinumero ja kaupunki']); break; } $customers = loadCustomers(); - $matches = []; + $found = false; foreach ($customers as $c) { foreach ($c['liittymat'] ?? [] as $l) { $addr = normalizeAddress($l['asennusosoite'] ?? ''); $zip = trim($l['postinumero'] ?? ''); $city = strtolower(trim($l['kaupunki'] ?? '')); - $hit = false; - // Postinumero-haku - if (!empty($postinumero) && $zip === $postinumero) { - $hit = true; - } - - // Osoitehaku (sisältää haun) - if (!empty($query) && !empty($addr)) { - if (strpos($addr, $query) !== false || strpos($query, $addr) !== false) { - $hit = true; + // Kaikki kolme pitää mätsätä: osoite, postinumero, kaupunki + if ($zip === $queryPostinumero && $city === $queryKaupunki) { + // Osoite-match: tarkka sisältö-match + if (!empty($addr) && !empty($queryOsoite)) { + if (strpos($addr, $queryOsoite) !== false || strpos($queryOsoite, $addr) !== false) { + $found = true; + break 2; + } } - // Kadunnimi-match (ilman numeroa) - $queryStreet = trim(preg_replace('/\d+.*$/', '', $query)); - $addrStreet = trim(preg_replace('/\d+.*$/', '', $addr)); - if (!empty($queryStreet) && !empty($addrStreet) && strpos($addrStreet, $queryStreet) !== false) { - $hit = true; - } - } - - if ($hit) { - // Palauta VAIN osoitetieto ja nopeus - ei asiakastietoja - $matches[] = [ - 'osoite' => $l['asennusosoite'] ?? '', - 'postinumero' => $zip, - 'kaupunki' => $l['kaupunki'] ?? '', - 'nopeus' => $l['liittymanopeus'] ?? '', - ]; } } } - // Poista duplikaatit (sama osoite eri asiakkailla) - $unique = []; - $seen = []; - foreach ($matches as $m) { - $key = normalizeAddress($m['osoite'] . $m['postinumero']); - if (!isset($seen[$key])) { - $unique[] = $m; - $seen[$key] = true; - } - } - - echo json_encode([ - 'saatavilla' => count($unique) > 0, - 'kohteet' => $unique, - 'maara' => count($unique), - ]); + // Palauta VAIN true/false - ei osoitteita, nopeuksia tai muuta dataa + echo json_encode(['saatavilla' => $found]); break; // ---------- CONFIG (admin) ---------- diff --git a/index.html b/index.html index ee6a01c..b47a05d 100644 --- a/index.html +++ b/index.html @@ -286,17 +286,22 @@
key = API-avain (pakollinen)osoite = Haettava osoite (esim. "Kauppakatu 5")osoite = Katuosoite ja numero (esim. "Kauppakatu 5")postinumero = Postinumero (esim. "20100")kaupunki = Kaupunki (esim. "Turku")api.php?action=saatavuus&key=AVAIN&osoite=Kauppakatu+5api.php?action=saatavuus&key=AVAIN&osoite=Kauppakatu+5&postinumero=20100&kaupunki=Turku
{"saatavilla":true,"kohteet":[{"osoite":"...","postinumero":"...","kaupunki":"...","nopeus":"..."}],"maara":1}{"saatavilla":true} tai {"saatavilla":false}