Skip to content

Commit 32f37cc

Browse files
committed
Add methods for getting task lists
Added suport for retrieving lending requests and requested resources (pick from shelf). No API for borrowing requests is currently available.
1 parent 00c1dce commit 32f37cc

17 files changed

+824
-2
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
66

77
## [Unreleased]
88

9-
(none yet)
9+
- Added methods for retrieving task lists (lending requests and requested resources).
1010

1111
## [0.7.0] - 2018-09-02
1212

README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,34 @@ convert a filter to SQL. The results looks like this:
430430
But used with the API, the response is the same as if you forget to include an
431431
"is prompted" filter: a loong wait follow by a "400 No more rows to fetch".
432432

433+
## Task lists
434+
435+
### Lending requests
436+
437+
````php
438+
$library = $alma->conf->libraries['LIBRARY_CODE'];
439+
$requests = $alma->taskLists->getLendingRequests($library, [
440+
'printed' => 'N',
441+
'status' => 'REQUEST_CREATED_LEND',
442+
]);
443+
foreach ($requests as $request) {
444+
echo "- {$request->request_id} {$request->status}\n";
445+
}
446+
````
447+
448+
Note: As of 2018-10-13, there is a bug preventing you from retrieving more than 100 lending requests.
449+
450+
### Requested resources (pick from shelf)
451+
452+
````php
453+
$library = $alma->conf->libraries['LIBRARY_CODE'];
454+
$requests = $alma->taskLists->getRequestedResources($library, 'DEFAULT_CIRC_DESK', [
455+
'printed' => 'N',
456+
]);
457+
foreach ($requests as $request) {
458+
echo "- {$request->resource_metadata->title} {$request->resource_metadata->mms_id->value}\n";
459+
}
460+
````
433461

434462
## Laravel 5 integration
435463

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace spec\Scriptotek\Alma\TaskLists;
4+
5+
use Scriptotek\Alma\Client as AlmaClient;
6+
use Scriptotek\Alma\Conf\Library;
7+
use PhpSpec\ObjectBehavior;
8+
use Scriptotek\Alma\TaskLists\ResourceSharingRequest;
9+
use spec\Scriptotek\Alma\SpecHelper;
10+
11+
class LendingRequestsSpec extends ObjectBehavior
12+
{
13+
function it_provides_filtering_options(AlmaClient $client, Library $library)
14+
{
15+
$library->code = 'SOME_LIBRARY';
16+
$this->beConstructedWith($client, $library, [
17+
'printed' => 'N',
18+
'status' => 'REQUEST_CREATED_LEND',
19+
]);
20+
21+
$client->getJSON('/task-lists/rs/lending-requests?printed=N&status=REQUEST_CREATED_LEND&library=SOME_LIBRARY')
22+
->shouldBeCalled()
23+
->willReturn(SpecHelper::getDummyData('lending_requests_created.json'));
24+
25+
$result = $this->all();
26+
$result->shouldBeArray();
27+
$result->shouldHaveCount(3);
28+
$result[0]->shouldBeAnInstanceOf(ResourceSharingRequest::class);
29+
}
30+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace spec\Scriptotek\Alma\TaskLists;
4+
5+
use Scriptotek\Alma\Bibs\Bib;
6+
use Scriptotek\Alma\Client as AlmaClient;
7+
use Scriptotek\Alma\Conf\Library;
8+
use Scriptotek\Alma\TaskLists\RequestedResource;
9+
use PhpSpec\ObjectBehavior;
10+
use Prophecy\Argument;
11+
12+
13+
class RequestedResourceSpec extends ObjectBehavior
14+
{
15+
public function let(AlmaClient $client, Library $library, Bib $bib)
16+
{
17+
$this->beConstructedWith($client, $library, 'SUPER_DESK', $bib);
18+
}
19+
20+
function it_is_initializable()
21+
{
22+
$this->shouldHaveType(RequestedResource::class);
23+
}
24+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
namespace spec\Scriptotek\Alma\TaskLists;
4+
5+
use Scriptotek\Alma\Bibs\Bib;
6+
use Scriptotek\Alma\Bibs\Bibs;
7+
use Scriptotek\Alma\Client as AlmaClient;
8+
use Scriptotek\Alma\Conf\Library;
9+
use Scriptotek\Alma\TaskLists\RequestedResource;
10+
use PhpSpec\ObjectBehavior;
11+
use Prophecy\Argument;
12+
use spec\Scriptotek\Alma\SpecHelper;
13+
14+
class RequestedResourcesSpec extends ObjectBehavior
15+
{
16+
function it_provides_filtering_options(AlmaClient $client, Library $library, Bibs $bibs, Bib $bib)
17+
{
18+
$library->code = 'SOME_LIBRARY';
19+
$this->beConstructedWith($client, $library, 'DEFAULT_CIRC_DESK', [
20+
'printed' => 'N',
21+
]);
22+
23+
$client->bibs = $bibs;
24+
$bibs->get('991120800814702204')
25+
->shouldBeCalled()
26+
->willReturn($bib);
27+
28+
$client->getJSON('/task-lists/requested-resources?printed=N&library=SOME_LIBRARY&circ_desk=DEFAULT_CIRC_DESK&offset=0&limit=10')
29+
->shouldBeCalled()
30+
->willReturn(SpecHelper::getDummyData('requested-resources_response.json'));
31+
32+
$result = $this->all();
33+
34+
$result->shouldBeArray();
35+
$result->shouldHaveCount(1);
36+
$result[0]->shouldBeAnInstanceOf(RequestedResource::class);
37+
}
38+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace spec\Scriptotek\Alma\TaskLists;
4+
5+
use Scriptotek\Alma\Client as AlmaClient;
6+
use Scriptotek\Alma\Conf\Library;
7+
use Scriptotek\Alma\TaskLists\LendingRequests;
8+
use Scriptotek\Alma\TaskLists\LendingRequest;
9+
use PhpSpec\ObjectBehavior;
10+
use spec\Scriptotek\Alma\SpecHelper;
11+
12+
class ResourceSharingRequestSpec extends ObjectBehavior
13+
{
14+
public function let(AlmaClient $client)
15+
{
16+
$id = '123';
17+
$this->beConstructedWith($client, $id);
18+
}
19+
}

0 commit comments

Comments
 (0)