@@ -75,34 +75,22 @@ public function isLoggedIn(): bool {
75
75
* @param string $cpr
76
76
* The users personal security number.
77
77
*
78
- * @return \Drupal\os2forms_fbs_handler\Client\Model\Patron |null
79
- * NULL if not else the Patron .
78
+ * @return string |null
79
+ * NULL if not else the PatronId .
80
80
*
81
81
* @throws \GuzzleHttp\Exception\GuzzleException
82
82
* @throws \JsonException
83
83
*/
84
- public function doUserExists (string $ cpr ): ?Patron {
84
+ public function authenticatePatron (string $ cpr ): ?string {
85
85
// Check if session has been created with FBS and if not creates it.
86
86
if (!$ this ->isLoggedIn ()) {
87
87
$ this ->login ();
88
88
}
89
89
90
- // Try pre-authenticate the user/parent .
91
- $ json = $ this ->request ('/external/{agency_id}/patrons/preauthenticated/v9 ' , $ cpr );
90
+ // Authenticate the patron .
91
+ $ json = $ this ->request ('/external/{agency_id}/patrons/preauthenticated/v10 ' , $ cpr );
92
92
if ($ json ->authenticateStatus === $ this ::AUTHENTICATE_STATUS_VALID ) {
93
- return new Patron (
94
- $ json ->patron ->patronId ,
95
- (bool ) $ json ->patron ->receiveSms ,
96
- (bool ) $ json ->patron ->receivePostalMail ,
97
- $ json ->patron ->notificationProtocols ,
98
- $ json ->patron ->phoneNumber ,
99
- is_null ($ json ->patron ->onHold ) ? $ json ->patron ->onHold : (array ) $ json ->patron ->onHold ,
100
- $ json ->patron ->preferredLanguage ,
101
- (bool ) $ json ->patron ->guardianVisibility ,
102
- $ json ->patron ->emailAddress ,
103
- (bool ) $ json ->patron ->receiveEmail ,
104
- $ json ->patron ->preferredPickupBranch
105
- );
93
+ return $ json ->patronId ;
106
94
}
107
95
108
96
return NULL ;
@@ -123,17 +111,60 @@ public function doUserExists(string $cpr): ?Patron {
123
111
* @throws \JsonException
124
112
*/
125
113
public function createPatronWithGuardian (Patron $ patron , Guardian $ guardian ) {
126
- $ uri = '/external/{agency_id}/patrons/withGuardian/v1 ' ;
114
+ $ uri = '/external/{agency_id}/patrons/withGuardian/v4 ' ;
127
115
$ payload = [
128
- 'cprNumber ' => $ patron ->cpr ,
116
+ 'personId ' => $ patron ->personId ,
129
117
'pincode ' => $ patron ->pincode ,
130
118
'preferredPickupBranch ' => $ patron ->preferredPickupBranch ,
131
119
'name ' => 'Unknown Name ' ,
132
- 'email ' => $ patron ->emailAddress ,
120
+ 'emailAddresses ' => $ patron ->emailAddresses ,
133
121
'guardian ' => $ guardian ->toArray (),
134
122
];
135
123
136
- return $ this ->request ($ uri , $ payload ,);
124
+ return $ this ->request ($ uri , $ payload );
125
+ }
126
+
127
+ /**
128
+ * Get patron information.
129
+ *
130
+ * @param string $patronId
131
+ * The patron to update.
132
+ *
133
+ * @return \Drupal\os2forms_fbs_handler\Client\Model\Patron
134
+ * Patron object
135
+ *
136
+ * @throws \GuzzleHttp\Exception\GuzzleException
137
+ * @throws \JsonException
138
+ */
139
+ public function getPatron (string $ patronId ): ?Patron {
140
+ $ uri = '/external/{agency_id}/patrons/ ' . $ patronId . '/v4 ' ;
141
+
142
+ $ json = $ this ->request ($ uri , [], RequestMethodInterface::METHOD_GET );
143
+
144
+ if ($ json ->authenticateStatus === "VALID " ) {
145
+ return new Patron (
146
+ $ json ->patron ->patronId ,
147
+ (bool ) $ json ->patron ->receiveSms ,
148
+ (bool ) $ json ->patron ->receivePostalMail ,
149
+ $ json ->patron ->notificationProtocols ,
150
+ $ json ->patron ->phoneNumber ,
151
+ is_null ($ json ->patron ->onHold ) ? $ json ->patron ->onHold : (array ) $ json ->patron ->onHold ,
152
+ $ json ->patron ->preferredLanguage ,
153
+ (bool ) $ json ->patron ->guardianVisibility ,
154
+ $ json ->patron ->defaultInterestPeriod ,
155
+ (bool ) $ json ->patron ->resident ,
156
+ [
157
+ [
158
+ 'emailAddress ' => $ json ->patron ->emailAddress ,
159
+ 'receiveNotification ' => $ json ->patron ->receiveEmail ,
160
+ ],
161
+ ],
162
+ (bool ) $ json ->patron ->receiveEmail ,
163
+ $ json ->patron ->preferredPickupBranch
164
+ );
165
+ }
166
+
167
+ return NULL ;
137
168
}
138
169
139
170
/**
@@ -149,19 +180,27 @@ public function createPatronWithGuardian(Patron $patron, Guardian $guardian) {
149
180
* @throws \JsonException
150
181
*/
151
182
public function updatePatron (Patron $ patron ): bool {
152
- $ uri = '/external/{agency_id}/patrons/ ' . $ patron ->patronId . '/v6 ' ;
183
+ $ uri = '/external/{agency_id}/patrons/ ' . $ patron ->patronId . '/v8 ' ;
153
184
$ payload = [
154
- 'patronid ' => $ patron ->patronId ,
155
- 'patron ' => $ patron ->toArray (),
185
+ 'patron ' => [
186
+ 'preferredPickupBranch ' => $ patron ->preferredPickupBranch ,
187
+ 'emailAddresses ' => $ patron ->emailAddresses ,
188
+ 'guardianVisibility ' => $ patron ->guardianVisibility ,
189
+ 'receivePostalMail ' => $ patron ->receiveEmail ,
190
+ 'phoneNumbers ' => [
191
+ [
192
+ 'receiveNotification ' => TRUE ,
193
+ 'phoneNumber ' => $ patron ->phoneNumber ,
194
+ ],
195
+ ],
196
+ ],
156
197
'pincodeChange ' => [
157
198
'pincode ' => $ patron ->pincode ,
158
- 'libraryCardNumber ' => $ patron ->cpr ,
199
+ 'libraryCardNumber ' => $ patron ->personId ,
159
200
],
160
201
];
161
202
162
- $ json = $ this ->request ($ uri , $ payload , Request::METHOD_PUT );
163
-
164
- return $ json ->authenticateStatus === $ this ::AUTHENTICATE_STATUS_VALID ;
203
+ return $ this ->request ($ uri , $ payload , RequestMethodInterface::METHOD_PUT );
165
204
}
166
205
167
206
/**
@@ -179,7 +218,7 @@ public function updatePatron(Patron $patron): bool {
179
218
* @throws \JsonException
180
219
*/
181
220
public function createGuardian (Patron $ patron , Guardian $ guardian ): int {
182
- $ uri = '/external/{agency_id}/patrons/withGuardian/v1 ' ;
221
+ $ uri = '/external/{agency_id}/patrons/withGuardian/v2 ' ;
183
222
$ payload = [
184
223
'patronId ' => $ patron ->patronId ,
185
224
'guardian ' => $ guardian ->toArray (),
@@ -199,7 +238,7 @@ public function createGuardian(Patron $patron, Guardian $guardian): int {
199
238
* The type of request to send (Default: POST).
200
239
*
201
240
* @return mixed
202
- * Json response from FBS.
241
+ * Json response from FBS or TRUE on updatePatron response .
203
242
*
204
243
* @throws \GuzzleHttp\Exception\GuzzleException
205
244
* @throws \JsonException
@@ -230,6 +269,10 @@ private function request(string $uri, array|string $data, string $method = Reque
230
269
231
270
$ response = $ this ->client ->request ($ method , $ url , $ options );
232
271
272
+ if ($ response ->getStatusCode () === 204 ) {
273
+ return TRUE ;
274
+ }
275
+
233
276
return json_decode ($ response ->getBody (), FALSE , 512 , JSON_THROW_ON_ERROR );
234
277
}
235
278
0 commit comments