class Payments::Payjunction::SyncTerminalsService < ApplicationService
  include Payments::Payjunction::Httpable

  def initialize(school)
    @school = school
  end

  def call
    path = '/smartterminals'
    data = request('Get', path, @school)
    return unless data['results']

    add_terminals(data['results'])
  end

  private
    def add_terminals(data)
      data.each do |terminal|
        payjunction_terminal = @school.payjunction_terminals
          .find_or_initialize_by(terminal_id: terminal['smartTerminalId'])
        payjunction_terminal.name = terminal['nickName']
        if payjunction_terminal.new_record?
          payjunction_terminal.serial_number = terminal['serialNumber']
        end
        payjunction_terminal.save
      end
    end
end
