class Fahrenheit::AlephUbpb::Adapter::Record::GetItems::RestfulApiResultTransformation
Public Instance Methods
apply(*args)
click to toggle source
# File lib/fahrenheit/aleph_ubpb/adapter/record/get_items/restful_api_result_transformation.rb, line 4 def apply(*args) self.transformation.apply(*args) end
transformation()
click to toggle source
# File lib/fahrenheit/aleph_ubpb/adapter/record/get_items/restful_api_result_transformation.rb, line 8 def transformation @transformation ||= Transformator::Transformation.new do output_format :hash process "hits/hits" do |hits_array_element, target| # ubpb specific loan_status unless find(hits_array_element, "loan_status") find(hits_array_element, "_source/status") do |node| loan_status = case node.text.gsub(/requested/i, "") # Remove requested states when /bestellt/i then "ordered" # Exemplar wurde bestellt when /storniert/i then "canceled" # Exemplar wurde storniert when /in bearbeitung/i then "in_process" # Exemplar ist in Bearbeitung when /vermisst/i then "missing" # Exemplar wird vermisst end hits_array_element << element("loan_status", text: loan_status) if loan_status end end unless find(hits_array_element, "availability") find(hits_array_element, "_source/z30-item-status-code") do |node| item_status_code = node.text loan_status = find(hits_array_element, "loan_status") { |_node| _node.text } availability = # things such as "expected" can only be not_available, no matter what if %w(expected).include?(loan_status) "not_available" # these are always restricted available, no matter what their loan status is elsif [ "23", # Tischapparat "32", # Nicht ausleihbar "33", # Seminarapparat "37", # Nicht ausleihbar "38", # Nicht ausleihbar "41", # Nicht ausleihbar "42", # Nicht ausleihbar "43", # Handapparat "44", # Nicht ausleihbar "48", # Nicht ausleihbar "49", # Nicht ausleihbar "50", # Nicht ausleihbar "55", # Nicht ausleihbar "58", # Nicht ausleihbar "60", # Nicht ausleihbar "68" # Magazin-Präsenzausleihe ].include?(item_status_code) "restricted_available" # from here, the loan status comes into play elsif %w(on_shelf).include?(loan_status) if [ "20", # "Normalausleihe" "21", # "Magazinausleihe "24", # "Normalausleihe "25", # "Normalausleihe "26", # "Normalausleihe "27", # "Magazinausleihe "53", # "4-Wochen-Ausleihe "63", # "6-Monats-Ausleihe "73", # "FL Abholung, Keine Verl. "74" # "FL Lesesaal, Keine Verl. ].include?(item_status_code) "available" elsif [ "30", # Kurzausleihe "31", # Magazin-Kurzausleihe "34", # Kurzausleihe "35", # Kurzausleihe "36", # Kurzausleihe "40", # Kurzausleihe "47", # Magazin-Kurzausleihe "53", # 4-Wochen-Ausleihe "61" # Magazin-5-Tage-Ausleihe ].include?(item_status_code) "restricted_available" else raise "Unknown item status code!" end else "not_available" end hits_array_element << element("availability", text: availability) if availability end end end end end