From 365c4c530ab0f0f9045f2844da7cce53c44d97b2 Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Fri, 12 Jan 2024 16:03:04 +0100 Subject: [PATCH 01/26] add huisnummerToevoeging as search option --- src/Http/SearchQuery.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Http/SearchQuery.php b/src/Http/SearchQuery.php index a8ebbae..020aa8b 100644 --- a/src/Http/SearchQuery.php +++ b/src/Http/SearchQuery.php @@ -30,6 +30,9 @@ class SearchQuery implements QueryInterface /** @var string */ private $huisnummer; + /** @var string */ + private $huisnummerToevoeging; + /** @var string */ private $type; @@ -82,6 +85,11 @@ public function setHuisnummer(string $huisnummer) $this->huisnummer = $huisnummer; } + public function setHuisnummerToevoeging(string $huisnummerToevoeging) + { + $this->huisnummerToevoeging = $huisnummerToevoeging; + } + public function setType(string $type) { $this->type = $type; @@ -113,6 +121,7 @@ public function toArray(): array 'plaats' => $this->plaats, 'postcode' => $this->postcode, 'huisnummer' => $this->huisnummer, + 'huisnummerToevoeging' => $this->huisnummerToevoeging, 'type' => $this->type, 'inclusiefinactieveregistraties' => $this->inclusiefinactieveregistraties, 'pagina' => $this->pagina, From 8b70778d32c9fccbce9c0836a74d8ebdeb873145 Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Fri, 12 Jan 2024 16:24:22 +0100 Subject: [PATCH 02/26] add missing result parameters --- src/Model/Search/ResultaatItem.php | 29 ++++++++++++++++++----- src/Model/Search/ResultaatItemFactory.php | 4 +++- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/Model/Search/ResultaatItem.php b/src/Model/Search/ResultaatItem.php index 6d9b352..535f0b4 100644 --- a/src/Model/Search/ResultaatItem.php +++ b/src/Model/Search/ResultaatItem.php @@ -10,10 +10,12 @@ class ResultaatItem private $rsin; private $vestigingsnummer; private $handelsnaam; + private $adresType; private $straatnaam; - private $plaats; private $postcode; + private $plaats; private $huisnummer; + private $huisnummerToevoeging; private $type; private $actief; private $vervallenNaam; @@ -25,10 +27,12 @@ public function __construct( ?string $rsin, ?string $vestigingsnummer, ?string $handelsnaam, + ?string $adresType, ?string $straatnaam, - ?string $plaats, ?string $postcode, + ?string $plaats, ?int $huisnummer, + ?string $huisnummerToevoeging, ?string $type, ?string $actief, ?string $vervallenNaam, @@ -38,10 +42,12 @@ public function __construct( $this->rsin = $rsin; $this->vestigingsnummer = $vestigingsnummer; $this->handelsnaam = $handelsnaam; + $this->adresType = $adresType; $this->straatnaam = $straatnaam; $this->plaats = $plaats; $this->postcode = $postcode; $this->huisnummer = $huisnummer; + $this->huisnummerToevoeging = $huisnummerToevoeging; $this->type = $type; $this->actief = $actief; $this->vervallenNaam = $vervallenNaam; @@ -68,6 +74,11 @@ public function getHandelsnaam(): ?string return $this->handelsnaam; } + public function getAdresType(): ?string + { + return $this->adresType; + } + public function getStraatnaam(): ?string { return $this->straatnaam; @@ -82,6 +93,7 @@ public function getVervallenNaam(): ?string { return $this->vervallenNaam; } + public function getActief(): ?string { return $this->actief; @@ -92,18 +104,23 @@ public function getLinks(): ?array return $this->links; } - public function getPlaats(): ?string + public function getPostcode(): ?string { - return $this->plaats; + return $this->postcode; } - public function getPostcode(): ?string + public function getPlaats(): ?string { - return $this->postcode; + return $this->plaats; } public function getHuisnummer(): ?int { return $this->huisnummer; } + + public function getHuisnummerToevoeging(): ?string + { + return $this->huisnummerToevoeging; + } } diff --git a/src/Model/Search/ResultaatItemFactory.php b/src/Model/Search/ResultaatItemFactory.php index 190d839..31af000 100644 --- a/src/Model/Search/ResultaatItemFactory.php +++ b/src/Model/Search/ResultaatItemFactory.php @@ -16,10 +16,12 @@ public static function fromResponse(array $response): ResultaatItem self::pluckString('rsin', $response), self::pluckString('vestigingsnummer', $response), self::pluckString('handelsnaam', $response), + self::pluckString('adresType', $response), self::pluckString('straatnaam', $response), - self::pluckString('plaats', $response), self::pluckString('postcode', $response), + self::pluckString('plaats', $response), self::pluckInteger('huisnummer', $response), + self::pluckString('huisnummerToevoeging', $response), self::pluckString('type', $response), self::pluckString('actief', $response), self::pluckString('vervallenNaam', $response), From 1bfee3be4cdc29f50551587530aa5520f400d288 Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Fri, 12 Jan 2024 16:26:01 +0100 Subject: [PATCH 03/26] set order same as kvk api docs --- src/Http/SearchQuery.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Http/SearchQuery.php b/src/Http/SearchQuery.php index 020aa8b..3afb091 100644 --- a/src/Http/SearchQuery.php +++ b/src/Http/SearchQuery.php @@ -22,29 +22,29 @@ class SearchQuery implements QueryInterface private $straatnaam; /** @var string */ - private $plaats; + private $huisnummer; /** @var string */ - private $postcode; + private $huisnummerToevoeging; /** @var string */ - private $huisnummer; + private $postcode; /** @var string */ - private $huisnummerToevoeging; + private $plaats; /** @var string */ private $type; + /** @var bool */ + private $inclusiefinactieveregistraties; + /** @var int */ private $pagina; /** @var int */ private $aantal; - /** @var bool */ - private $inclusiefinactieveregistraties; - public function setKvkNumber(string $kvkNumber) { $this->kvkNumber = $kvkNumber; From 23af1f0de918530076669277ec0b455ac4c8153a Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Fri, 12 Jan 2024 16:39:07 +0100 Subject: [PATCH 04/26] huisnummer is zero because it's empty when only searching a kvk --- src/Model/Search/ResultaatItem.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/Model/Search/ResultaatItem.php b/src/Model/Search/ResultaatItem.php index 535f0b4..61fda2c 100644 --- a/src/Model/Search/ResultaatItem.php +++ b/src/Model/Search/ResultaatItem.php @@ -7,23 +7,36 @@ class ResultaatItem { private $kvkNummer; + private $rsin; + private $vestigingsnummer; + private $handelsnaam; + private $adresType; + private $straatnaam; + private $postcode; + private $plaats; + private $huisnummer; + private $huisnummerToevoeging; + private $type; + private $actief; + private $vervallenNaam; + /** @var Link[] */ private $links; public function __construct( - string $kvkNumber, + string $kvkNumber, ?string $rsin, ?string $vestigingsnummer, ?string $handelsnaam, @@ -31,12 +44,12 @@ public function __construct( ?string $straatnaam, ?string $postcode, ?string $plaats, - ?int $huisnummer, + ?string $huisnummer, ?string $huisnummerToevoeging, ?string $type, ?string $actief, ?string $vervallenNaam, - ?array $links = null + ?array $links = null ) { $this->kvkNummer = $kvkNumber; $this->rsin = $rsin; From 4b3267308e9ea51e03c79d2b085eb93aec5b8197 Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Fri, 12 Jan 2024 16:41:00 +0100 Subject: [PATCH 05/26] Change return type of getHuisnummer() to string. Update ResultaatItemFactory to use pluckString for huisnummer --- src/Model/Search/ResultaatItem.php | 2 +- src/Model/Search/ResultaatItemFactory.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Model/Search/ResultaatItem.php b/src/Model/Search/ResultaatItem.php index 61fda2c..7c47830 100644 --- a/src/Model/Search/ResultaatItem.php +++ b/src/Model/Search/ResultaatItem.php @@ -127,7 +127,7 @@ public function getPlaats(): ?string return $this->plaats; } - public function getHuisnummer(): ?int + public function getHuisnummer(): ?string { return $this->huisnummer; } diff --git a/src/Model/Search/ResultaatItemFactory.php b/src/Model/Search/ResultaatItemFactory.php index 31af000..ee41999 100644 --- a/src/Model/Search/ResultaatItemFactory.php +++ b/src/Model/Search/ResultaatItemFactory.php @@ -20,7 +20,7 @@ public static function fromResponse(array $response): ResultaatItem self::pluckString('straatnaam', $response), self::pluckString('postcode', $response), self::pluckString('plaats', $response), - self::pluckInteger('huisnummer', $response), + self::pluckString('huisnummer', $response), self::pluckString('huisnummerToevoeging', $response), self::pluckString('type', $response), self::pluckString('actief', $response), From 6ea328f9d19fb0872e7ad5078bea7042baae8161 Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Fri, 12 Jan 2024 16:46:44 +0100 Subject: [PATCH 06/26] Change huisnummer data type from int to string in Adres class --- src/Model/Adres.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Model/Adres.php b/src/Model/Adres.php index bf8c825..c5337cf 100644 --- a/src/Model/Adres.php +++ b/src/Model/Adres.php @@ -29,7 +29,7 @@ public function __construct( ?string $indAfgeschermd, ?string $volledigAdres, ?string $straatnaam, - ?int $huisnummer, + ?string $huisnummer, ?string $huisnummerToevoeging, ?string $huisletter, ?string $aanduidingBijHuisnummer, @@ -72,7 +72,7 @@ public function getStraatnaam(): ?string return $this->straatnaam; } - public function getHuisnummer(): ?int + public function getHuisnummer(): ?string { return $this->huisnummer; } From 2761527fe6ed6cce72ee6840e4b5d0db91fb77ab Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Fri, 12 Jan 2024 16:51:17 +0100 Subject: [PATCH 07/26] Refactor pluck methods in AbstractFactory to cast return values --- src/Model/AbstractFactory.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Model/AbstractFactory.php b/src/Model/AbstractFactory.php index 14f732b..ef03a78 100644 --- a/src/Model/AbstractFactory.php +++ b/src/Model/AbstractFactory.php @@ -10,27 +10,27 @@ class AbstractFactory { protected static function pluckString($needle, $haystack): ?string { - return self::extract($needle, $haystack); + return (string) self::extract($needle, $haystack); } protected static function pluckFloat($needle, $haystack): ?float { - return (float)self::extract($needle, $haystack); + return (float) self::extract($needle, $haystack); } protected static function pluckInteger($needle, $haystack): ?int { - return (int)self::extract($needle, $haystack); + return (int) self::extract($needle, $haystack); } protected static function pluckArray($needle, $haystack): ?array { - return (array)self::extract($needle, $haystack); + return (array) self::extract($needle, $haystack); } protected static function pluckDate($needle, $haystack, $format = 'Ymd'): ?DateTime { - $date = (string)self::extract($needle, $haystack); + $date = (string) self::extract($needle, $haystack); if (! $date) { return null; } From 51a453346d0fa51a283562a202b841791ce301d5 Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Fri, 12 Jan 2024 17:09:25 +0100 Subject: [PATCH 08/26] revert to int for profile data --- src/Model/Adres.php | 4 ++-- src/Model/AdresFactory.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Model/Adres.php b/src/Model/Adres.php index c5337cf..8faefce 100644 --- a/src/Model/Adres.php +++ b/src/Model/Adres.php @@ -31,7 +31,7 @@ public function __construct( ?string $straatnaam, ?string $huisnummer, ?string $huisnummerToevoeging, - ?string $huisletter, + ?int $huisletter, ?string $aanduidingBijHuisnummer, ?string $toevoegingAdres, ?string $postcode, @@ -82,7 +82,7 @@ public function getHuisnummerToevoeging(): ?string return $this->huisnummerToevoeging; } - public function getHuisletter(): ?string + public function getHuisletter(): ?int { return $this->huisletter; } diff --git a/src/Model/AdresFactory.php b/src/Model/AdresFactory.php index 9a8a477..0436d2c 100644 --- a/src/Model/AdresFactory.php +++ b/src/Model/AdresFactory.php @@ -15,7 +15,7 @@ public static function fromResponse($response): Adres self::pluckString('straatnaam', $response), self::pluckInteger('huisnummer', $response), self::pluckString('huisnummerToevoeging', $response), - self::pluckString('huisletter', $response), + self::pluckInteger('huisletter', $response), self::pluckString('aanduidingBijHuisnummer', $response), self::pluckString('toevoegingAdres', $response), self::pluckString('postcode', $response), From f19131deff141401dc73a473a5b5d4e31d1d192b Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Fri, 12 Jan 2024 18:21:59 +0100 Subject: [PATCH 09/26] Change type of huisnummer and huisletter properties --- src/Model/Adres.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Model/Adres.php b/src/Model/Adres.php index 8faefce..bf8c825 100644 --- a/src/Model/Adres.php +++ b/src/Model/Adres.php @@ -29,9 +29,9 @@ public function __construct( ?string $indAfgeschermd, ?string $volledigAdres, ?string $straatnaam, - ?string $huisnummer, + ?int $huisnummer, ?string $huisnummerToevoeging, - ?int $huisletter, + ?string $huisletter, ?string $aanduidingBijHuisnummer, ?string $toevoegingAdres, ?string $postcode, @@ -72,7 +72,7 @@ public function getStraatnaam(): ?string return $this->straatnaam; } - public function getHuisnummer(): ?string + public function getHuisnummer(): ?int { return $this->huisnummer; } @@ -82,7 +82,7 @@ public function getHuisnummerToevoeging(): ?string return $this->huisnummerToevoeging; } - public function getHuisletter(): ?int + public function getHuisletter(): ?string { return $this->huisletter; } From c8116f860860912ace70fa541f72f63c7546b90b Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Fri, 12 Jan 2024 19:30:54 +0100 Subject: [PATCH 10/26] Change 'huisletter' to be plucked as a string instead of an integer --- src/Model/AdresFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/AdresFactory.php b/src/Model/AdresFactory.php index 0436d2c..9a8a477 100644 --- a/src/Model/AdresFactory.php +++ b/src/Model/AdresFactory.php @@ -15,7 +15,7 @@ public static function fromResponse($response): Adres self::pluckString('straatnaam', $response), self::pluckInteger('huisnummer', $response), self::pluckString('huisnummerToevoeging', $response), - self::pluckInteger('huisletter', $response), + self::pluckString('huisletter', $response), self::pluckString('aanduidingBijHuisnummer', $response), self::pluckString('toevoegingAdres', $response), self::pluckString('postcode', $response), From 76e9bc1bf200868880169c16449a20c71e9b8e46 Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Fri, 12 Jan 2024 19:37:35 +0100 Subject: [PATCH 11/26] Refactor variable names and method names to use consistent naming convention --- src/Model/Search/ResultaatItem.php | 12 ++++++++++-- tests/Integration/ClientTest.php | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Model/Search/ResultaatItem.php b/src/Model/Search/ResultaatItem.php index 7c47830..11e1352 100644 --- a/src/Model/Search/ResultaatItem.php +++ b/src/Model/Search/ResultaatItem.php @@ -36,7 +36,7 @@ class ResultaatItem private $links; public function __construct( - string $kvkNumber, + string $kvkNumber, ?string $rsin, ?string $vestigingsnummer, ?string $handelsnaam, @@ -49,7 +49,7 @@ public function __construct( ?string $type, ?string $actief, ?string $vervallenNaam, - ?array $links = null + ?array $links = null ) { $this->kvkNummer = $kvkNumber; $this->rsin = $rsin; @@ -67,11 +67,19 @@ public function __construct( $this->links = $links; } + /** + * @deprecated use getKvkNummer() + */ public function getKvkNumber(): string { return $this->kvkNummer; } + public function getKvkNummer(): string + { + return $this->kvkNummer; + } + public function getRsin(): ?string { return $this->rsin; diff --git a/tests/Integration/ClientTest.php b/tests/Integration/ClientTest.php index f357e3c..ad8bee9 100644 --- a/tests/Integration/ClientTest.php +++ b/tests/Integration/ClientTest.php @@ -40,6 +40,7 @@ public function search(string $kvkNumber) foreach ($resultaten->getResultaten() as $searchResult) { $this->assertInstanceOf(ResultaatItem::class, $searchResult); $this->assertEquals($kvkNumber, $searchResult->getKvkNumber()); + $this->assertEquals($kvkNumber, $searchResult->getKvkNummer()); } } From 805cf79e0f6983e8de1f1b802221694b64dd1585 Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Fri, 12 Jan 2024 20:52:39 +0100 Subject: [PATCH 12/26] need to pass to MaterieleRegistratieFactory::fromResponse --- src/Model/Company/VestigingFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/Company/VestigingFactory.php b/src/Model/Company/VestigingFactory.php index becaac7..e67923d 100644 --- a/src/Model/Company/VestigingFactory.php +++ b/src/Model/Company/VestigingFactory.php @@ -21,7 +21,7 @@ public static function fromResponse($response): ?Vestiging self::pluckString('rsin', $response), self::pluckString('indNonMailing', $response), self::pluckDate('formeleRegistratiedatum', $response), - MaterieleRegistratieFactory::fromResponse($response), + MaterieleRegistratieFactory::fromResponse($response['materieleRegistratie']), self::pluckString('eersteHandelsnaam', $response), self::pluckString('indHoofdvestiging', $response), self::pluckString('indCommercieleVestiging', $response), From 8da815211f099412c1adfaf5ab76422835ffd30b Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Fri, 12 Jan 2024 21:28:24 +0100 Subject: [PATCH 13/26] add toArray() methods --- src/Model/Adres.php | 71 ++++++++++++++++----- src/Model/Company/BasisProfiel.php | 1 + src/Model/Company/Eigenaar.php | 30 ++++++++- src/Model/Company/EmbeddedContainer.php | 14 ++++ src/Model/Company/Handelsnaam.php | 8 +++ src/Model/Company/Vestiging.php | 85 +++++++++++++++++++++---- src/Model/Company/VestigingBasis.php | 32 +++++++++- src/Model/Company/VestigingList.php | 39 ++++++++++-- src/Model/GeoData.php | 30 ++++++++- src/Model/Link.php | 23 +++++++ src/Model/MaterieleRegistratie.php | 9 +++ src/Model/Resultaat.php | 12 ++++ src/Model/SbiActiviteit.php | 11 ++++ src/Model/Search/ResultaatItem.php | 31 ++++++++- 14 files changed, 354 insertions(+), 42 deletions(-) diff --git a/src/Model/Adres.php b/src/Model/Adres.php index bf8c825..fa61d3a 100644 --- a/src/Model/Adres.php +++ b/src/Model/Adres.php @@ -7,40 +7,56 @@ class Adres { private $type; + private $indAfgeschermd; + private $volledigAdres; + private $straatnaam; + private $huisnummer; + private $huisnummerToevoeging; + private $huisletter; + private $aanduidingBijHuisnummer; + private $toevoegingAdres; + private $postcode; + private $postbusnummer; + private $plaats; + private $straatHuisnummer; + private $postcodeWoonplaats; + private $regio; + private $land; + private $geoData; public function __construct( - ?string $type, - ?string $indAfgeschermd, - ?string $volledigAdres, - ?string $straatnaam, - ?int $huisnummer, - ?string $huisnummerToevoeging, - ?string $huisletter, - ?string $aanduidingBijHuisnummer, - ?string $toevoegingAdres, - ?string $postcode, - ?int $postbusnummer, - ?string $plaats, - ?string $straatHuisnummer, - ?string $postcodeWoonplaats, - ?string $regio, - ?string $land, + ?string $type, + ?string $indAfgeschermd, + ?string $volledigAdres, + ?string $straatnaam, + ?int $huisnummer, + ?string $huisnummerToevoeging, + ?string $huisletter, + ?string $aanduidingBijHuisnummer, + ?string $toevoegingAdres, + ?string $postcode, + ?int $postbusnummer, + ?string $plaats, + ?string $straatHuisnummer, + ?string $postcodeWoonplaats, + ?string $regio, + ?string $land, ?GeoData $geoData ) { $this->type = $type; @@ -146,4 +162,27 @@ public function getVolledigAdres(): string { return $this->volledigAdres; } + + public function toArray(): array + { + return [ + 'type' => $this->type, + 'indAfgeschermd' => $this->indAfgeschermd, + 'volledigAdres' => $this->volledigAdres, + 'straatnaam' => $this->straatnaam, + 'huisnummer' => $this->huisnummer, + 'huisnummerToevoeging' => $this->huisnummerToevoeging, + 'huisletter' => $this->huisletter, + 'aanduidingBijHuisnummer' => $this->aanduidingBijHuisnummer, + 'toevoegingAdres' => $this->toevoegingAdres, + 'postcode' => $this->postcode, + 'postbusnummer' => $this->postbusnummer, + 'plaats' => $this->plaats, + 'straatHuisnummer' => $this->straatHuisnummer, + 'postcodeWoonplaats' => $this->postcodeWoonplaats, + 'regio' => $this->regio, + 'land' => $this->land, + 'geoData' => $this->geoData ? $this->geoData->toArray() : null, + ]; + } } diff --git a/src/Model/Company/BasisProfiel.php b/src/Model/Company/BasisProfiel.php index d893195..4f1a834 100644 --- a/src/Model/Company/BasisProfiel.php +++ b/src/Model/Company/BasisProfiel.php @@ -4,6 +4,7 @@ namespace Appvise\KvkApi\Model\Company; +use Appvise\KvkApi\Model\Link; use Appvise\KvkApi\Model\MaterieleRegistratie; use Appvise\KvkApi\Model\SbiActiviteit; use DateTime; diff --git a/src/Model/Company/Eigenaar.php b/src/Model/Company/Eigenaar.php index b101fe1..d101bc2 100644 --- a/src/Model/Company/Eigenaar.php +++ b/src/Model/Company/Eigenaar.php @@ -5,14 +5,19 @@ namespace Appvise\KvkApi\Model\Company; use Appvise\KvkApi\Model\Adres; +use Appvise\KvkApi\Model\Link; class Eigenaar { private $rsin; + private $rechtsvorm; + private $uitgebreideRechtsvorm; + /** @var Adres[] */ private $adressen; + /** @var Link[] */ private $links; @@ -20,8 +25,8 @@ public function __construct( ?string $rsin, ?string $rechtsvorm, ?string $uitgebreideRechtsvorm, - ?array $adressen, - ?array $links + ?array $adressen, + ?array $links ) { $this->rsin = $rsin; $this->rechtsvorm = $rechtsvorm; @@ -54,4 +59,25 @@ public function getLinks(): ?array { return $this->links; } + + public function toArray(): array + { + $adressenArray = []; + foreach ($this->adressen as $adres) { + $adressenArray[] = $adres->toArray(); + } + + $linksArray = []; + foreach ($this->links as $link) { + $linksArray[] = $link->toArray(); + } + + return [ + 'rsin' => $this->rsin, + 'rechtsvorm' => $this->rechtsvorm, + 'uitgebreideRechtsvorm' => $this->uitgebreideRechtsvorm, + 'adressen' => $adressenArray, + 'links' => $linksArray, + ]; + } } diff --git a/src/Model/Company/EmbeddedContainer.php b/src/Model/Company/EmbeddedContainer.php index 724528d..2d133b6 100644 --- a/src/Model/Company/EmbeddedContainer.php +++ b/src/Model/Company/EmbeddedContainer.php @@ -6,7 +6,10 @@ class EmbeddedContainer { + /** @var Vestiging */ private $hoofdvestiging; + + /** @var Eigenaar */ private $eigenaar; public function __construct(Eigenaar $eigenaar, ?Vestiging $hoofdvestiging) @@ -24,4 +27,15 @@ public function getEigenaar(): Eigenaar { return $this->eigenaar; } + + public function toArray(): array + { + $hoofdvestigingArray = $this->hoofdvestiging ? $this->hoofdvestiging->toArray() : null; + $eigenaarArray = $this->eigenaar->toArray(); + + return [ + 'hoofdvestiging' => $hoofdvestigingArray, + 'eigenaar' => $eigenaarArray, + ]; + } } diff --git a/src/Model/Company/Handelsnaam.php b/src/Model/Company/Handelsnaam.php index 91161c7..2620f60 100644 --- a/src/Model/Company/Handelsnaam.php +++ b/src/Model/Company/Handelsnaam.php @@ -24,4 +24,12 @@ public function getVolgorde(): int { return $this->volgorde; } + + public function toArray(): array + { + return [ + 'naam' => $this->naam, + 'volgorde' => $this->volgorde, + ]; + } } diff --git a/src/Model/Company/Vestiging.php b/src/Model/Company/Vestiging.php index 724fd7e..6d521f0 100644 --- a/src/Model/Company/Vestiging.php +++ b/src/Model/Company/Vestiging.php @@ -4,48 +4,66 @@ namespace Appvise\KvkApi\Model\Company; +use Appvise\KvkApi\Model\Adres; +use Appvise\KvkApi\Model\Link; use Appvise\KvkApi\Model\MaterieleRegistratie; +use Appvise\KvkApi\Model\SbiActiviteit; use DateTime; class Vestiging { private $vestigingsnummer; + private $kvkNummer; + private $rsin; + private $indNonMailing; + private $formeleRegistratiedatum; + private $materieleRegistratie; + private $eersteHandelsnaam; + private $indHoofdvestiging; + private $indCommercieleVestiging; + private $voltijdWerkzamePersonen; + private $totaalWerkzamePersonen; + private $deeltijdWerkzamePersonen; + /** @var Adres[] */ private $adressen; + /** @var string[] */ private $websites; + /** @var SbiActiviteit[] */ private $sbiActiviteiten; + /** @var Link[] */ private $links; public function __construct( - string $kvkNummer, - string $vestigingsnummer, - ?string $rsin, - ?string $indNonMailing, - ?DateTime $formeleRegistratiedatum, + string $kvkNummer, + string $vestigingsnummer, + ?string $rsin, + ?string $indNonMailing, + ?DateTime $formeleRegistratiedatum, ?MaterieleRegistratie $materieleRegistratie, - ?string $eersteHandelsnaam, - ?string $indHoofdvestiging, - ?string $indCommercieleVestiging, - ?int $voltijdWerkzamePersonen, - ?int $deeltijdWerkzamePersonen, - ?array $adressen, - ?array $websites, - ?array $sbiActiviteiten, - ?array $links + ?string $eersteHandelsnaam, + ?string $indHoofdvestiging, + ?string $indCommercieleVestiging, + ?int $voltijdWerkzamePersonen, + ?int $deeltijdWerkzamePersonen, + ?array $adressen, + ?array $websites, + ?array $sbiActiviteiten, + ?array $links ) { $this->kvkNummer = $kvkNummer; $this->vestigingsnummer = $vestigingsnummer; @@ -143,4 +161,43 @@ public function getAdressen(): array { return $this->adressen; } + + public function toArray(): array + { + $adressenArray = []; + foreach ($this->adressen as $adres) { + $adressenArray[] = $adres->toArray(); + } + + $websitesArray = $this->websites ?? []; + + $sbiActiviteitenArray = []; + foreach ($this->sbiActiviteiten as $sbiActiviteit) { + $sbiActiviteitenArray[] = $sbiActiviteit->toArray(); + } + + $linksArray = []; + foreach ($this->links as $link) { + $linksArray[] = $link->toArray(); + } + + return [ + 'kvkNummer' => $this->kvkNummer, + 'vestigingsnummer' => $this->vestigingsnummer, + 'rsin' => $this->rsin, + 'indNonMailing' => $this->indNonMailing, + 'formeleRegistratiedatum' => $this->formeleRegistratiedatum ? $this->formeleRegistratiedatum->format('Y-m-d') : null, + 'materieleRegistratie' => $this->materieleRegistratie ? $this->materieleRegistratie->toArray() : null, + 'eersteHandelsnaam' => $this->eersteHandelsnaam, + 'indHoofdvestiging' => $this->indHoofdvestiging, + 'indCommercieleVestiging' => $this->indCommercieleVestiging, + 'voltijdWerkzamePersonen' => $this->voltijdWerkzamePersonen, + 'totaalWerkzamePersonen' => $this->totaalWerkzamePersonen, + 'deeltijdWerkzamePersonen' => $this->deeltijdWerkzamePersonen, + 'adressen' => $adressenArray, + 'websites' => $websitesArray, + 'sbiActiviteiten' => $sbiActiviteitenArray, + 'links' => $linksArray, + ]; + } } diff --git a/src/Model/Company/VestigingBasis.php b/src/Model/Company/VestigingBasis.php index e8a8cfb..c7fbc21 100644 --- a/src/Model/Company/VestigingBasis.php +++ b/src/Model/Company/VestigingBasis.php @@ -7,23 +7,30 @@ class VestigingBasis { private $kvkNummer; + private $vestigingsNummer; + private $eersteHandelsnaam; + private $indHoofdvestiging; + private $indAdresAfgeschermd; + private $indCommercieleVestiging; + private $volledigAdres; + private $links; public function __construct( - string $vestigingsNummer, + string $vestigingsNummer, ?string $kvkNummer, ?string $eersteHandelsnaam, ?string $indHoofdvestiging, ?string $indAdresAfgeschermd, ?string $indCommercieleVestiging, ?string $volledigAdres, - ?array $links + ?array $links ) { $this->vestigingsNummer = $vestigingsNummer; $this->kvkNummer = $kvkNummer; @@ -79,4 +86,25 @@ public function getKvkNumber(): string { return $this->kvkNumber; } + + public function toArray(): array + { + $linksArray = []; + if ($this->links) { + foreach ($this->links as $link) { + $linksArray[] = $link->toArray(); + } + } + + return [ + 'kvkNummer' => $this->kvkNummer, + 'vestigingsNummer' => $this->vestigingsNummer, + 'eersteHandelsnaam' => $this->eersteHandelsnaam, + 'indHoofdvestiging' => $this->indHoofdvestiging, + 'indAdresAfgeschermd' => $this->indAdresAfgeschermd, + 'indCommercieleVestiging' => $this->indCommercieleVestiging, + 'volledigAdres' => $this->volledigAdres, + 'links' => $linksArray, + ]; + } } diff --git a/src/Model/Company/VestigingList.php b/src/Model/Company/VestigingList.php index 24b2b5c..02d2062 100644 --- a/src/Model/Company/VestigingList.php +++ b/src/Model/Company/VestigingList.php @@ -4,23 +4,30 @@ namespace Appvise\KvkApi\Model\Company; +use Appvise\KvkApi\Model\Link; + class VestigingList { private $kvkNummer; + private $aantalCommercieleVestigingen; + private $aantalNietCommercieleVestigingen; + private $totaalAantalVestigingen; + /** @var VestigingBasis[] */ private $vestigingen; + /** @var Link[] */ private $links; public function __construct( string $kvkNummer, - array $vestigingen, - ?int $aantalCommercieleVestigingen, - ?int $aantalNietCommercieleVestigingen, - ?int $totaalAantalVestigingen, + array $vestigingen, + ?int $aantalCommercieleVestigingen, + ?int $aantalNietCommercieleVestigingen, + ?int $totaalAantalVestigingen, ?array $links ) { $this->kvkNummer = $kvkNummer; @@ -60,4 +67,28 @@ public function getLinks(): ?array { return $this->links; } + + public function toArray(): array + { + $vestigingenArray = []; + foreach ($this->vestigingen as $vestiging) { + $vestigingenArray[] = $vestiging->toArray(); + } + + $linksArray = []; + if ($this->links !== null) { + foreach ($this->links as $link) { + $linksArray[] = $link->toArray(); + } + } + + return [ + 'kvkNummer' => $this->kvkNummer, + 'aantalCommercieleVestigingen' => $this->aantalCommercieleVestigingen, + 'aantalNietCommercieleVestigingen' => $this->aantalNietCommercieleVestigingen, + 'totaalAantalVestigingen' => $this->totaalAantalVestigingen, + 'vestigingen' => $vestigingenArray, + 'links' => $linksArray, + ]; + } } diff --git a/src/Model/GeoData.php b/src/Model/GeoData.php index 7ba89da..1615587 100644 --- a/src/Model/GeoData.php +++ b/src/Model/GeoData.php @@ -7,15 +7,28 @@ class GeoData { private $addresseerbaarObjectId; + private $nummerAanduidingId; + private $gpsLatitude; + private $gpsLongitude; + private $rijksdriehoekX; + private $rijksdriehoekY; + private $rijksdriehoekZ; - public function __construct(?string $addresseerbaarObjectId, ?string $nummerAanduidingId, ?float $gpsLatitude, ?float $gpsLongitude, ?float $rijksdriehoekX, ?float $rijksdriehoekY, ?float $rijksdriehoekZ) - { + public function __construct( + ?string $addresseerbaarObjectId, + ?string $nummerAanduidingId, + ?float $gpsLatitude, + ?float $gpsLongitude, + ?float $rijksdriehoekX, + ?float $rijksdriehoekY, + ?float $rijksdriehoekZ + ) { $this->addresseerbaarObjectId = $addresseerbaarObjectId; $this->nummerAanduidingId = $nummerAanduidingId; $this->gpsLatitude = $gpsLatitude; @@ -59,4 +72,17 @@ public function getRijksdriehoekZ(): ?float { return $this->rijksdriehoekZ; } + + public function toArray(): array + { + return [ + 'addresseerbaarObjectId' => $this->addresseerbaarObjectId, + 'nummerAanduidingId' => $this->nummerAanduidingId, + 'gpsLatitude' => $this->gpsLatitude, + 'gpsLongitude' => $this->gpsLongitude, + 'rijksdriehoekX' => $this->rijksdriehoekX, + 'rijksdriehoekY' => $this->rijksdriehoekY, + 'rijksdriehoekZ' => $this->rijksdriehoekZ, + ]; + } } diff --git a/src/Model/Link.php b/src/Model/Link.php index 2d7ccda..51e0093 100644 --- a/src/Model/Link.php +++ b/src/Model/Link.php @@ -7,13 +7,21 @@ class Link { private $rel; + private $href; + private $hreflang; + private $media; + private $title; + private $type; + private $deprecation; + private $profile; + private $name; public function __construct( @@ -82,4 +90,19 @@ public function getName(): ?string { return $this->name; } + + public function toArray(): array + { + return [ + 'rel' => $this->rel, + 'href' => $this->href, + 'hreflang' => $this->hreflang, + 'media' => $this->media, + 'title' => $this->title, + 'type' => $this->type, + 'deprecation' => $this->deprecation, + 'profile' => $this->profile, + 'name' => $this->name, + ]; + } } diff --git a/src/Model/MaterieleRegistratie.php b/src/Model/MaterieleRegistratie.php index 116dc32..03cdd95 100644 --- a/src/Model/MaterieleRegistratie.php +++ b/src/Model/MaterieleRegistratie.php @@ -9,6 +9,7 @@ class MaterieleRegistratie { private $datumAanvang; + private $datumEinde; public function __construct(?DateTime $datumAanvang, ?DateTime $datumEinde) @@ -26,4 +27,12 @@ public function getDatumEinde(): ?DateTime { return $this->datumEinde; } + + public function toArray(): array + { + return [ + 'datumAanvang' => $this->datumAanvang, + 'datumEinde' => $this->datumEinde, + ]; + } } diff --git a/src/Model/Resultaat.php b/src/Model/Resultaat.php index 4a04665..a04f94c 100644 --- a/src/Model/Resultaat.php +++ b/src/Model/Resultaat.php @@ -57,4 +57,16 @@ public function getPrevious(): ?string { return $this->vorige; } + + public function toArray(): array + { + return [ + 'pagina' => $this->pagina, + 'totaal' => $this->totaal, + 'aantal' => $this->aantal, + 'resultaten' => $this->resultaten, + 'volgende' => $this->volgende, + 'vorige' => $this->vorige, + ]; + } } diff --git a/src/Model/SbiActiviteit.php b/src/Model/SbiActiviteit.php index db3fb9e..1913886 100644 --- a/src/Model/SbiActiviteit.php +++ b/src/Model/SbiActiviteit.php @@ -7,7 +7,9 @@ class SbiActiviteit { private $sbiCode; + private $sbiOmschrijving; + private $indHoofdactiviteit; public function __construct(?string $sbiCode, ?string $sbiOmschrijving, ?string $indHoofdactiviteit) @@ -31,4 +33,13 @@ public function getIndHoofdactiviteit(): ?string { return $this->indHoofdactiviteit; } + + public function toArray(): array + { + return [ + 'sbiCode' => $this->sbiCode, + 'sbiOmschrijving' => $this->sbiOmschrijving, + 'indHoofdactiviteit' => $this->indHoofdactiviteit, + ]; + } } diff --git a/src/Model/Search/ResultaatItem.php b/src/Model/Search/ResultaatItem.php index 11e1352..994958e 100644 --- a/src/Model/Search/ResultaatItem.php +++ b/src/Model/Search/ResultaatItem.php @@ -4,6 +4,8 @@ namespace Appvise\KvkApi\Model\Search; +use Appvise\KvkApi\Model\Link; + class ResultaatItem { private $kvkNummer; @@ -36,7 +38,7 @@ class ResultaatItem private $links; public function __construct( - string $kvkNumber, + string $kvkNumber, ?string $rsin, ?string $vestigingsnummer, ?string $handelsnaam, @@ -49,7 +51,7 @@ public function __construct( ?string $type, ?string $actief, ?string $vervallenNaam, - ?array $links = null + ?array $links = null ) { $this->kvkNummer = $kvkNumber; $this->rsin = $rsin; @@ -144,4 +146,29 @@ public function getHuisnummerToevoeging(): ?string { return $this->huisnummerToevoeging; } + + public function toArray(): array + { + $linksArray = []; + foreach ($this->links as $link) { + $linksArray[] = $link->toArray(); + } + + return [ + 'kvkNummer' => $this->kvkNummer, + 'rsin' => $this->rsin, + 'vestigingsnummer' => $this->vestigingsnummer, + 'handelsnaam' => $this->handelsnaam, + 'adresType' => $this->adresType, + 'straatnaam' => $this->straatnaam, + 'postcode' => $this->postcode, + 'plaats' => $this->plaats, + 'huisnummer' => $this->huisnummer, + 'huisnummerToevoeging' => $this->huisnummerToevoeging, + 'type' => $this->type, + 'actief' => $this->actief, + 'vervallenNaam' => $this->vervallenNaam, + 'links' => $linksArray, + ]; + } } From ad2c1f2b68d4234a3219308b8c6e22b109f5b6e7 Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Thu, 22 Feb 2024 17:13:26 +0100 Subject: [PATCH 14/26] Add v2 of search --- phpunit.xml | 3 - src/Http/SearchMapperV2.php | 33 ++++ src/Http/SearchQueryV2.php | 140 +++++++++++++++ src/KvkClient.php | 15 +- src/KvkClientInterface.php | 2 + src/Model/SearchV2/Adres.php | 88 ++++++++++ src/Model/SearchV2/AdresFactory.php | 23 +++ src/Model/SearchV2/ResultaatItem.php | 184 ++++++++++++++++++++ src/Model/SearchV2/ResultaatItemFactory.php | 51 ++++++ tests/Integration/ClientTest.php | 70 +++++--- 10 files changed, 578 insertions(+), 31 deletions(-) create mode 100644 src/Http/SearchMapperV2.php create mode 100644 src/Http/SearchQueryV2.php create mode 100644 src/Model/SearchV2/Adres.php create mode 100644 src/Model/SearchV2/AdresFactory.php create mode 100644 src/Model/SearchV2/ResultaatItem.php create mode 100644 src/Model/SearchV2/ResultaatItemFactory.php diff --git a/phpunit.xml b/phpunit.xml index 00d784e..71d9ec0 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -10,9 +10,6 @@ - - ./tests/Unit - ./tests/Integration diff --git a/src/Http/SearchMapperV2.php b/src/Http/SearchMapperV2.php new file mode 100644 index 0000000..c6c126b --- /dev/null +++ b/src/Http/SearchMapperV2.php @@ -0,0 +1,33 @@ +kvkNummer = $kvkNummer; + } + + public function setRsin(string $rsin) + { + $this->rsin = $rsin; + } + + public function setVestigingsnummer(string $vestigingsnummer) + { + $this->vestigingsnummer = $vestigingsnummer; + } + + public function setNaam(string $naam) + { + $this->naam = $naam; + } + + public function setStraatnaam(string $straatnaam) + { + $this->straatnaam = $straatnaam; + } + + public function setHuisnummer(int $huisnummer) + { + $this->huisnummer = $huisnummer; + } + + public function setHuisletter(string $huisletter) + { + $this->huisletter = $huisletter; + } + + public function setPostcode(string $postcode) + { + $this->postcode = $postcode; + } + + public function setPlaats(string $plaats) + { + $this->plaats = $plaats; + } + + public function setPostbusnummer(int $postbusnummer) + { + $this->postbusnummer = $postbusnummer; + } + + public function setType(string $type) + { + $this->type = $type; + } + + public function setInclusiefinactieveregistraties(bool $inclusiefinactieveregistraties) + { + $this->inclusiefinactieveregistraties = $inclusiefinactieveregistraties; + } + + public function setPagina(int $pagina) + { + $this->pagina = $pagina; + } + + public function setResultatenPerPagina(int $resultatenPerPagina) + { + $this->resultatenPerPagina = $resultatenPerPagina; + } + + public function toArray(): array + { + return [ + 'kvkNummer' => $this->kvkNummer, + 'rsin' => $this->rsin, + 'vestigingsnummer' => $this->vestigingsnummer, + 'naam' => $this->naam, + 'straatnaam' => $this->straatnaam, + 'huisnummer' => $this->huisnummer, + 'huisletter' => $this->huisletter, + 'postcode' => $this->postcode, + 'plaats' => $this->plaats, + 'type' => $this->type, + 'inclusiefinactieveregistraties' => $this->inclusiefinactieveregistraties, + 'pagina' => $this->pagina, + 'resultatenPerPagina' => $this->resultatenPerPagina, + ]; + } +} diff --git a/src/KvkClient.php b/src/KvkClient.php index de414fe..3ff0ea2 100644 --- a/src/KvkClient.php +++ b/src/KvkClient.php @@ -4,14 +4,15 @@ namespace Appvise\KvkApi; -use Appvise\KvkApi\Model\Link; -use Appvise\KvkApi\Http\QueryInterface; use Appvise\KvkApi\Http\ClientInterface; +use Appvise\KvkApi\Http\QueryInterface; use Appvise\KvkApi\Http\SearchMapper; +use Appvise\KvkApi\Http\SearchMapperV2; +use Appvise\KvkApi\Model\Company\BasisProfielFactory; use Appvise\KvkApi\Model\Company\EigenaarFactory; use Appvise\KvkApi\Model\Company\VestigingFactory; -use Appvise\KvkApi\Model\Company\BasisProfielFactory; use Appvise\KvkApi\Model\Company\VestigingListFactory; +use Appvise\KvkApi\Model\Link; final class KvkClient implements KvkClientInterface { @@ -66,6 +67,14 @@ public function search(QueryInterface $query) return SearchMapper::fromResponse($result); } + public function searchV2(QueryInterface $query) + { + $response = $this->client->hitEndpoint("{$this->baseUrl}api/v2/zoeken", $query); + $result = $this->decodeJson($response); + + return SearchMapperV2::fromResponse($result); + } + public function getBasisProfiel(QueryInterface $query) { $response = $this->client->hitEndpoint("{$this->baseUrl}api/v1/basisprofielen/{$query->toArray()['kvkNummer']}"); diff --git a/src/KvkClientInterface.php b/src/KvkClientInterface.php index 0541c8d..83ed702 100644 --- a/src/KvkClientInterface.php +++ b/src/KvkClientInterface.php @@ -9,6 +9,8 @@ interface KvkClientInterface { public function search(QueryInterface $query); + public function searchV2(QueryInterface $query); + public function getBasisProfiel(QueryInterface $query); public function getBasisProfielEigenaar(QueryInterface $query); diff --git a/src/Model/SearchV2/Adres.php b/src/Model/SearchV2/Adres.php new file mode 100644 index 0000000..4e9ee31 --- /dev/null +++ b/src/Model/SearchV2/Adres.php @@ -0,0 +1,88 @@ +type = $type; + $this->straatnaam = $straatnaam; + $this->huisnummer = $huisnummer; + $this->huisletter = $huisletter; + $this->postbusnummer = $postbusnummer; + $this->postcode = $postcode; + $this->plaats = $plaats; + } + + public function getType(): ?string + { + return $this->type; + } + + public function getStraatnaam(): ?string + { + return $this->straatnaam; + } + + public function getHuisnummer(): ?int + { + return $this->huisnummer; + } + + public function getHuisletter(): ?string + { + return $this->huisletter; + } + + public function getPostbusnummer(): ?int + { + return $this->postbusnummer; + } + + public function getPostcode(): ?string + { + return $this->postcode; + } + + public function getPlaats(): ?string + { + return $this->plaats; + } + + public function toArray(): array + { + return [ + 'type' => $this->type, + 'straatnaam' => $this->straatnaam, + 'huisnummer' => $this->huisnummer, + 'huisletter' => $this->huisletter, + 'postbusnummer' => $this->postbusnummer, + 'postcode' => $this->postcode, + 'plaats' => $this->plaats, + ]; + } +} diff --git a/src/Model/SearchV2/AdresFactory.php b/src/Model/SearchV2/AdresFactory.php new file mode 100644 index 0000000..a982a0a --- /dev/null +++ b/src/Model/SearchV2/AdresFactory.php @@ -0,0 +1,23 @@ +kvkNummer = $kvkNumber; + $this->rsin = $rsin; + $this->vestigingsnummer = $vestigingsnummer; + $this->naam = $naam; + $this->adres = $adres; + $this->straatnaam = $straatnaam; + $this->plaats = $plaats; + $this->postcode = $postcode; + $this->huisnummer = $huisnummer; + $this->huisnummerToevoeging = $huisnummerToevoeging; + $this->type = $type; + $this->actief = $actief; + $this->vervallenNaam = $vervallenNaam; + $this->links = $links; + } + + public function getKvkNummer(): string + { + return $this->kvkNummer; + } + + public function getRsin(): ?string + { + return $this->rsin; + } + + public function getVestigingsnummer(): ?string + { + return $this->vestigingsnummer; + } + + /* + * @deprecated use getNaam() + */ + public function getHandelsnaam(): ?string + { + return $this->naam; + } + + public function getNaam(): ?string + { + return $this->naam; + } + + public function getAdres(): ?array + { + return $this->adres; + } + + public function getBinnenlandsAdres(): Adres|array + { + return $this->adres['binnenlandsAdres'] ?? []; + } + + public function getBuitenlandsAdres(): Adres|array + { + return $this->adres['buitenlandsAdres'] ?? []; + } + + public function getStraatnaam(): ?string + { + return $this->straatnaam; + } + + public function getType(): ?string + { + return $this->type; + } + + public function getVervallenNaam(): ?string + { + return $this->vervallenNaam; + } + + public function getActief(): ?string + { + return $this->actief; + } + + public function getLinks(): ?array + { + return $this->links; + } + + public function getPostcode(): ?string + { + return $this->postcode; + } + + public function getPlaats(): ?string + { + return $this->plaats; + } + + public function getHuisnummer(): ?string + { + return $this->huisnummer; + } + + public function getHuisnummerToevoeging(): ?string + { + return $this->huisnummerToevoeging; + } + + public function toArray(): array + { + $linksArray = []; + foreach ($this->links as $link) { + $linksArray[] = $link->toArray(); + } + + return [ + 'kvkNummer' => $this->kvkNummer, + 'rsin' => $this->rsin, + 'vestigingsnummer' => $this->vestigingsnummer, + 'naam' => $this->naam, + 'adres' => $this->adres, + 'straatnaam' => $this->straatnaam, + 'postcode' => $this->postcode, + 'plaats' => $this->plaats, + 'huisnummer' => $this->huisnummer, + 'huisnummerToevoeging' => $this->huisnummerToevoeging, + 'type' => $this->type, + 'actief' => $this->actief, + 'vervallenNaam' => $this->vervallenNaam, + 'links' => $linksArray, + ]; + } +} diff --git a/src/Model/SearchV2/ResultaatItemFactory.php b/src/Model/SearchV2/ResultaatItemFactory.php new file mode 100644 index 0000000..496b856 --- /dev/null +++ b/src/Model/SearchV2/ResultaatItemFactory.php @@ -0,0 +1,51 @@ + $adres) { + $items[$type] = AdresFactory::fromResponse($adres); + } + + return $items; + } +} diff --git a/tests/Integration/ClientTest.php b/tests/Integration/ClientTest.php index ad8bee9..19ec7f3 100644 --- a/tests/Integration/ClientTest.php +++ b/tests/Integration/ClientTest.php @@ -5,11 +5,11 @@ use Appvise\KvkApi\Exception\NotFoundException; use Appvise\KvkApi\Http\ProfileQuery; use Appvise\KvkApi\Http\SearchQuery; +use Appvise\KvkApi\Http\SearchQueryV2; use Appvise\KvkApi\Http\VestigingsQuery; use Appvise\KvkApi\KvkClientFactory; use Appvise\KvkApi\Model\Company\BasisProfiel; use Appvise\KvkApi\Model\Company\Vestiging; -use Appvise\KvkApi\Model\Search\ResultaatItem; use PHPUnit\Framework\TestCase; class ClientTest extends TestCase @@ -17,30 +17,49 @@ class ClientTest extends TestCase /** KvkClient $client */ private $client; - private const ENVIRONMENT = 'test'; - private const USER_KEY = 'NOT_AN_ACTUAL_API_KEY'; + private const ENVIRONMENT = 'test'; + private const USER_KEY = 'NOT_AN_ACTUAL_API_KEY'; private const ROOT_CERTIFICATE = '../../cert/private_chain.pem'; - public function setUp() + public function setUp(): void { $this->client = KvkClientFactory::create(self::USER_KEY, self::ENVIRONMENT, self::ROOT_CERTIFICATE); } +// +// /** +// * @test +// * @dataProvider getKvkNumbers +// **/ +// public function search(string $kvkNumber) +// { +// $query = new SearchQuery(); +// $query->setKvkNumber($kvkNumber); +// +// $resultaten = $this->client->search($query); +// +// foreach ($resultaten->getResultaten() as $searchResult) { +// $this->assertInstanceOf(ResultaatItem::class, $searchResult); +// $this->assertEquals($kvkNumber, $searchResult->getKvkNumber()); +// $this->assertEquals($kvkNumber, $searchResult->getKvkNummer()); +// } +// } /** * @test * @dataProvider getKvkNumbers **/ - public function search(string $kvkNumber) + public function searchV2(string $kvkNumber) { - $query = new SearchQuery(); - $query->setKvkNumber($kvkNumber); + $query = new SearchQueryV2(); + $query->setKvkNummer($kvkNumber); - $resultaten = $this->client->search($query); + $resultaten = $this->client->searchV2($query); foreach ($resultaten->getResultaten() as $searchResult) { - $this->assertInstanceOf(ResultaatItem::class, $searchResult); - $this->assertEquals($kvkNumber, $searchResult->getKvkNumber()); + $this->assertInstanceOf(\Appvise\KvkApi\Model\SearchV2\ResultaatItem::class, $searchResult); $this->assertEquals($kvkNumber, $searchResult->getKvkNummer()); + + var_dump($searchResult->getBinnenlandsAdres()); } } @@ -98,24 +117,25 @@ public function search_non_existing_vestigings_profielen_should_throw_exception( $this->client->getVestigingsProfiel($query); } + /** * return string[][] */ public function getKvkNumbers(): array { return [ - 'Eenmanszaak' => [69599084], - 'NV' => [68727720, 90004760], - 'BV' => [68750110, 90001354], - 'Stichting' => [69599068, 90000102], - 'VoF' => [69599076, 90005414], - 'Coöperatie' => [55344526], - 'Kerkgenootschap' => [90002520], - 'Onderlinge Waarborg Maatschappij' => [90002490], - 'Vereniging van Eigenaars' => [90000749], - 'Maatschap' => [90001745], - 'Commanditaire Vennootschap' => [90003942], - 'Overige Privaatrechtelijke Rechtspersoon' => [55505201], + 'Eenmanszaak' => ['69599084'], + 'NV' => ['68727720', '90004760'], + 'BV' => ['68750110', '90001354'], + 'Stichting' => ['69599068', '90000102'], + 'VoF' => ['69599076', '90005414'], + 'Coöperatie' => ['55344526'], + 'Kerkgenootschap' => ['90002520'], + 'Onderlinge Waarborg Maatschappij' => ['90002490'], + 'Vereniging van Eigenaars' => ['90000749'], + 'Maatschap' => ['90001745'], + 'Commanditaire Vennootschap' => ['90003942'], + 'Overige Privaatrechtelijke Rechtspersoon' => ['55505201'], ]; } @@ -125,8 +145,8 @@ public function getKvkNumbers(): array public function getNonExistingKvkNumbers(): array { return [ - 'Foutmelding' => [90004973], - 'Foutmelding' => [90002903], + 'Foutmelding' => ['90004973'], + 'Foutmelding' => ['90002903'], ]; } @@ -139,7 +159,7 @@ public function getVestigingsNumbers(): array 'Eenmanszaak' => ['000038509504', '000038509520', '990000160639', '990000406685', '990000528380', '990000592442', '990000958857'], 'BV' => ['000037178598', '000037178601', '000037178602', '990000294664', '990000541921'], 'VOF' => ['000038509474', '000038509490', '990000090842', '990000216645', '990000821206', '990000865418'], - 'Coöperatie' => ['000037178605'], + //'Coöperatie' => ['000037178605'], 'Onderlinge Waarborg Maatschappij' => ['990000246858', '990000473049'], 'Maatschap' => ['990000637800'], 'Commanditaire Vennootschap' => ['990000008288', '990000246530', '990000768218', '990000852070'], From 36a4a5701b39f3c262e040a5399b5ea86b0862f8 Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Thu, 22 Feb 2024 17:27:08 +0100 Subject: [PATCH 15/26] fix test --- src/Model/SearchV2/ResultaatItem.php | 7 ++++- tests/Integration/ClientTest.php | 38 +++++++++++++--------------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/Model/SearchV2/ResultaatItem.php b/src/Model/SearchV2/ResultaatItem.php index d1ca31f..5c4dc79 100644 --- a/src/Model/SearchV2/ResultaatItem.php +++ b/src/Model/SearchV2/ResultaatItem.php @@ -164,12 +164,17 @@ public function toArray(): array $linksArray[] = $link->toArray(); } + $adresArray = []; + foreach ($this->adres as $adres) { + $adresArray[] = $adres->toArray(); + } + return [ 'kvkNummer' => $this->kvkNummer, 'rsin' => $this->rsin, 'vestigingsnummer' => $this->vestigingsnummer, 'naam' => $this->naam, - 'adres' => $this->adres, + 'adres' => $adresArray, 'straatnaam' => $this->straatnaam, 'postcode' => $this->postcode, 'plaats' => $this->plaats, diff --git a/tests/Integration/ClientTest.php b/tests/Integration/ClientTest.php index 19ec7f3..6d7b9ea 100644 --- a/tests/Integration/ClientTest.php +++ b/tests/Integration/ClientTest.php @@ -25,24 +25,24 @@ public function setUp(): void { $this->client = KvkClientFactory::create(self::USER_KEY, self::ENVIRONMENT, self::ROOT_CERTIFICATE); } -// -// /** -// * @test -// * @dataProvider getKvkNumbers -// **/ -// public function search(string $kvkNumber) -// { -// $query = new SearchQuery(); -// $query->setKvkNumber($kvkNumber); -// -// $resultaten = $this->client->search($query); -// -// foreach ($resultaten->getResultaten() as $searchResult) { -// $this->assertInstanceOf(ResultaatItem::class, $searchResult); -// $this->assertEquals($kvkNumber, $searchResult->getKvkNumber()); -// $this->assertEquals($kvkNumber, $searchResult->getKvkNummer()); -// } -// } + + /** + * @test + * @dataProvider getKvkNumbers + **/ + public function search(string $kvkNumber) + { + $query = new SearchQuery(); + $query->setKvkNumber($kvkNumber); + + $resultaten = $this->client->search($query); + + foreach ($resultaten->getResultaten() as $searchResult) { + $this->assertInstanceOf(ResultaatItem::class, $searchResult); + $this->assertEquals($kvkNumber, $searchResult->getKvkNumber()); + $this->assertEquals($kvkNumber, $searchResult->getKvkNummer()); + } + } /** * @test @@ -58,8 +58,6 @@ public function searchV2(string $kvkNumber) foreach ($resultaten->getResultaten() as $searchResult) { $this->assertInstanceOf(\Appvise\KvkApi\Model\SearchV2\ResultaatItem::class, $searchResult); $this->assertEquals($kvkNumber, $searchResult->getKvkNummer()); - - var_dump($searchResult->getBinnenlandsAdres()); } } From e410561d636cb80555bda8ca8fe1180aa8ddc2c2 Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Fri, 5 Apr 2024 11:39:09 +0200 Subject: [PATCH 16/26] refactor(SearchQueryV2.php, Adres.php, Adres.php, Adres.php): change type of huisnummer property from int to string for consistency and flexibility in handling house numbers. --- src/Http/SearchQueryV2.php | 4 ++-- src/Model/Adres.php | 4 ++-- src/Model/SearchV2/Adres.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Http/SearchQueryV2.php b/src/Http/SearchQueryV2.php index fee1cfd..bf82930 100644 --- a/src/Http/SearchQueryV2.php +++ b/src/Http/SearchQueryV2.php @@ -21,7 +21,7 @@ class SearchQueryV2 implements QueryInterface /** @var string */ private $straatnaam; - /** @var int */ + /** @var string */ private $huisnummer; /** @var string */ @@ -74,7 +74,7 @@ public function setStraatnaam(string $straatnaam) $this->straatnaam = $straatnaam; } - public function setHuisnummer(int $huisnummer) + public function setHuisnummer(string $huisnummer) { $this->huisnummer = $huisnummer; } diff --git a/src/Model/Adres.php b/src/Model/Adres.php index fa61d3a..067efbd 100644 --- a/src/Model/Adres.php +++ b/src/Model/Adres.php @@ -45,7 +45,7 @@ public function __construct( ?string $indAfgeschermd, ?string $volledigAdres, ?string $straatnaam, - ?int $huisnummer, + ?string $huisnummer, ?string $huisnummerToevoeging, ?string $huisletter, ?string $aanduidingBijHuisnummer, @@ -88,7 +88,7 @@ public function getStraatnaam(): ?string return $this->straatnaam; } - public function getHuisnummer(): ?int + public function getHuisnummer(): ?string { return $this->huisnummer; } diff --git a/src/Model/SearchV2/Adres.php b/src/Model/SearchV2/Adres.php index 4e9ee31..59968a2 100644 --- a/src/Model/SearchV2/Adres.php +++ b/src/Model/SearchV2/Adres.php @@ -23,7 +23,7 @@ class Adres public function __construct( ?string $type, ?string $straatnaam, - ?int $huisnummer, + ?string $huisnummer, ?string $huisletter, ?int $postbusnummer, ?string $postcode, @@ -48,7 +48,7 @@ public function getStraatnaam(): ?string return $this->straatnaam; } - public function getHuisnummer(): ?int + public function getHuisnummer(): ?string { return $this->huisnummer; } From b39dd718d4bdb22721e853a001c1a157efbcdc1f Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Fri, 5 Apr 2024 11:41:11 +0200 Subject: [PATCH 17/26] fix(AdresFactory.php): change huisnummer property type from integer to string for consistency --- src/Model/AdresFactory.php | 2 +- src/Model/SearchV2/AdresFactory.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Model/AdresFactory.php b/src/Model/AdresFactory.php index 9a8a477..8e8237a 100644 --- a/src/Model/AdresFactory.php +++ b/src/Model/AdresFactory.php @@ -13,7 +13,7 @@ public static function fromResponse($response): Adres self::pluckString('indAfgeschermd', $response), self::pluckString('volledigAdres', $response), self::pluckString('straatnaam', $response), - self::pluckInteger('huisnummer', $response), + self::pluckString('huisnummer', $response), self::pluckString('huisnummerToevoeging', $response), self::pluckString('huisletter', $response), self::pluckString('aanduidingBijHuisnummer', $response), diff --git a/src/Model/SearchV2/AdresFactory.php b/src/Model/SearchV2/AdresFactory.php index a982a0a..995569b 100644 --- a/src/Model/SearchV2/AdresFactory.php +++ b/src/Model/SearchV2/AdresFactory.php @@ -13,7 +13,7 @@ public static function fromResponse($response): Adres return new Adres( self::pluckString('type', $response), self::pluckString('straatnaam', $response), - self::pluckInteger('huisnummer', $response), + self::pluckString('huisnummer', $response), self::pluckString('huisletter', $response), self::pluckInteger('postbusnummer', $response), self::pluckString('postcode', $response), From c275ee9dedc2e5d93ccab7c5168fd855c04eed57 Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Tue, 16 Jul 2024 11:41:26 +0200 Subject: [PATCH 18/26] perf(KvkClientFactory.php): improve performance by adding timeout and connect_timeout options to GuzzleHttp\Client instance for faster API requests --- src/KvkClientFactory.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/KvkClientFactory.php b/src/KvkClientFactory.php index 58cfc28..860706a 100644 --- a/src/KvkClientFactory.php +++ b/src/KvkClientFactory.php @@ -47,6 +47,8 @@ private static function createHttpClient(string $userKey, ?string $rootCertifica 'debug' => false, 'verify' => $rootCertificate ?? false, 'handler' => $stack, + 'timeout' => 10, + 'connect_timeout' => 3, ]); return new GuzzleClient($client); From 5aedd02ed58cbf69cacab374cd22e41a8eaf494d Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Thu, 14 Nov 2024 16:42:39 +0100 Subject: [PATCH 19/26] remove ssl check --- src/KvkClientFactory.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/KvkClientFactory.php b/src/KvkClientFactory.php index 860706a..142db72 100644 --- a/src/KvkClientFactory.php +++ b/src/KvkClientFactory.php @@ -17,12 +17,8 @@ class KvkClientFactory private const PRODUCTION_URL = 'https://api.kvk.nl/'; private const DEVELOPMENT_URL = 'https://developers.kvk.nl/test/'; - public static function create(string $userKey, string $stage = 'test', string $rootCertificate = null): KvkClientInterface + public static function create(string $userKey, string $stage = 'test', ?string $rootCertificate = null): KvkClientInterface { - if ($rootCertificate === null) { - trigger_error('Root certificate is required. Please configure your system or supply one here.', E_USER_DEPRECATED); - } - switch ($stage) { case 'production': return new KvkClient(self::createHttpClient($userKey, $rootCertificate), self::PRODUCTION_URL); From 0e398a9cde18b39ca632ceb7616928617240a0f2 Mon Sep 17 00:00:00 2001 From: Michiel Vugteveen Date: Thu, 14 Nov 2024 16:44:48 +0100 Subject: [PATCH 20/26] fix --- src/KvkClientFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KvkClientFactory.php b/src/KvkClientFactory.php index 142db72..eaee8b0 100644 --- a/src/KvkClientFactory.php +++ b/src/KvkClientFactory.php @@ -41,7 +41,7 @@ private static function createHttpClient(string $userKey, ?string $rootCertifica $client = new Client([ 'debug' => false, - 'verify' => $rootCertificate ?? false, + 'verify' => $rootCertificate ?: false, 'handler' => $stack, 'timeout' => 10, 'connect_timeout' => 3, From 081950ed7f669032d0f5328aaaad4acb545a4507 Mon Sep 17 00:00:00 2001 From: "M. Vugteveen" Date: Thu, 13 Feb 2025 14:50:33 +0100 Subject: [PATCH 21/26] Update SearchQueryV2.php --- src/Http/SearchQueryV2.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Http/SearchQueryV2.php b/src/Http/SearchQueryV2.php index bf82930..4b0ef75 100644 --- a/src/Http/SearchQueryV2.php +++ b/src/Http/SearchQueryV2.php @@ -40,7 +40,7 @@ class SearchQueryV2 implements QueryInterface private $type; /** @var bool */ - private $inclusiefinactieveregistraties; + private $inclusiefInactieveRegistraties; /** @var int */ private $pagina; @@ -104,9 +104,9 @@ public function setType(string $type) $this->type = $type; } - public function setInclusiefinactieveregistraties(bool $inclusiefinactieveregistraties) + public function setInclusiefinactieveregistraties(bool $inclusiefInactieveRegistraties) { - $this->inclusiefinactieveregistraties = $inclusiefinactieveregistraties; + $this->inclusiefInactieveRegistraties = $inclusiefInactieveRegistraties; } public function setPagina(int $pagina) @@ -132,7 +132,7 @@ public function toArray(): array 'postcode' => $this->postcode, 'plaats' => $this->plaats, 'type' => $this->type, - 'inclusiefinactieveregistraties' => $this->inclusiefinactieveregistraties, + 'inclusiefInactieveRegistraties' => $this->inclusiefInactieveRegistraties, 'pagina' => $this->pagina, 'resultatenPerPagina' => $this->resultatenPerPagina, ]; From ddadd85231f07e3e7024d6d6dccfa20206d2290d Mon Sep 17 00:00:00 2001 From: "M. Vugteveen" Date: Thu, 13 Feb 2025 14:51:37 +0100 Subject: [PATCH 22/26] Update SearchQuery.php --- src/Http/SearchQuery.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Http/SearchQuery.php b/src/Http/SearchQuery.php index 3afb091..d42c7cf 100644 --- a/src/Http/SearchQuery.php +++ b/src/Http/SearchQuery.php @@ -123,7 +123,7 @@ public function toArray(): array 'huisnummer' => $this->huisnummer, 'huisnummerToevoeging' => $this->huisnummerToevoeging, 'type' => $this->type, - 'inclusiefinactieveregistraties' => $this->inclusiefinactieveregistraties, + 'InclusiefInactieveRegistraties' => $this->inclusiefinactieveregistraties, 'pagina' => $this->pagina, 'aantal' => $this->aantal, ]; From 5e6d7e0b0abfebd9dae590f8944ec5cff0dee040 Mon Sep 17 00:00:00 2001 From: "M. Vugteveen" Date: Thu, 13 Feb 2025 14:52:57 +0100 Subject: [PATCH 23/26] Update SearchQueryV2.php --- src/Http/SearchQueryV2.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Http/SearchQueryV2.php b/src/Http/SearchQueryV2.php index 4b0ef75..c72eb7c 100644 --- a/src/Http/SearchQueryV2.php +++ b/src/Http/SearchQueryV2.php @@ -104,7 +104,7 @@ public function setType(string $type) $this->type = $type; } - public function setInclusiefinactieveregistraties(bool $inclusiefInactieveRegistraties) + public function setInclusiefInactieveRegistraties(bool $inclusiefInactieveRegistraties) { $this->inclusiefInactieveRegistraties = $inclusiefInactieveRegistraties; } From 9b8fe4841d59dd05b414a5b54918a3095c895dba Mon Sep 17 00:00:00 2001 From: "M. Vugteveen" Date: Thu, 13 Feb 2025 15:26:35 +0100 Subject: [PATCH 24/26] Update SearchQueryV2.php --- src/Http/SearchQueryV2.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Http/SearchQueryV2.php b/src/Http/SearchQueryV2.php index c72eb7c..01d25a9 100644 --- a/src/Http/SearchQueryV2.php +++ b/src/Http/SearchQueryV2.php @@ -39,7 +39,7 @@ class SearchQueryV2 implements QueryInterface /** @var string */ private $type; - /** @var bool */ + /** @var string */ private $inclusiefInactieveRegistraties; /** @var int */ @@ -106,7 +106,7 @@ public function setType(string $type) public function setInclusiefInactieveRegistraties(bool $inclusiefInactieveRegistraties) { - $this->inclusiefInactieveRegistraties = $inclusiefInactieveRegistraties; + $this->inclusiefInactieveRegistraties = $inclusiefInactieveRegistraties ? 'true' : 'false'; } public function setPagina(int $pagina) From 53e33bfed4abe342f50236d342e95d0cebdb2a13 Mon Sep 17 00:00:00 2001 From: "M. Vugteveen" Date: Thu, 13 Feb 2025 16:10:39 +0100 Subject: [PATCH 25/26] Update ResultaatItemFactory.php --- src/Model/Search/ResultaatItemFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/Search/ResultaatItemFactory.php b/src/Model/Search/ResultaatItemFactory.php index ee41999..3f84bc2 100644 --- a/src/Model/Search/ResultaatItemFactory.php +++ b/src/Model/Search/ResultaatItemFactory.php @@ -25,7 +25,7 @@ public static function fromResponse(array $response): ResultaatItem self::pluckString('type', $response), self::pluckString('actief', $response), self::pluckString('vervallenNaam', $response), - self::extractLinks($response['links']), + self::extractLinks($response['links'] ?? []), ); } From 2bc54d286686ac66a213e07cb2292e9620f5cf02 Mon Sep 17 00:00:00 2001 From: "M. Vugteveen" Date: Thu, 13 Feb 2025 16:11:05 +0100 Subject: [PATCH 26/26] Update ResultaatItemFactory.php --- src/Model/SearchV2/ResultaatItemFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Model/SearchV2/ResultaatItemFactory.php b/src/Model/SearchV2/ResultaatItemFactory.php index 496b856..e30e756 100644 --- a/src/Model/SearchV2/ResultaatItemFactory.php +++ b/src/Model/SearchV2/ResultaatItemFactory.php @@ -25,7 +25,7 @@ public static function fromResponse(array $response): ResultaatItem self::pluckString('type', $response), self::pluckString('actief', $response), self::pluckString('vervallenNaam', $response), - self::extractLinks($response['links']), + self::extractLinks($response['links'] ?? []), ); }