module PensioAPI
  module Responses
    class Terminal < Base
      include Enumerable

      attr_reader :terminals

      def initialize(request)
        super(request)

        map_terminals
      end

      def each
        @terminals.each { |t| yield t }
      end

      def last
        @terminals.last
      end

      private

      def map_terminals
        @terminals = if raw_terminals.is_a?(Array)
          raw_terminals.map { |t| PensioAPI::Terminal.new(t) }
        else
          [PensioAPI::Terminal.new(raw_terminals)]
        end
      end

      def raw_terminals
        @raw_terminals ||= if @raw['Terminals']
          @raw['Terminals']['Terminal']
        else
          []
        end
      end
    end
  end
end