Passed
Push — master ( b35614...49fb5f )
by Marcin
07:22
created

NativeApi   F

Complexity

Total Complexity 91

Size/Duplication

Total Lines 1349
Duplicated Lines 0 %

Test Coverage

Coverage 37.97%

Importance

Changes 0
Metric Value
eloc 370
dl 0
loc 1349
ccs 153
cts 403
cp 0.3797
rs 2
c 0
b 0
f 0
wmc 91

56 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A PobierzDateAktualnegoKatUlic() 0 8 2
A WeryfikujAdresDlaMiejscowosci() 0 6 1
A PobierzListeUlicDlaMiejscowosci() 0 20 2
A PobierzZmianyUlicUrzedowy() 0 14 1
A WeryfikujAdresDlaMiejscowosciAdresowy() 0 6 1
A PobierzKatalogTERC() 0 7 1
A PobierzDateAktualnegoKatNTS() 0 8 2
A PobierzListeRegionow() 0 9 2
A WyszukajMiejscowosc() 0 10 2
A PobierzListeGmin() 0 9 2
A WeryfikujNazwaAdresUlicAdresowy() 0 26 2
A PobierzZmianySimcUrzedowy() 0 14 1
A WeryfikujNazwaAdresUlic() 0 26 2
A PobierzSlownikRodzajowSIMC() 0 9 2
A PobierzZmianyTercAdresowy() 0 14 1
A PobierzKatalogTERCAdr() 0 7 1
A WeryfikujAdresDlaUlic() 0 6 1
A PobierzListeWojewodztw() 0 9 2
A PobierzKatalogULICBezDzielnic() 0 7 1
A PobierzKatalogWMRODZ() 0 7 1
A PobierzDateAktualnegoKatSimc() 0 8 2
A PobierzZmianyUlicAdresowy() 0 14 1
A PobierzKatalogULICAdr() 0 7 1
A getInstance() 0 7 2
A WeryfikujAdresWmiejscowosci() 0 21 2
A WyszukajJednostkeWRejestrze() 0 25 4
A create() 0 5 1
A PobierzListePodregionow() 0 9 2
A PobierzSlownikRodzajowJednostek() 0 5 1
A WyszukajUlice() 0 14 2
A PobierzZmianyNTS() 0 14 1
A PobierzZmianyTercUrzedowy() 0 14 1
A PobierzZmianySimcStatystyczny() 0 14 1
A PobierzListeMiejscowosciWGminie() 0 14 2
A PobierzGminyiPowDlaWoj() 0 9 2
A PobierzListeGminPowiecie() 0 9 2
A PobierzListeWojewodztwWRegionie() 0 9 2
A WeryfikujAdresDlaUlicAdresowy() 0 6 1
A PobierzListeMiejscowosciWRodzajuGminy() 0 16 2
A PobierzListePowiatow() 0 9 2
A PobierzKatalogSIMCAdr() 0 7 1
A PobierzKatalogNTS() 0 7 1
A WyszukajJPT() 0 9 2
A WyszukajMiejscowoscWRejestrze() 0 27 4
A CzyZalogowany() 0 3 1
A PobierzKatalogSIMCStat() 0 7 1
A PobierzSlownikCechULIC() 0 5 1
A PobierzZmianySimcAdresowy() 0 14 1
A PobierzDateAktualnegoKatTerc() 0 8 2
A WeryfikujAdresWmiejscowosciAdresowy() 0 21 2
A PobierzKatalogSIMC() 0 7 1
A PobierzListePowiatowWPodregionie() 0 9 2
A WyszukajMiejscowoscWJPT() 0 24 2
A PobierzKatalogULIC() 0 7 1
A WyszukajUliceWRejestrze() 0 27 4

How to fix   Complexity   

Complex Class

Complex classes like NativeApi often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

While breaking up the class, it is a good idea to analyze how other classes use NativeApi, and based on these observations, apply Extract Interface, too.

1
<?php
2
/**
3
 * TERYT-API
4
 *
5
 * Copyright (c) 2017 pudelek.org.pl
6
 *
7
 * @license MIT License (MIT)
8
 *
9
 * For the full copyright and license information, please view source file
10
 * that is bundled with this package in the file LICENSE
11
 *
12
 * @author  Marcin Pudełek <[email protected]>
13
 *
14
 */
15
16
/**
17
 * Created by Marcin.
18
 * Date: 11.09.2017
19
 * Time: 23:01
20
 */
21
22
namespace mrcnpdlk\Teryt;
23
24
use mrcnpdlk\Teryt\Model\Terc;
25
use mrcnpdlk\Teryt\ResponseModel\Dictionary\RodzajMiejscowosci;
26
use mrcnpdlk\Teryt\ResponseModel\Territory\JednostkaNomenklaturyNTS;
27
use mrcnpdlk\Teryt\ResponseModel\Territory\JednostkaPodzialuTerytorialnego;
28
use mrcnpdlk\Teryt\ResponseModel\Territory\JednostkaTerytorialna;
29
use mrcnpdlk\Teryt\ResponseModel\Territory\Miejscowosc;
30
use mrcnpdlk\Teryt\ResponseModel\Territory\Ulica;
31
use mrcnpdlk\Teryt\ResponseModel\Territory\UlicaDrzewo;
32
use mrcnpdlk\Teryt\ResponseModel\Territory\WyszukanaMiejscowosc;
33
use mrcnpdlk\Teryt\ResponseModel\Territory\WyszukanaUlica;
34
use mrcnpdlk\Teryt\ResponseModel\Territory\ZweryfikowanyAdres;
35
use mrcnpdlk\Teryt\ResponseModel\Territory\ZweryfikowanyAdresBezUlic;
36
37
38
final class NativeApi
39
{
40
    /**
41
     * @var string Wyszukiwanie wśród wszystkich rodzajów jednostek
42
     */
43
    const CATEGORY_ALL         = '0'; // Wyszukiwanie wśród wszystkich rodzajów jednostek
44
    const CATEGORY_WOJ_ALL     = '1'; // Dla województw
45
    const CATEGORY_POW_ALL     = '2'; // Dla wszystkich powiatów
46
    const CATEGORY_POW_ZIE     = '21'; // Dla powiatów ziemskich (identyfikator powiatu 01-60)
47
    const CATEGORY_POW_MIA     = '22'; // Dla miast na prawach powiatu (identyfikator powiatu 61-99)
48
    const CATEGORY_GMI_ALL     = '3'; // Dla gmin ogółem
49
    const CATEGORY_GMI_MIA     = '31'; // Dla gmin miejskich (identyfikator rodzaju gminy 1)
50
    const CATEGORY_DELEG       = '32'; // Dla dzielnic i delegatur (identyfikator rodzaju 8 i 9)
51
    const CATEGORY_GMI_WIE     = '33'; // Dla gmin wiejskich (identyfikator rodzaju 2)
52
    const CATEGORY_GMI_MIE_WIE = '34'; // Dla gmin miejsko-wiejskich (3)
53
    const CATEGORY_MIA         = '341'; // Dla miast w gminach miejsko-wiejskich(4)
54
    const CATEGORY_MIA_OBS     = '342'; // Dla obszarów miejskich w gminach miejsko-wiejskich(5)
55
    const CATEGORY_MIA_ALL     = '35'; // Dla miast ogółem (identyfikator 1 i 4)
56
    const CATEGORY_WIE         = '36'; // Dla terenów wiejskich (identyfikator 2 i 5)
57
58
    /**
59
     * Określenie zakresu miejscowości
60
     */
61
62
    const SEARCH_CITY_TYPE_ALL  = '000'; //Wszystkie
63
    const SEARCH_CITY_TYPE_MAIN = '001'; //Miejscowości podstawowe
64
    const SEARCH_CITY_TYPE_ADD  = '002'; //Części integralne miejscowości
65
66
    /**
67
     * @var \mrcnpdlk\Teryt\NativeApi|null
68
     */
69
    private static $instance = null;
70
    /**
71
     * @var Client
72
     */
73
    private $oClient;
74
75
    /**
76
     * NativeApi constructor.
77
     *
78
     * @param \mrcnpdlk\Teryt\Client $oClient
79
     */
80 11
    private function __construct(Client $oClient)
81
    {
82 11
        $this->oClient = $oClient;
83 11
    }
84
85
    /**
86
     * @param \mrcnpdlk\Teryt\Client $oClient
87
     *
88
     * @return \mrcnpdlk\Teryt\NativeApi
89
     */
90 11
    public static function create(Client $oClient): NativeApi
91
    {
92 11
        static::$instance = new static($oClient);
0 ignored issues
show
Bug introduced by
Since $instance is declared private, accessing it with static will lead to errors in possible sub-classes; you can either use self, or increase the visibility of $instance to at least protected.
Loading history...
93
94 11
        return static::$instance;
95
    }
96
97
    /**
98
     * @return \mrcnpdlk\Teryt\NativeApi
99
     * @throws \mrcnpdlk\Teryt\Exception
100
     */
101 2
    public static function getInstance(): NativeApi
102
    {
103 2
        if (null === static::$instance) {
0 ignored issues
show
Bug introduced by
Since $instance is declared private, accessing it with static will lead to errors in possible sub-classes; you can either use self, or increase the visibility of $instance to at least protected.
Loading history...
104
            throw new Exception(sprintf('First call CREATE method!'));
105
        }
106
107 2
        return static::$instance;
108
    }
109
110
    /**
111
     * Sprawdzenie czy użytkownik jest zalogowany
112
     *
113
     * @return bool
114
     * @throws \mrcnpdlk\Teryt\Exception\Connection
115
     * @throws \mrcnpdlk\Teryt\Exception
116
     */
117 1
    public function CzyZalogowany(): bool
118
    {
119 1
        return $this->oClient->request('CzyZalogowany');
120
    }
121
122
    /**
123
     * Data początkowa bieżącego stanu katalogu NTS
124
     *
125
     * @return null|string Data w formacie YYY-MM-DD
126
     * @throws \mrcnpdlk\Teryt\Exception
127
     * @throws \mrcnpdlk\Teryt\Exception\Connection
128
     */
129
    public function PobierzDateAktualnegoKatNTS()
130
    {
131
        $res = $this->oClient->request('PobierzDateAktualnegoKatNTS');
132
133
        try {
134
            return (new \DateTime($res))->format('Y-m-d');
135
        } catch (\Exception $e) {
136
            return null;
137
        }
138
    }
139
140
    /**
141
     * Data początkowa bieżącego stanu katalogu SIMC
142
     *
143
     * @return null|string Data w formacie YYY-MM-DD
144
     * @throws \mrcnpdlk\Teryt\Exception\Connection
145
     * @throws \mrcnpdlk\Teryt\Exception
146
     */
147
    public function PobierzDateAktualnegoKatSimc()
148
    {
149
        $res = $this->oClient->request('PobierzDateAktualnegoKatSimc');
150
151
        try {
152
            return (new \DateTime($res))->format('Y-m-d');
153
        } catch (\Exception $e) {
154
            return null;
155
        }
156
    }
157
158
    /**
159
     * Data początkowa bieżącego stanu katalogu TERC
160
     *
161
     * @return null|string Data w formacie YYY-MM-DD
162
     * @throws \mrcnpdlk\Teryt\Exception\Connection
163
     * @throws \mrcnpdlk\Teryt\Exception
164
     */
165
    public function PobierzDateAktualnegoKatTerc()
166
    {
167
        $res = $this->oClient->request('PobierzDateAktualnegoKatTerc');
168
169
        try {
170
            return (new \DateTime($res))->format('Y-m-d');
171
        } catch (\Exception $e) {
172
            return null;
173
        }
174
    }
175
176
    /**
177
     * Data początkowa bieżącego stanu katalogu ULIC
178
     *
179
     * @return null|string Data w formacie YYY-MM-DD
180
     * @throws \mrcnpdlk\Teryt\Exception\Connection
181
     * @throws \mrcnpdlk\Teryt\Exception
182
     */
183
    public function PobierzDateAktualnegoKatUlic()
184
    {
185
        $res = $this->oClient->request('PobierzDateAktualnegoKatUlic');
186
187
        try {
188
            return (new \DateTime($res))->format('Y-m-d');
189
        } catch (\Exception $e) {
190
            return null;
191
        }
192
    }
193
194
    /**
195
     * Lista powiatów i gmin we wskazanym województwie
196
     *
197
     * @param string $provinceId
198
     *
199
     * @return JednostkaTerytorialna[]
200
     * @throws \mrcnpdlk\Teryt\Exception\Connection
201
     * @throws \mrcnpdlk\Teryt\Exception
202
     */
203 1
    public function PobierzGminyiPowDlaWoj(string $provinceId): array
204
    {
205 1
        $answer = [];
206 1
        $res    = $this->oClient->request('PobierzGminyiPowDlaWoj', ['Woj' => $provinceId]);
207 1
        foreach (Helper::getPropertyAsArray($res, 'JednostkaTerytorialna') as $p) {
208 1
            $answer[] = new JednostkaTerytorialna($p);
209
        }
210
211 1
        return $answer;
212
    }
213
214
    /**
215
     * Identyfikatory i nazwy jednostek nomenklatury z wybranego stanu katalogu
216
     *
217
     * @return \SplFileObject
218
     * @throws \RuntimeException
219
     * @throws \LogicException
220
     * @throws \mrcnpdlk\Teryt\Exception\Connection
221
     * @throws \mrcnpdlk\Teryt\Exception
222
     */
223
    public function PobierzKatalogNTS(): \SplFileObject
224
    {
225
        $res     = $this->oClient->request('PobierzKatalogNTS');
226
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
227
        $content = base64_decode($res->plik_zawartosc);
228
229
        return Helper::saveFile($sPath, $content);
230
    }
231
232
    /**
233
     * Dane o miejscowościach z systemu identyfikatorów SIMC z wybranego stanu katalogu w wersji adresowej
234
     *
235
     * @return \SplFileObject
236
     * @throws \RuntimeException
237
     * @throws \LogicException
238
     * @throws \mrcnpdlk\Teryt\Exception\Connection
239
     * @throws \mrcnpdlk\Teryt\Exception
240
     */
241
    public function PobierzKatalogSIMC(): \SplFileObject
242
    {
243
        $res     = $this->oClient->request('PobierzKatalogSIMC');
244
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
245
        $content = base64_decode($res->plik_zawartosc);
246
247
        return Helper::saveFile($sPath, $content);
248
    }
249
250
    /**
251
     * Dane o miejscowościach z systemu identyfikatorów SIMC z wybranego stanu katalogu w wersji adresowej
252
     *
253
     * @return \SplFileObject
254
     * @throws \RuntimeException
255
     * @throws \LogicException
256
     * @throws \mrcnpdlk\Teryt\Exception\Connection
257
     * @throws \mrcnpdlk\Teryt\Exception
258
     */
259
    public function PobierzKatalogSIMCAdr(): \SplFileObject
260
    {
261
        $res     = $this->oClient->request('PobierzKatalogSIMCAdr');
262
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
263
        $content = base64_decode($res->plik_zawartosc);
264
265
        return Helper::saveFile($sPath, $content);
266
    }
267
268
    /**
269
     * Dane o miejscowościach z systemu identyfikatorów SIMC z wybranego stanu katalogu w wersji adresowej
270
     *
271
     * @return \SplFileObject
272
     * @throws \RuntimeException
273
     * @throws \LogicException
274
     * @throws \mrcnpdlk\Teryt\Exception\Connection
275
     * @throws \mrcnpdlk\Teryt\Exception
276
     */
277
    public function PobierzKatalogSIMCStat(): \SplFileObject
278
    {
279
        $res     = $this->oClient->request('PobierzKatalogSIMCStat');
280
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
281
        $content = base64_decode($res->plik_zawartosc);
282
283
        return Helper::saveFile($sPath, $content);
284
    }
285
286
    /**
287
     * Dane z systemu identyfikatorów TERC z wybranego stanu katalogu w wersji urzędowej
288
     *
289
     * @return \SplFileObject
290
     * @throws \RuntimeException
291
     * @throws \LogicException
292
     * @throws \mrcnpdlk\Teryt\Exception\Connection
293
     * @throws \mrcnpdlk\Teryt\Exception
294
     */
295
    public function PobierzKatalogTERC(): \SplFileObject
296
    {
297
        $res     = $this->oClient->request('PobierzKatalogTERC');
298
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
299
        $content = base64_decode($res->plik_zawartosc);
300
301
        return Helper::saveFile($sPath, $content);
302
    }
303
304
    /**
305
     * Dane z systemu identyfikatorów TERC z wybranego stanu katalogu w wersji adresowej
306
     *
307
     * @return \SplFileObject
308
     * @throws \RuntimeException
309
     * @throws \LogicException
310
     * @throws \mrcnpdlk\Teryt\Exception\Connection
311
     * @throws \mrcnpdlk\Teryt\Exception
312
     */
313
    public function PobierzKatalogTERCAdr(): \SplFileObject
314
    {
315
        $res     = $this->oClient->request('PobierzKatalogTERCAdr');
316
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
317
        $content = base64_decode($res->plik_zawartosc);
318
319
        return Helper::saveFile($sPath, $content);
320
    }
321
322
    /**
323
     * Katalog ulic dla wskazanego stanu w wersji urzędowej
324
     *
325
     * @return \SplFileObject
326
     * @throws \RuntimeException
327
     * @throws \LogicException
328
     * @throws \mrcnpdlk\Teryt\Exception\Connection
329
     * @throws \mrcnpdlk\Teryt\Exception
330
     */
331
    public function PobierzKatalogULIC(): \SplFileObject
332
    {
333
        $res     = $this->oClient->request('PobierzKatalogULIC');
334
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
335
        $content = base64_decode($res->plik_zawartosc);
336
337
        return Helper::saveFile($sPath, $content);
338
    }
339
340
    /**
341
     * Katalog ulic dla wskazanego stanu w wersji adresowej
342
     *
343
     * @return \SplFileObject
344
     * @throws \RuntimeException
345
     * @throws \LogicException
346
     * @throws \mrcnpdlk\Teryt\Exception\Connection
347
     * @throws \mrcnpdlk\Teryt\Exception
348
     */
349
    public function PobierzKatalogULICAdr(): \SplFileObject
350
    {
351
        $res     = $this->oClient->request('PobierzKatalogULICAdr');
352
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
353
        $content = base64_decode($res->plik_zawartosc);
354
355
        return Helper::saveFile($sPath, $content);
356
    }
357
358
    /**
359
     * Katalog ulic dla wskazanego stanu w wersji urzędowej zmodyfikowany dla miast posiadający delegatury
360
     *
361
     * @return \SplFileObject
362
     * @throws \RuntimeException
363
     * @throws \LogicException
364
     * @throws \mrcnpdlk\Teryt\Exception\Connection
365
     * @throws \mrcnpdlk\Teryt\Exception
366
     */
367
    public function PobierzKatalogULICBezDzielnic(): \SplFileObject
368
    {
369
        $res     = $this->oClient->request('PobierzKatalogULICBezDzielnic');
370
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
371
        $content = base64_decode($res->plik_zawartosc);
372
373
        return Helper::saveFile($sPath, $content);
374
    }
375
376
    /**
377
     * Katalog rodzajów miejscowości dla wskazanego stanu
378
     *
379
     * @return \SplFileObject
380
     * @throws \RuntimeException
381
     * @throws \LogicException
382
     * @throws \mrcnpdlk\Teryt\Exception\Connection
383
     * @throws \mrcnpdlk\Teryt\Exception
384
     */
385 1
    public function PobierzKatalogWMRODZ(): \SplFileObject
386
    {
387 1
        $res     = $this->oClient->request('PobierzKatalogWMRODZ');
388 1
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
389 1
        $content = base64_decode($res->plik_zawartosc);
390
391 1
        return Helper::saveFile($sPath, $content);
392
    }
393
394
    /**
395
     * Lista gmin we wskazanym powiecie
396
     *
397
     * @param string $provinceId
398
     * @param string $districtId
399
     *
400
     * @return JednostkaTerytorialna[]
401
     * @throws \mrcnpdlk\Teryt\Exception\Connection
402
     * @throws \mrcnpdlk\Teryt\Exception
403
     */
404 1
    public function PobierzListeGmin(string $provinceId, string $districtId): array
405
    {
406 1
        $answer = [];
407 1
        $res    = $this->oClient->request('PobierzListeGmin', ['Woj' => $provinceId, 'Pow' => $districtId]);
408 1
        foreach (Helper::getPropertyAsArray($res, 'JednostkaTerytorialna') as $p) {
409 1
            $answer[] = new JednostkaTerytorialna($p);
410
        }
411
412 1
        return $answer;
413
    }
414
415
    /**
416
     * Lista gmin w powiecie
417
     *
418
     * @param string $districtId  dwuznakowy symbol powiatu
419
     * @param string $subregionId dwuznakowy symbol podregionu
420
     *
421
     * @return JednostkaNomenklaturyNTS[]
422
     * @throws \mrcnpdlk\Teryt\Exception\Connection
423
     * @throws \mrcnpdlk\Teryt\Exception
424
     */
425 1
    public function PobierzListeGminPowiecie(string $districtId, string $subregionId): array
426
    {
427 1
        $answer = [];
428 1
        $res    = $this->oClient->request('PobierzListeGminPowiecie', ['Pow' => $districtId, 'Podreg' => $subregionId]);
429 1
        foreach (Helper::getPropertyAsArray($res, 'JednostkaNomenklaturyNTS') as $p) {
430 1
            $answer[] = new JednostkaNomenklaturyNTS($p);
431
        }
432
433 1
        return $answer;
434
    }
435
436
    /**
437
     * Lista miejscowości znajdujących się we wskazanej gminie.
438
     * Wyszukiwanie odbywa się z uwzględnieniem nazw
439
     *
440
     * @param string $provinceName
441
     * @param string $districtName
442
     * @param string $communeName
443
     *
444
     * @return Miejscowosc[]
445
     * @throws \mrcnpdlk\Teryt\Exception\Connection
446
     * @throws \mrcnpdlk\Teryt\Exception
447
     */
448
    public function PobierzListeMiejscowosciWGminie(string $provinceName, string $districtName, string $communeName): array
449
    {
450
        $answer = [];
451
        $res    = $this->oClient->request('PobierzListeMiejscowosciWGminie',
452
            [
453
                'Wojewodztwo' => $provinceName,
454
                'Powiat'      => $districtName,
455
                'Gmina'       => $communeName,
456
            ]);
457
        foreach (Helper::getPropertyAsArray($res, 'Miejscowosc') as $p) {
458
            $answer[] = new Miejscowosc($p);
459
        }
460
461
        return $answer;
462
    }
463
464
    /**
465
     * Lista miejscowości znajdujących się we wskazanej gminie.
466
     * Wyszukiwanie odbywa się z uwzględnieniem symboli
467
     *
468
     * @param int $tercId
469
     *
470
     * @return Miejscowosc[]
471
     * @throws \mrcnpdlk\Teryt\Exception\Connection
472
     * @throws \mrcnpdlk\Teryt\Exception
473
     */
474
    public function PobierzListeMiejscowosciWRodzajuGminy(int $tercId): array
475
    {
476
        $answer = [];
477
        $oTerc  = new Terc($tercId);
478
        $res    = $this->oClient->request('PobierzListeMiejscowosciWRodzajuGminy',
479
            [
480
                'symbolWoj'  => $oTerc->getProvinceId(),
481
                'symbolPow'  => $oTerc->getDistrictId(),
482
                'symbolGmi'  => $oTerc->getCommuneId(),
483
                'symbolRodz' => $oTerc->getCommuneTypeId(),
484
            ]);
485
        foreach (Helper::getPropertyAsArray($res, 'Miejscowosc') as $p) {
486
            $answer[] = new Miejscowosc($p);
487
        }
488
489
        return $answer;
490
    }
491
492
    /**
493
     * Lista podregionów w województwie
494
     *
495
     * @param string $provinceId Dwuznakowy symbol województwa
496
     *
497
     * @return JednostkaNomenklaturyNTS[]
498
     * @throws \mrcnpdlk\Teryt\Exception\Connection
499
     * @throws \mrcnpdlk\Teryt\Exception
500
     */
501 1
    public function PobierzListePodregionow(string $provinceId): array
502
    {
503 1
        $answer = [];
504 1
        $res    = $this->oClient->request('PobierzListePodregionow', ['Woj' => $provinceId]);
505 1
        foreach (Helper::getPropertyAsArray($res, 'JednostkaNomenklaturyNTS') as $p) {
506 1
            $answer[] = new JednostkaNomenklaturyNTS($p);
507
        }
508
509 1
        return $answer;
510
    }
511
512
    /**
513
     * Pobieranie listy powiatów dla danego województwa
514
     *
515
     * @param string $provinceId
516
     *
517
     * @return JednostkaTerytorialna[]
518
     * @throws \mrcnpdlk\Teryt\Exception\Connection
519
     * @throws \mrcnpdlk\Teryt\Exception
520
     */
521 2
    public function PobierzListePowiatow(string $provinceId): array
522
    {
523 2
        $answer = [];
524 2
        $res    = $this->oClient->request('PobierzListePowiatow', ['Woj' => $provinceId]);
525 2
        foreach (Helper::getPropertyAsArray($res, 'JednostkaTerytorialna') as $p) {
526 2
            $answer[] = new JednostkaTerytorialna($p);
527
        }
528
529 2
        return $answer;
530
    }
531
532
    /**
533
     * Lista powiatów w podregionie
534
     *
535
     * @param string $subregionId Dwuznakowy symbol podregionu
536
     *
537
     * @return JednostkaNomenklaturyNTS[]
538
     * @throws \mrcnpdlk\Teryt\Exception\Connection
539
     * @throws \mrcnpdlk\Teryt\Exception
540
     */
541 1
    public function PobierzListePowiatowWPodregionie(string $subregionId): array
542
    {
543 1
        $answer = [];
544 1
        $res    = $this->oClient->request('PobierzListePowiatowWPodregionie', ['Podreg' => $subregionId]);
545 1
        foreach (Helper::getPropertyAsArray($res, 'JednostkaNomenklaturyNTS') as $p) {
546 1
            $answer[] = new JednostkaNomenklaturyNTS($p);
547
        }
548
549 1
        return $answer;
550
    }
551
552
    /**
553
     * Lista regionów
554
     *
555
     * @return JednostkaNomenklaturyNTS[]
556
     * @throws \mrcnpdlk\Teryt\Exception\Connection
557
     * @throws \mrcnpdlk\Teryt\Exception
558
     */
559 1
    public function PobierzListeRegionow(): array
560
    {
561 1
        $answer = [];
562 1
        $res    = $this->oClient->request('PobierzListeRegionow');
563 1
        foreach (Helper::getPropertyAsArray($res, 'JednostkaNomenklaturyNTS') as $p) {
564 1
            $answer[] = new JednostkaNomenklaturyNTS($p);
565
        }
566
567 1
        return $answer;
568
    }
569
570
    /**
571
     * Lista ulic we wskazanej miejscowości
572
     *
573
     * @param int    $tercId
574
     * @param string $cityId
575
     * @param bool   $asAddress
576
     *
577
     * @return UlicaDrzewo[]
578
     * @throws \mrcnpdlk\Teryt\Exception\Connection
579
     * @throws \mrcnpdlk\Teryt\Exception
580
     */
581
    public function PobierzListeUlicDlaMiejscowosci(int $tercId, string $cityId, bool $asAddress = false): array
582
    {
583
        $answer = [];
584
        $oTerc  = new Terc($tercId);
585
        $res    = $this->oClient->request('PobierzListeUlicDlaMiejscowosci',
586
            [
587
                'woj'               => $oTerc->getProvinceId(),
588
                'pow'               => $oTerc->getDistrictId(),
589
                'gmi'               => $oTerc->getCommuneId(),
590
                'rodzaj'            => $oTerc->getCommuneTypeId(),
591
                'msc'               => $cityId,
592
                'czyWersjaUrzedowa' => !$asAddress,
593
                'czyWersjaAdresowa' => $asAddress,
594
            ]
595
        );
596
        foreach (Helper::getPropertyAsArray($res, 'UlicaDrzewo') as $p) {
597
            $answer[] = new UlicaDrzewo($p);
598
        }
599
600
        return $answer;
601
    }
602
603
    /**
604
     * Lista województw
605
     *
606
     * @return JednostkaTerytorialna[]
607
     * @throws \mrcnpdlk\Teryt\Exception\Connection
608
     * @throws \mrcnpdlk\Teryt\Exception
609
     */
610 4
    public function PobierzListeWojewodztw(): array
611
    {
612 4
        $answer = [];
613 4
        $res    = $this->oClient->request('PobierzListeWojewodztw');
614 3
        foreach (Helper::getPropertyAsArray($res, 'JednostkaTerytorialna') as $p) {
615 3
            $answer[] = new JednostkaTerytorialna($p);
616
        }
617
618 3
        return $answer;
619
    }
620
621
    /**
622
     * Lista województw regionie
623
     *
624
     * @param string $regionId Jednoznakowy symbol regionu
625
     *
626
     * @return JednostkaNomenklaturyNTS[]
627
     * @throws \mrcnpdlk\Teryt\Exception\Connection
628
     * @throws \mrcnpdlk\Teryt\Exception
629
     */
630 1
    public function PobierzListeWojewodztwWRegionie(string $regionId): array
631
    {
632 1
        $answer = [];
633 1
        $res    = $this->oClient->request('PobierzListeWojewodztwWRegionie', ['Reg' => $regionId]);
634 1
        foreach (Helper::getPropertyAsArray($res, 'JednostkaNomenklaturyNTS') as $p) {
635 1
            $answer[] = new JednostkaNomenklaturyNTS($p);
636
        }
637
638 1
        return $answer;
639
    }
640
641
    /**
642
     * Zwraca listę cech obiektów z katalogu ulic
643
     *
644
     * @return string[]
645
     * @throws \mrcnpdlk\Teryt\Exception\Connection
646
     * @throws \mrcnpdlk\Teryt\Exception
647
     */
648 1
    public function PobierzSlownikCechULIC(): array
649
    {
650 1
        $res = $this->oClient->request('PobierzSlownikCechULIC');
651
652 1
        return Helper::getPropertyAsArray($res, 'string');
653
    }
654
655
    /**
656
     * Zwraca listę rodzajów jednostek
657
     *
658
     * @return string[]
659
     * @throws \mrcnpdlk\Teryt\Exception\Connection
660
     * @throws \mrcnpdlk\Teryt\Exception
661
     */
662
    public function PobierzSlownikRodzajowJednostek(): array
663
    {
664
        $res = $this->oClient->request('PobierzSlownikRodzajowJednostek');
665
666
        return Helper::getPropertyAsArray($res, 'string');
667
    }
668
669
    /**
670
     * Zwraca listę rodzajów miejscowości
671
     *
672
     * @return RodzajMiejscowosci[]
673
     * @throws \mrcnpdlk\Teryt\Exception\Connection
674
     * @throws \mrcnpdlk\Teryt\Exception
675
     */
676 1
    public function PobierzSlownikRodzajowSIMC(): array
677
    {
678 1
        $answer = [];
679 1
        $res    = $this->oClient->request('PobierzSlownikRodzajowSIMC');
680 1
        foreach (Helper::getPropertyAsArray($res, 'RodzajMiejscowosci') as $p) {
681 1
            $answer[] = new RodzajMiejscowosci($p);
682
        }
683
684 1
        return $answer;
685
    }
686
687
    /**
688
     * Zmiany w katalogu TERC w wersji adresowej rejestru
689
     *
690
     * @param \DateTime      $fromDate
691
     * @param \DateTime|null $toDate
692
     *
693
     * @return \SplFileObject
694
     * @throws \RuntimeException
695
     * @throws \LogicException
696
     * @throws \mrcnpdlk\Teryt\Exception\Connection
697
     * @throws \mrcnpdlk\Teryt\Exception
698
     */
699
    public function PobierzZmianyNTS(\DateTime $fromDate, \DateTime $toDate = null): \SplFileObject
700
    {
701
        $toDate  = $toDate ?? new \DateTime();
702
        $res     = $this->oClient->request(
703
            'PobierzZmianyNTS',
704
            [
705
                'stanod' => $fromDate->format('Y-m-d'),
706
                'stando' => $toDate->format('Y-m-d'),
707
            ],
708
            false);
709
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
710
        $content = base64_decode($res->plik_zawartosc);
711
712
        return Helper::saveFile($sPath, $content);
713
    }
714
715
    /**
716
     * Zmiany w katalogu SIMC w wersji adresowej rejestru
717
     *
718
     * @param \DateTime      $fromDate
719
     * @param \DateTime|null $toDate
720
     *
721
     * @return \SplFileObject
722
     * @throws \RuntimeException
723
     * @throws \LogicException
724
     * @throws \mrcnpdlk\Teryt\Exception\Connection
725
     * @throws \mrcnpdlk\Teryt\Exception
726
     */
727
    public function PobierzZmianySimcAdresowy(\DateTime $fromDate, \DateTime $toDate = null): \SplFileObject
728
    {
729
        $toDate  = $toDate ?? new \DateTime();
730
        $res     = $this->oClient->request(
731
            'PobierzZmianySimcAdresowy',
732
            [
733
                'stanod' => $fromDate->format('Y-m-d'),
734
                'stando' => $toDate->format('Y-m-d'),
735
            ],
736
            false);
737
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
738
        $content = base64_decode($res->plik_zawartosc);
739
740
        return Helper::saveFile($sPath, $content);
741
    }
742
743
    /**
744
     * Zmiany w katalogu SIMC w wersji statystycznej rejestru
745
     *
746
     * @param \DateTime      $fromDate
747
     * @param \DateTime|null $toDate
748
     *
749
     * @return \SplFileObject
750
     * @throws \RuntimeException
751
     * @throws \LogicException
752
     * @throws \mrcnpdlk\Teryt\Exception\Connection
753
     * @throws \mrcnpdlk\Teryt\Exception
754
     */
755
    public function PobierzZmianySimcStatystyczny(\DateTime $fromDate, \DateTime $toDate = null): \SplFileObject
756
    {
757
        $toDate  = $toDate ?? new \DateTime();
758
        $res     = $this->oClient->request(
759
            'PobierzZmianySimcStatystyczny',
760
            [
761
                'stanod' => $fromDate->format('Y-m-d'),
762
                'stando' => $toDate->format('Y-m-d'),
763
            ],
764
            false);
765
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
766
        $content = base64_decode($res->plik_zawartosc);
767
768
        return Helper::saveFile($sPath, $content);
769
    }
770
771
    /**
772
     * Zmiany w katalogu SIMC w wersji urzędowej rejestru
773
     *
774
     * @param \DateTime      $fromDate
775
     * @param \DateTime|null $toDate
776
     *
777
     * @return \SplFileObject
778
     * @throws \RuntimeException
779
     * @throws \LogicException
780
     * @throws \mrcnpdlk\Teryt\Exception\Connection
781
     * @throws \mrcnpdlk\Teryt\Exception
782
     */
783
    public function PobierzZmianySimcUrzedowy(\DateTime $fromDate, \DateTime $toDate = null): \SplFileObject
784
    {
785
        $toDate  = $toDate ?? new \DateTime();
786
        $res     = $this->oClient->request(
787
            'PobierzZmianySimcUrzedowy',
788
            [
789
                'stanod' => $fromDate->format('Y-m-d'),
790
                'stando' => $toDate->format('Y-m-d'),
791
            ],
792
            false);
793
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
794
        $content = base64_decode($res->plik_zawartosc);
795
796
        return Helper::saveFile($sPath, $content);
797
    }
798
799
    /**
800
     * Zmiany w katalogu TERC w wersji adresowej rejestru
801
     *
802
     * @param \DateTime      $fromDate
803
     * @param \DateTime|null $toDate
804
     *
805
     * @return \SplFileObject
806
     * @throws \RuntimeException
807
     * @throws \LogicException
808
     * @throws \mrcnpdlk\Teryt\Exception\Connection
809
     * @throws \mrcnpdlk\Teryt\Exception
810
     */
811 1
    public function PobierzZmianyTercAdresowy(\DateTime $fromDate, \DateTime $toDate = null): \SplFileObject
812
    {
813 1
        $toDate  = $toDate ?? new \DateTime();
814 1
        $res     = $this->oClient->request(
815 1
            'PobierzZmianyTercAdresowy',
816
            [
817 1
                'stanod' => $fromDate->format('Y-m-d'),
818 1
                'stando' => $toDate->format('Y-m-d'),
819
            ],
820 1
            false);
821 1
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
822 1
        $content = base64_decode($res->plik_zawartosc);
823
824 1
        return Helper::saveFile($sPath, $content);
825
    }
826
827
    /**
828
     * Zmiany w katalogu TERC w wersji urzędowej rejestru
829
     *
830
     * @param \DateTime      $fromDate
831
     * @param \DateTime|null $toDate
832
     *
833
     * @return \SplFileObject
834
     * @throws \RuntimeException
835
     * @throws \LogicException
836
     * @throws \mrcnpdlk\Teryt\Exception\Connection
837
     * @throws \mrcnpdlk\Teryt\Exception
838
     */
839
    public function PobierzZmianyTercUrzedowy(\DateTime $fromDate, \DateTime $toDate = null): \SplFileObject
840
    {
841
        $toDate  = $toDate ?? new \DateTime();
842
        $res     = $this->oClient->request(
843
            'PobierzZmianyTercUrzedowy',
844
            [
845
                'stanod' => $fromDate->format('Y-m-d'),
846
                'stando' => $toDate->format('Y-m-d'),
847
            ],
848
            false);
849
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
850
        $content = base64_decode($res->plik_zawartosc);
851
852
        return Helper::saveFile($sPath, $content);
853
    }
854
855
    /**
856
     * Zmiany w katalogu ULIC w wersji adresowej rejestru
857
     *
858
     * @param \DateTime      $fromDate
859
     * @param \DateTime|null $toDate
860
     *
861
     * @return \SplFileObject
862
     * @throws \RuntimeException
863
     * @throws \LogicException
864
     * @throws \mrcnpdlk\Teryt\Exception\Connection
865
     * @throws \mrcnpdlk\Teryt\Exception
866
     */
867
    public function PobierzZmianyUlicAdresowy(\DateTime $fromDate, \DateTime $toDate = null): \SplFileObject
868
    {
869
        $toDate  = $toDate ?? new \DateTime();
870
        $res     = $this->oClient->request(
871
            'PobierzZmianyUlicAdresowy',
872
            [
873
                'stanod' => $fromDate->format('Y-m-d'),
874
                'stando' => $toDate->format('Y-m-d'),
875
            ],
876
            false);
877
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
878
        $content = base64_decode($res->plik_zawartosc);
879
880
        return Helper::saveFile($sPath, $content);
881
    }
882
883
    /**
884
     * Zmiany w katalogu ULIC w wersji urzędowej rejestru
885
     *
886
     * @param \DateTime      $fromDate
887
     * @param \DateTime|null $toDate
888
     *
889
     * @return \SplFileObject
890
     * @throws \RuntimeException
891
     * @throws \LogicException
892
     * @throws \mrcnpdlk\Teryt\Exception\Connection
893
     * @throws \mrcnpdlk\Teryt\Exception
894
     */
895
    public function PobierzZmianyUlicUrzedowy(\DateTime $fromDate, \DateTime $toDate = null): \SplFileObject
896
    {
897
        $toDate  = $toDate ?? new \DateTime();
898
        $res     = $this->oClient->request(
899
            'PobierzZmianyUlicUrzedowy',
900
            [
901
                'stanod' => $fromDate->format('Y-m-d'),
902
                'stando' => $toDate->format('Y-m-d'),
903
            ],
904
            false);
905
        $sPath   = sprintf('%s/%s.zip', sys_get_temp_dir(), $res->nazwa_pliku);
906
        $content = base64_decode($res->plik_zawartosc);
907
908
        return Helper::saveFile($sPath, $content);
909
    }
910
911
    /**
912
     * Weryfikuje istnienie wskazanego obiektu w bazie TERYT do poziomu
913
     * miejscowości. Weryfikacja odbywa się za pomoca identyfikatorów
914
     *
915
     * @param string $cityId
916
     *
917
     * @return ZweryfikowanyAdresBezUlic
918
     * @throws \mrcnpdlk\Teryt\Exception\Connection
919
     * @throws \mrcnpdlk\Teryt\Exception\NotFound
920
     * @throws \mrcnpdlk\Teryt\Exception
921
     */
922 1
    public function WeryfikujAdresDlaMiejscowosci(string $cityId): ZweryfikowanyAdresBezUlic
923
    {
924 1
        $res   = $this->oClient->request('WeryfikujAdresDlaMiejscowosci', ['symbolMsc' => $cityId]);
925 1
        $oData = Helper::getPropertyAsObject($res, 'ZweryfikowanyAdresBezUlic');
926
927 1
        return new ZweryfikowanyAdresBezUlic($oData);
928
    }
929
930
    /**
931
     * Weryfikuje istnienie wskazanego obiektu w bazie TERYT,w wersji
932
     * adresowej rejestru do poziomu miejscowości. Weryfikacja odbywa się za pomoca identyfikatorów
933
     *
934
     * @param string $cityId
935
     *
936
     * @return ZweryfikowanyAdresBezUlic
937
     * @throws \mrcnpdlk\Teryt\Exception\Connection
938
     * @throws \mrcnpdlk\Teryt\Exception\NotFound
939
     * @throws \mrcnpdlk\Teryt\Exception
940
     */
941 1
    public function WeryfikujAdresDlaMiejscowosciAdresowy(string $cityId): ZweryfikowanyAdresBezUlic
942
    {
943 1
        $res   = $this->oClient->request('WeryfikujAdresDlaMiejscowosciAdresowy', ['symbolMsc' => $cityId]);
944 1
        $oData = Helper::getPropertyAsObject($res, 'ZweryfikowanyAdresBezUlic');
945
946 1
        return new ZweryfikowanyAdresBezUlic($oData);
947
    }
948
949
    /**
950
     * Weryfikuje istnienie wskazanego obiektu w bazie
951
     * TERYT do poziomu ulic.Weryfikacja odbywa się za pomoca nazw
952
     *
953
     * @param string $cityId
954
     * @param string $streetId
955
     *
956
     * @return ZweryfikowanyAdres
957
     * @throws \mrcnpdlk\Teryt\Exception\Connection
958
     * @throws \mrcnpdlk\Teryt\Exception\NotFound
959
     * @throws \mrcnpdlk\Teryt\Exception
960
     */
961 1
    public function WeryfikujAdresDlaUlic(string $cityId, string $streetId): ZweryfikowanyAdres
962
    {
963 1
        $res   = $this->oClient->request('WeryfikujAdresDlaUlic', ['symbolMsc' => $cityId, 'SymUl' => $streetId]);
964 1
        $oData = Helper::getPropertyAsObject($res, 'ZweryfikowanyAdres');
965
966 1
        return new ZweryfikowanyAdres($oData);
967
    }
968
969
    /**
970
     * Weryfikuje istnienie wskazanego obiektu w bazie
971
     * TERYT do poziomu ulic w wersji adresowej. Weryfikacja odbywa się za pomoca nazw
972
     *
973
     * @param string $cityId
974
     * @param string $streetId
975
     *
976
     * @return ZweryfikowanyAdres
977
     * @throws \mrcnpdlk\Teryt\Exception\Connection
978
     * @throws \mrcnpdlk\Teryt\Exception\NotFound
979
     * @throws \mrcnpdlk\Teryt\Exception
980
     */
981 1
    public function WeryfikujAdresDlaUlicAdresowy(string $cityId, string $streetId): ZweryfikowanyAdres
982
    {
983 1
        $res   = $this->oClient->request('WeryfikujAdresDlaUlicAdresowy', ['symbolMsc' => $cityId, 'SymUl' => $streetId]);
984 1
        $oData = Helper::getPropertyAsObject($res, 'ZweryfikowanyAdres');
985
986 1
        return new ZweryfikowanyAdres($oData);
987
    }
988
989
    /**
990
     * Weryfikuje istnienie wskazanego obiektu w bazie TERYT do poziomu
991
     * miejscowości. Weryfikacja odbywa się za pomoca nazw
992
     *
993
     * Nazwa miejscowości nie musibyć pełna - nastąpi wtedy wyszkiwanie pełnokontekstowe
994
     * w wtórym zostanie zwrócona tablica wyników
995
     *
996
     * @param string      $provinceName Nazwa województwa
997
     * @param string      $districtName Nazwa powiatu
998
     * @param string      $communeName  Nazwa gminy
999
     * @param string      $cityName     Nazwa miejscowości
1000
     * @param string|null $cityTypeName Nazwa typu miejscowości
1001
     *
1002
     * @return ZweryfikowanyAdresBezUlic[]
1003
     * @throws \mrcnpdlk\Teryt\Exception\Connection
1004
     * @throws \mrcnpdlk\Teryt\Exception
1005
     */
1006 1
    public function WeryfikujAdresWmiejscowosci(
1007
        string $provinceName,
1008
        string $districtName,
1009
        string $communeName,
1010
        string $cityName,
1011
        string $cityTypeName = null
1012
    ): array {
1013 1
        $answer = [];
1014 1
        $res    = $this->oClient->request('WeryfikujAdresWmiejscowosci',
1015
            [
1016 1
                'Wojewodztwo' => $provinceName,
1017 1
                'Powiat'      => $districtName,
1018 1
                'Gmina'       => $communeName,
1019 1
                'Miejscowosc' => $cityName,
1020 1
                'Rodzaj'      => $cityTypeName,
1021
            ]);
1022 1
        foreach (Helper::getPropertyAsArray($res, 'ZweryfikowanyAdresBezUlic') as $p) {
1023 1
            $answer[] = new ZweryfikowanyAdresBezUlic($p);
1024
        }
1025
1026 1
        return $answer;
1027
    }
1028
1029
    /**
1030
     * Weryfikuje istnienie wskazanego obiektu w bazie TERYT w wersji adresowej do poziomu
1031
     * miejscowości. Weryfikacja odbywa się za pomoca nazw
1032
     *
1033
     * Nazwa miejscowości nie musibyć pełna - nastąpi wtedy wyszkiwanie pełnokontekstowe
1034
     * w wtórym zostanie zwrócona tablica wyników
1035
     *
1036
     * @param string      $provinceName Nazwa województwa
1037
     * @param string      $districtName Nazwa powiatu
1038
     * @param string      $communeName  Nazwa gminy
1039
     * @param string      $cityName     Nazwa miejscowości
1040
     * @param string|null $cityTypeName Nazwa typu miejscowości
1041
     *
1042
     * @return ZweryfikowanyAdresBezUlic[]
1043
     * @throws \mrcnpdlk\Teryt\Exception\Connection
1044
     * @throws \mrcnpdlk\Teryt\Exception
1045
     */
1046 1
    public function WeryfikujAdresWmiejscowosciAdresowy(
1047
        string $provinceName,
1048
        string $districtName,
1049
        string $communeName,
1050
        string $cityName,
1051
        string $cityTypeName = null
1052
    ): array {
1053 1
        $answer = [];
1054 1
        $res    = $this->oClient->request('WeryfikujAdresWmiejscowosciAdresowy',
1055
            [
1056 1
                'Wojewodztwo' => $provinceName,
1057 1
                'Powiat'      => $districtName,
1058 1
                'Gmina'       => $communeName,
1059 1
                'Miejscowosc' => $cityName,
1060 1
                'Rodzaj'      => $cityTypeName,
1061
            ]);
1062 1
        foreach (Helper::getPropertyAsArray($res, 'ZweryfikowanyAdresBezUlic') as $p) {
1063 1
            $answer[] = new ZweryfikowanyAdresBezUlic($p);
1064
        }
1065
1066 1
        return $answer;
1067
    }
1068
1069
    /**
1070
     * Weryfikuje istnienie wskazanego obiektu w bazie TERYT do poziomu ulic.
1071
     * Weryfikacja odbywa się za pomoca nazw
1072
     *
1073
     * @param string      $provinceName
1074
     * @param string      $districtName
1075
     * @param string      $communeName
1076
     * @param string      $cityName
1077
     * @param string|null $cityTypeName
1078
     * @param string      $streetName
1079
     *
1080
     * @return ZweryfikowanyAdres[]
1081
     * @todo empty response
1082
     * @throws \mrcnpdlk\Teryt\Exception\Connection
1083
     * @throws \mrcnpdlk\Teryt\Exception
1084
     */
1085
    public function WeryfikujNazwaAdresUlic(
1086
        string $provinceName,
1087
        string $districtName,
1088
        string $communeName,
1089
        string $cityName,
1090
        string $cityTypeName = null,
1091
        string $streetName
1092
    ): array {
1093
        $answer = [];
1094
        $res    = $this->oClient->request('WeryfikujNazwaAdresUlic',
1095
            [
1096
                'nazwaWoj'         => $provinceName,
1097
                'nazwaPow'         => $districtName,
1098
                'nazwaGmi'         => $communeName,
1099
                'nazwaMiejscowosc' => $cityName,
1100
                'rodzajMiejsc'     => $cityTypeName,
1101
                'nazwaUlicy'       => $streetName,
1102
            ]);
1103
1104
        $tData = Helper::getPropertyAsArray($res, 'ZweryfikowanyAdres');
1105
1106
        foreach ($tData as $datum) {
1107
            $answer[] = new ZweryfikowanyAdres($datum);
1108
        }
1109
1110
        return $answer;
1111
    }
1112
1113
    /**
1114
     * Weryfikuje istnienie wskazanego obiektu w bazie TERYT do poziomu ulic w wersji adresowej rejestru.
1115
     * Weryfikacja odbywa się za pomoca nazw
1116
     *
1117
     * @param string      $provinceName
1118
     * @param string      $districtName
1119
     * @param string      $communeName
1120
     * @param string      $cityName
1121
     * @param string|null $cityTypeName
1122
     * @param string      $streetName
1123
     *
1124
     * @return ZweryfikowanyAdres[]
1125
     * @throws \mrcnpdlk\Teryt\Exception\Connection
1126
     * @throws \mrcnpdlk\Teryt\Exception
1127
     */
1128
    public function WeryfikujNazwaAdresUlicAdresowy(
1129
        string $provinceName,
1130
        string $districtName,
1131
        string $communeName,
1132
        string $cityName,
1133
        string $cityTypeName = null,
1134
        string $streetName
1135
    ): array {
1136
        $answer = [];
1137
        $res    = $this->oClient->request('WeryfikujNazwaAdresUlicAdresowy',
1138
            [
1139
                'nazwaWoj'         => $provinceName,
1140
                'nazwaPow'         => $districtName,
1141
                'nazwaGmi'         => $communeName,
1142
                'nazwaMiejscowosc' => $cityName,
1143
                'rodzajMiejsc'     => $cityTypeName,
1144
                'nazwaUlicy'       => $streetName,
1145
            ]);
1146
1147
        $tData = Helper::getPropertyAsArray($res, 'ZweryfikowanyAdres');
1148
1149
        foreach ($tData as $datum) {
1150
            $answer[] = new ZweryfikowanyAdres($datum);
1151
        }
1152
1153
        return $answer;
1154
    }
1155
1156
    /**
1157
     * Zwraca listę znalezionych jednostek w katalagu TERC
1158
     *
1159
     * @param string $name
1160
     *
1161
     * @return JednostkaPodzialuTerytorialnego[]
1162
     * @todo Metoda zwraca 0 wyników
1163
     * @throws \mrcnpdlk\Teryt\Exception\Connection
1164
     * @throws \mrcnpdlk\Teryt\Exception
1165
     */
1166
    public function WyszukajJPT(string $name): array
1167
    {
1168
        $answer = [];
1169
        $res    = $this->oClient->request('WyszukajJPT', ['nazwa' => $name], false);
1170
        foreach (Helper::getPropertyAsArray($res, 'JednostkaPodzialuTerytorialnego') as $p) {
1171
            $answer[] = new JednostkaPodzialuTerytorialnego($p);
1172
        }
1173
1174
        return $answer;
1175
    }
1176
1177
    /**
1178
     * Zwraca listę znalezionych jednostek w katalagu TERC
1179
     *
1180
     * @param string|null $name     zawiera nazwę wyszukiwanej jednostki
1181
     * @param string|null $category określa kategorię wyszukiwanych jednostek
1182
     * @param string[]    $tSimc    lista identyfikatorów SIMC (cityId)
1183
     * @param string[]    $tTerc    lista identyfikatorów TERC (tercId)
1184
     *
1185
     * @return JednostkaPodzialuTerytorialnego[]
1186
     * @throws \mrcnpdlk\Teryt\Exception\Connection
1187
     * @throws \mrcnpdlk\Teryt\Exception
1188
     */
1189 1
    public function WyszukajJednostkeWRejestrze(
1190
        string $name = null,
1191
        string $category = null,
1192
        array $tSimc = [],
1193
        array $tTerc = []
1194
    ): array {
1195 1
        $answer     = [];
1196 1
        $identyfiks = [];
1197 1
        foreach ($tSimc as $simc) {
1198
            $identyfiks[] = ['simc' => $simc];
1199
        }
1200 1
        foreach ($tTerc as $terc) {
1201 1
            $identyfiks[] = ['terc' => $terc];
1202
        }
1203 1
        $res = $this->oClient->request('WyszukajJednostkeWRejestrze',
1204
            [
1205 1
                'nazwa'      => $name,
1206 1
                'kategoria'  => $category ?? self::CATEGORY_ALL,
1207 1
                'identyfiks' => $identyfiks,
1208
            ]);
1209 1
        foreach (Helper::getPropertyAsArray($res, 'JednostkaPodzialuTerytorialnego') as $p) {
1210 1
            $answer[] = new JednostkaPodzialuTerytorialnego($p);
1211
        }
1212
1213 1
        return $answer;
1214
    }
1215
1216
    /**
1217
     * Zwaraca listę znalezionych miejscowości w katalogu SIMC.
1218
     *
1219
     * @param string|null $cityName
1220
     * @param string|null $cityId
1221
     *
1222
     * @return Miejscowosc[]
1223
     * @throws \mrcnpdlk\Teryt\Exception\Connection
1224
     * @throws \mrcnpdlk\Teryt\Exception
1225
     */
1226
    public function WyszukajMiejscowosc(string $cityName = null, string $cityId = null): array
1227
    {
1228
        $answer = [];
1229
        $res    = $this->oClient->request('WyszukajMiejscowosc',
1230
            ['nazwaMiejscowosci' => $cityName, 'identyfikatorMiejscowosci' => $cityId]);
1231
        foreach (Helper::getPropertyAsArray($res, 'Miejscowosc') as $p) {
1232
            $answer[] = new Miejscowosc($p);
1233
        }
1234
1235
        return $answer;
1236
    }
1237
1238
    /**
1239
     * Zwaraca listę znalezionych miejscowości we wskazanej
1240
     * jednostce podziału terytorialnego
1241
     *
1242
     * @param string $provinceName
1243
     * @param string $districtName
1244
     * @param string $communeName
1245
     * @param string $cityName
1246
     * @param string $cityId
1247
     *
1248
     * @return Miejscowosc[]
1249
     * @throws \mrcnpdlk\Teryt\Exception\Connection
1250
     * @throws \mrcnpdlk\Teryt\Exception
1251
     */
1252
    public function WyszukajMiejscowoscWJPT(
1253
        string $provinceName,
1254
        string $districtName,
1255
        string $communeName,
1256
        string $cityName,
1257
        string $cityId = null
1258
    ): array {
1259
        $answer = [];
1260
        /**
1261
         * @var \stdClass|null $res
1262
         */
1263
        $res = $this->oClient->request('WyszukajMiejscowoscWJPT',
1264
            [
1265
                'nazwaWoj'                  => $provinceName,
1266
                'nazwaPow'                  => $districtName,
1267
                'nazwaGmi'                  => $communeName,
1268
                'nazwaMiejscowosci'         => $cityName,
1269
                'identyfikatorMiejscowosci' => $cityId,
1270
            ]);
1271
        foreach (Helper::getPropertyAsArray($res, 'Miejscowosc') as $p) {
1272
            $answer[] = new Miejscowosc($p);
1273
        }
1274
1275
        return $answer;
1276
    }
1277
1278
    /**
1279
     * Zwaraca listę znalezionych miejscowości we wskazanej jednostcepodziału terytorialnego
1280
     *
1281
     * @param string|null $name         Nazwa miejscowości
1282
     * @param string|null $cityId       ID miejscowości
1283
     * @param string[]    $tSimc        Lista cityId w których szukamy
1284
     * @param string[]    $tTerc        Lista tercId w których szukamy
1285
     * @param string      $cityTypeName Predefiniowany typ wyszukiwania ('000','001','002') stałe: SEARCH_CITY_TYPE_*
1286
     *
1287
     * @return WyszukanaMiejscowosc[]
1288
     * @throws \mrcnpdlk\Teryt\Exception\Connection
1289
     * @throws \mrcnpdlk\Teryt\Exception
1290
     */
1291 2
    public function WyszukajMiejscowoscWRejestrze(
1292
        string $name = null,
1293
        string $cityId = null,
1294
        array $tSimc = [],
1295
        array $tTerc = [],
1296
        string $cityTypeName = NativeApi::SEARCH_CITY_TYPE_ALL
1297
    ): array {
1298 2
        $answer     = [];
1299 2
        $identyfiks = [];
1300 2
        foreach ($tSimc as $simc) {
1301
            $identyfiks[] = ['simc' => $simc];
1302
        }
1303 2
        foreach ($tTerc as $terc) {
1304
            $identyfiks[] = ['terc' => $terc];
1305
        }
1306 2
        $res = $this->oClient->request('WyszukajMiejscowoscWRejestrze',
1307
            [
1308 2
                'nazwa'              => $name,
1309 2
                'rodzajMiejscowosci' => $cityTypeName,
1310 2
                'symbol'             => $cityId,
1311 2
                'identyfiks'         => $identyfiks,
1312
            ]);
1313 2
        foreach (Helper::getPropertyAsArray($res, 'WyszukanaMiejscowosc') as $p) {
1314 1
            $answer[] = new WyszukanaMiejscowosc($p);
1315
        }
1316
1317 1
        return $answer;
1318
    }
1319
1320
    /**
1321
     * Wyszukuje wskazaną ulicę w katalogu ULIC. Wyszukiwanie odbywa się za pomoca nazw
1322
     *
1323
     * @param string|null $streetName
1324
     * @param string|null $streetIdentityName
1325
     * @param string|null $cityName
1326
     *
1327
     * @return Ulica[]
1328
     * @throws \mrcnpdlk\Teryt\Exception\Connection
1329
     * @throws \mrcnpdlk\Teryt\Exception
1330
     */
1331
    public function WyszukajUlice(string $streetName = null, string $streetIdentityName = null, string $cityName = null): array
1332
    {
1333
        $answer = [];
1334
        $res    = $this->oClient->request('WyszukajUlice',
1335
            [
1336
                'nazwaulicy'        => $streetName,
1337
                'cecha'             => $streetIdentityName,
1338
                'nazwamiejscowosci' => $cityName,
1339
            ]);
1340
        foreach (Helper::getPropertyAsArray($res, 'Ulica') as $p) {
1341
            $answer[] = new Ulica($p);
1342
        }
1343
1344
        return $answer;
1345
    }
1346
1347
    /**
1348
     * Wyszukuje wskazaną ulicę w katalogu ULIC
1349
     *
1350
     * @param string|null $name         Nazwa ulicy
1351
     * @param string      $identityName Nazwa cechy, wymagane
1352
     * @param string|null $streetId     ID ulicy
1353
     * @param array       $tSimc        Lista cityId w których szukamy
1354
     * @param array       $tTerc        Lista tercId w których szukamy
1355
     *
1356
     * @return WyszukanaUlica[]
1357
     * @throws \mrcnpdlk\Teryt\Exception\Connection
1358
     * @throws \mrcnpdlk\Teryt\Exception
1359
     */
1360
    public function WyszukajUliceWRejestrze(
1361
        string $name = null,
1362
        string $identityName = 'ul.',
1363
        string $streetId = null,
1364
        array $tSimc = [],
1365
        array $tTerc = []
1366
    ): array {
1367
        $answer     = [];
1368
        $identyfiks = [];
1369
        foreach ($tSimc as $simc) {
1370
            $identyfiks[] = ['simc' => $simc];
1371
        }
1372
        foreach ($tTerc as $terc) {
1373
            $identyfiks[] = ['terc' => $terc];
1374
        }
1375
        $res = $this->oClient->request('WyszukajUliceWRejestrze',
1376
            [
1377
                'nazwa'         => $name,
1378
                'cecha'         => $identityName,
1379
                'identyfikator' => $streetId,
1380
                'identyfiks'    => $identyfiks,
1381
            ]);
1382
        foreach (Helper::getPropertyAsArray($res, 'WyszukanaUlica') as $p) {
1383
            $answer[] = new WyszukanaUlica($p);
1384
        }
1385
1386
        return $answer;
1387
    }
1388
}
1389