namespace :monitoring_data do
  desc "Populate data from monitoring data field to other fields"
  task populate: :environment do
    sd = Time.parse("2014-12-31")
    while(sd < Time.parse("2015-04-02"))
      MonitoringChild.where("monitoring_data.INFO.NASID" => {"$in" => RouterInventory.all.pluck(:mac_id)}, "monitoring_data.present_date" => {"$gte" => sd.to_i, "$lt" => (sd + 1.hour).to_i}).all.each do |mc|
        next unless mc.info.blank?
        data = mc.monitoring_data.try(:deep_dup)
        unless data.blank?
          mc.info = data["INFO"]
          if data["INTERFACE_STATS"].present?
            mc.s_info = data["SYSTEM_INFO"]
            mc.m_info = data["MEMINFO"]
            mc.lan = data["INTERFACE_STATS"].delete("LAN")
            mc.ssids = data["INTERFACE_STATS"].values
            mc.clients = data["WLAN_CLIENTS"]
            mc.cmd_res = data["COMMAND_RESULTS"]
          end
          mc.sensor_data = data["SENSORS_DATA"] || {}
          mc.created_at = mc.created_at

          mc.save
        end
        puts "#{mc.id} - #{mc.created_at}"
      end
      sd = sd + 1.hour
    end
  end
end
