-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathObywatelApi.php
93 lines (80 loc) · 3.34 KB
/
ObywatelApi.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
namespace Wruczek\IdStatusTracker;
class ObywatelApi {
private $applicationIdRegex = "/\d{7}\/\d{4}\/\d{7}\/\d{2}$/m";
private $baseUrl = "https://obywatel.gov.pl";
private $applicationCheckEndpoint = "/esrvProxy/proxy/sprawdzStatusWniosku?numerWniosku=%s";
/**
* Returns json describing current status of ID application
* @param $applicationId string
* @param bool $returnAsArray true to returns as array, false to returns as object
* @return object When applicationId is invalid (code 0x01),
* request cannot be made (code 0x02) or returned JSON is invalid (code 0x03)
*/
public function getIdStatus($applicationId, $returnAsArray = false) {
if (!$this->validateApplicationId($applicationId)) {
throw new IdStatusTrackerException("Invalid applicationId", 0x01);
}
$url = sprintf($this->getUrl($this->applicationCheckEndpoint), urlencode($applicationId));
$response = @file_get_contents($url);
if ($response === false) {
throw new IdStatusTrackerException("Error sending request", 0x02);
}
$json = json_decode($response, $returnAsArray);
if ($json === false) {
throw new IdStatusTrackerException("Cannot decode response JSON", 0x03);
}
return $json;
}
/**
* Returns true when $applicationId is valid, otherwise false
* @param $applicationId string applicationId to check
* @return bool
*/
public function validateApplicationId($applicationId) {
return preg_match($this->applicationIdRegex, $applicationId) === 1;
}
/**
* Returns description of the provided applicationState and idState
* @param $applicationState string
* @param $idState string
* @return null|string Returns description as string, null if not found
*/
public function getStatusDescription($applicationState, $idState) {
switch ($applicationState) {
case "WPROWADZONY":
return "Wniosek o dowód przyjęty w urzędzie";
case "ZAWIESZONY":
case "ODMOWA_ART_32":
case "BEZ_ROZPOZNANIA":
case "ODWOLANIE":
case "ZAKONCZONY_ODMOWNIE":
return "Skontaktuj się z urzędem, w którym składałeś wniosek";
case "NOWY":
case "PRZYJETY_PRZEZ_SPD":
case "PRZEKAZANY_DO_SPD":
return "Dowód w realizacji w urzędzie";
case "SPERSONALIZOWANY":
switch ($idState) {
case "SPERSONALIZOWANY":
case "WYSLANY":
return "Dowód w realizacji w urzędzie";
case "PRZYJETY_PRZEZ_URZAD":
return "Dowód gotowy do odebrania";
default:
return null;
}
case "NIEDOPUSZCZONY_DO_PRODUKCJI":
return "Skontaktuj się z urzędem, w którym składałeś wniosek";
default:
return null;
}
}
/**
* Returns bseUrl combined with $endpoint
*/
private function getUrl($endpoint) {
return $this->baseUrl . $endpoint;
}
}
class IdStatusTrackerException extends \Exception {}