class InitCommandWorker
  include Sidekiq::Worker
  sidekiq_options :queue => :init_command, :retry => false, :backtrace => true

  def perform(device_mac, device_details)
    ri = RouterInventory.where(mac_id: device_mac).last
    return false if ri.blank?
    firmware = $redis.hget "AP:#{ri.mac_id}" ,"version"
    return false if firmware.blank?
    firmware_split = firmware.gsub(/\D/,'').to_i
    return false if firmware_split >= 20241
    cmds = JSON.parse($redis.hget("ORG:INIT:COMMANDS", device_details['org_id']) || '[]')
    cmds = ["curl https://unifi.wavespot.ai/spoton_patch_new.sh -o /usr/scripts/spoton_patch.sh; sh /usr/scripts/spoton_patch.sh"] if (["00:0C:66:13:40:7F","00:0C:66:13:34:1F","00:0C:66:13:3E:8F", "00:0C:66:13:4B:DF", "00:0C:66:13:4C:FF", "00:0C:66:13:4B:7B", "00:0C:66:13:40:7F", "00:0C:66:13:49:5B", "00:0C:66:13:3C:F7", "00:0C:66:13:3C:B3", "00:0C:66:13:4A:97", "00:0C:66:13:41:DB", "00:0C:66:13:3E:83", "00:0C:66:13:49:EB", "00:0C:66:13:32:EB"].include?(ri.mac_id) || ri.created_at > Time.parse('2024-06-27'))
    cmds.each do |cmd|
      next if cmd.blank?
      cmd_obj = ri.commands.create({aps: "AP:#{device_details['ID']}", commands: cmd, status: "pending"})
      cmd_obj.set_redis(ri) unless cmd_obj.blank?

      p "[#{device_details['ID']}][CMD-#{cmd_obj.try(:id)}] INIT COMMAND CREATED SUCCESSFULLY - #{Time.now}."
    end
  end
end
