-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcircrules-test
More file actions
executable file
·61 lines (45 loc) · 4.54 KB
/
circrules-test
File metadata and controls
executable file
·61 lines (45 loc) · 4.54 KB
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
#!/usr/bin/bash
auth 2>/dev/null || authn 2>/dev/null
okapi_url=$(cat okapi.url)
tenant=$(cat tenant)
okapi_token=$(cat okapi.token)
testKey="."
if [[ -z ${2} ]];then
echo "Usage: circrule-get [user_barcode] [item_barcode] "
echo
exit
fi
echo "Retrieving user, item, and reference data. Please wait"
user=$(curl -s -w '\n' -X GET -D -H "Accept: application/json" -H "X-Okapi-Tenant: ${tenant}" -H "x-okapi-token: ${okapi_token}" "${okapi_url}/users?query=barcode==${1}" |jq -c .users[0])
item=$(curl -s -w '\n' -X GET -D -H "Accept: application/json" -H "X-Okapi-Tenant: ${tenant}" -H "x-okapi-token: ${okapi_token}" "${okapi_url}/inventory/items?query=barcode==${2}" |jq -c .items[0])
itemId=$(jq -r .id <<< "${item}")
materialTypeId=$(jq -r .materialType.id <<< "${item}")
locationId=$(jq -r .effectiveLocation.id <<< "${item}")
loanTypeId=$(jq -r .permanentLoanType.id <<< "${item}")
userId=$(jq -r .id <<< "${user}")
patronTypeId=$(jq -r .patronGroup <<< "${user}")
loanPolicyId=$(curl -s -w '\n' -X GET -H "Accept: application/json" -H "X-Okapi-Tenant: ${tenant}" -H "x-okapi-token: ${okapi_token}" "${okapi_url}/circulation/rules/loan-policy?item_type_id=${materialTypeId}&loan_type_id=${loanTypeId}&patron_type_id=${patronTypeId}&location_id=${locationId}")
overdueFinePolicyId=$(curl -s -w '\n' -X GET -H "Accept: application/json" -H "X-Okapi-Tenant: ${tenant}" -H "x-okapi-token: ${okapi_token}" "${okapi_url}/circulation/rules/overdue-fine-policy?item_type_id=${materialTypeId}&loan_type_id=${loanTypeId}&patron_type_id=${patronTypeId}&location_id=${locationId}")
lostItemPolicyId=$(curl -s -w '\n' -X GET -H "Accept: application/json" -H "X-Okapi-Tenant: ${tenant}" -H "x-okapi-token: ${okapi_token}" "${okapi_url}/circulation/rules/lost-item-policy?item_type_id=${materialTypeId}&loan_type_id=${loanTypeId}&patron_type_id=${patronTypeId}&location_id=${locationId}")
requestPolicyId=$(curl -s -w '\n' -X GET -H "Accept: application/json" -H "X-Okapi-Tenant: ${tenant}" -H "x-okapi-token: ${okapi_token}" "${okapi_url}/circulation/rules/request-policy?item_type_id=${materialTypeId}&loan_type_id=${loanTypeId}&patron_type_id=${patronTypeId}&location_id=${locationId}")
noticePolicyId=$(curl -s -w '\n' -X GET -H "Accept: application/json" -H "X-Okapi-Tenant: ${tenant}" -H "x-okapi-token: ${okapi_token}" "${okapi_url}/circulation/rules/request-policy?item_type_id=${materialTypeId}&loan_type_id=${loanTypeId}&patron_type_id=${patronTypeId}&location_id=${locationId}")
circRulesFromLoanApi=$(curl -s -w '\n' -X GET -H "Accept: application/json" -H "X-Okapi-Tenant: ${tenant}" -H "x-okapi-token: ${okapi_token}" "${okapi_url}/circulation/rules/loan-policy-all?item_type_id=${materialTypeId}&loan_type_id=${loanTypeId}&patron_type_id=${patronTypeId}&location_id=${locationId}"|jq .circulationRuleMatches)
circRulesFromOverdueApi=$(curl -s -w '\n' -X GET -H "Accept: application/json" -H "X-Okapi-Tenant: ${tenant}" -H "x-okapi-token: ${okapi_token}" "${okapi_url}/circulation/rules/overdue-fine-policy-all?item_type_id=${materialTypeId}&loan_type_id=${loanTypeId}&patron_type_id=${patronTypeId}&location_id=${locationId}"|jq .circulationRuleMatches)
circRulesFromLostApi=$(curl -s -w '\n' -X GET -H "Accept: application/json" -H "X-Okapi-Tenant: ${tenant}" -H "x-okapi-token: ${okapi_token}" "${okapi_url}/circulation/rules/lost-item-policy-all?item_type_id=${materialTypeId}&loan_type_id=${loanTypeId}&patron_type_id=${patronTypeId}&location_id=${locationId}"|jq .circulationRuleMatches)
circRulesFromRequestApi=$(curl -s -w '\n' -X GET -H "Accept: application/json" -H "X-Okapi-Tenant: ${tenant}" -H "x-okapi-token: ${okapi_token}" "${okapi_url}/circulation/rules/request-policy-all?item_type_id=${materialTypeId}&loan_type_id=${loanTypeId}&patron_type_id=${patronTypeId}&location_id=${locationId}"|jq .circulationRuleMatches)
fromLoans=$(jq -r '.[].circulationRuleLine' <<< ${circRulesFromLoanApi}|sort -u)
fromOverdue=$(jq -r '.[].circulationRuleLine' <<< ${circRulesFromOverdueApi}|sort -u)
fromLost=$(jq -r '.[].circulationRuleLine' <<< ${circRulesFromLostApi}|sort -u)
fromRequest=$(jq -r '.[].circulationRuleLine' <<< ${circRulesFromRequestApi}|sort -u)
matchedLines=$(echo "${fromLoans} ${fromOverdue} ${fromLost} ${fromRequest} " |tr " " "\n" |sort |uniq -dc | grep "^ *4" |sed 's/^ *4//')
echo
if [[ "${matchedLines}" =~ [0-9] ]];then
echo "Check circulation line(s): $(echo ${matchedLines}|sed 's/ /, /g')"
else
echo "No match found. Examine raw data for likely matches"
echo ${circRulesFromLoanApi}
echo ${circRulesFromOverdueApi}
echo ${circRulesFromLostApi}
echo ${circRulesFromRequestApi}
fi
echo