NativeApi   F
last analyzed

Complexity

Total Complexity 91

Size/Duplication

Total Lines 1404
Duplicated Lines 0 %

Test Coverage

Coverage 37.97%

Importance

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