diff --git a/module/finc/config/module.config.php b/module/finc/config/module.config.php index 5969f502e6f7fc81fa62471843bdbdf12a37a516..eaabdac99363da8f24215064ca37ca6440b9ac52 100644 --- a/module/finc/config/module.config.php +++ b/module/finc/config/module.config.php @@ -91,7 +91,11 @@ $config = [ 'finc\AjaxHandler\GetResolverLinks' => 'finc\AjaxHandler\GetResolverLinksFactory', 'finc\AjaxHandler\GetRecordCover' => - 'finc\AjaxHandler\GetRecordCoverFactory' + 'finc\AjaxHandler\GetRecordCoverFactory', + 'finc\AjaxHandler\GetUserMediaReadyToPickup' => + 'VuFind\AjaxHandler\AbstractIlsAndUserActionFactory', + 'finc\AjaxHandler\GetUserPermanentLoans' => + 'VuFind\AjaxHandler\AbstractIlsAndUserActionFactory', ], 'aliases' => [ 'getAdditionalAccountInfo' => @@ -104,6 +108,10 @@ $config = [ 'finc\AjaxHandler\GetResolverLinks', 'getRecordCover' => 'finc\AjaxHandler\GetRecordCover', + 'getUserMediaReadyToPickup' => + 'finc\AjaxHandler\GetUserMediaReadyToPickup', + 'getUserPermanentLoans' => + 'finc\AjaxHandler\GetUserPermanentLoans', ] ], 'auth' => [ diff --git a/module/finc/src/finc/AjaxHandler/GetUserMediaReadyToPickup.php b/module/finc/src/finc/AjaxHandler/GetUserMediaReadyToPickup.php new file mode 100644 index 0000000000000000000000000000000000000000..0d17ebbc9279e5a0f6c8b28ae1a155c548b9c4eb --- /dev/null +++ b/module/finc/src/finc/AjaxHandler/GetUserMediaReadyToPickup.php @@ -0,0 +1,44 @@ +<?php +/** + * PHP version 7 + * + * Copyright (C) Villanova University 2018. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category VuFind + * @package AJAX + * @author Demian Katz <demian.katz@villanova.edu> + * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License + * @link https://vufind.org/wiki/development Wiki + */ +namespace finc\AjaxHandler; + +/** + * + * @category VuFind + * @package AJAX + * @author Demian Katz <demian.katz@villanova.edu> + * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License + * @link https://vufind.org/wiki/development Wiki + */ +class GetUserMediaReadyToPickup extends \VuFind\AjaxHandler\AbstractUserRequestAction +{ + /** + * ILS driver method for data retrieval. + * + * @var string + */ + protected $lookupMethod = 'getMyMediaReadyToPickup'; +} diff --git a/module/finc/src/finc/AjaxHandler/GetUserPermanentLoans.php b/module/finc/src/finc/AjaxHandler/GetUserPermanentLoans.php new file mode 100644 index 0000000000000000000000000000000000000000..b259aa2c3cfce77e0126ca6267f838ec8d6e751c --- /dev/null +++ b/module/finc/src/finc/AjaxHandler/GetUserPermanentLoans.php @@ -0,0 +1,78 @@ +<?php +/** + * PHP version 7 + * + * Copyright (C) Villanova University 2018. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category VuFind + * @package AJAX + * @author Demian Katz <demian.katz@villanova.edu> + * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License + * @link https://vufind.org/wiki/development Wiki + */ +namespace finc\AjaxHandler; + +use Zend\Mvc\Controller\Plugin\Params; + +/** + * "Get User Holds" AJAX handler + * + * @category VuFind + * @package AJAX + * @author Demian Katz <demian.katz@villanova.edu> + * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License + * @link https://vufind.org/wiki/development Wiki + */ +class GetUserPermanentLoans extends \VuFind\AjaxHandler\AbstractUserRequestAction +{ + /** + * Handle a request. + * + * @param Params $params Parameter helper from controller + * + * @return array [response data, internal status code, HTTP status code] + */ + public function handleRequest(Params $params) + { + $this->disableSessionWrites(); // avoid session write timing bug + $patron = $this->ilsAuthenticator->storedCatalogLogin(); + if (!$patron) { + return $this->formatResponse('', self::STATUS_HTTP_NEED_AUTH, 401); + } + if (!$this->ils->checkCapability('getMyTransactions')) { + return $this->formatResponse('', self::STATUS_HTTP_ERROR, 405); + } + $items = $this->ils->getMyPermanentLoans($patron); + $counts = [ + 'ok' => 0, + 'warn' => 0, + 'overdue' => 0 + ]; + foreach ($items as $item) { + if (!isset($item['dueStatus'])) { + continue; + } + if ($item['dueStatus'] == 'overdue') { + $counts['overdue'] += 1; + } elseif ($item['dueStatus'] == 'due') { + $counts['warn'] += 1; + } else { + $counts['ok'] += 1; + } + } + return $this->formatResponse($counts); + } +}