module InventoryHelper
  def inventory_show(hs)
    a=""
    hs.each do |k,v|
        next if v.blank?
        cl_name = k.downcase
        a << "<div class='row'>
                <div class='col-md-6'>"
        a << "<p class=''>" + k + " </p>"
        a << "</div>"
        if k.downcase == 'radio'
          a << "<div class='col-md-6'>" + show_radio(v) + "</div>"
        elsif k.downcase != 'uplinks'
          a << "<div class='col-md-6 " + cl_name + "'>" + v.to_s + "</div>"
        else
          a << "<div class='col-md-6'>"
          a << "<span>" + v.size.to_s + ' '+ "Enabled </span></p>"
          a << "</div>"
        end
        a << "</div>"
        value = v
        if cl_name == "uplinks"
          v.each do |uplink|
            a << "<div class='row'>"
            value = uplink_wireless_details uplink
            a << "<div class='col-md-9 uplink_" + uplink.id.to_s + "'>" + value.to_s + "</div>"
            a << "</div>"
          end
        end
      end
   return a.html_safe
  end

  def status_icon_class value
    value ? 'fa-arrow-up text-success' : 'fa-arrow-down text-danger'
  end

  def formatted_address inv
    country = ISO3166::Country[inv.country] unless inv.country.present?
    address = ""
    address << inv.address unless inv.address.blank?
    address << ", #{inv.address2}" unless inv.address2.blank?
    address << ", #{inv.city}" unless inv.city.blank?
    address << ", #{country.states[inv.state]['name']}" unless country.blank? || inv.state.blank?
    address << " - #{inv.zipcode}" unless inv.zipcode.blank?
    address << ", #{country.name}" unless country.blank? || inv.country.blank?
    address
  end

   def uplink_wireless_details uplink_obj
     v = uplink_obj.uplink_type
    unless v == '5'
      content_tag :div do
        if v == '4'
          title = uplink_obj.uplink_name
          if uplink_obj.uplink_module == "1"
            title += " - " + "SIM 1"
          elsif uplink_obj.uplink_module == "2"
            title += " - " + "SIM 2"
          end
        else
          title = uplink_obj.uplink_name + " - " + RouterInventory::UPLINK_TYPE[v]
        end
        content = content_tag(:span, content_tag(:b, title))
        content << content_tag(:small,content_tag(:b, " (See details below)".html_safe))
        content << content_tag(:table, {:class => "table table-condensed table-bordered uplink-wireless-details"}) do
        if v == '2' || v == '3'
          header = ["Ssid", "Ap Mac", "Signal", "Tx Bitrate", "Freq",'IP']

                     thead = content_tag :thead do
                        content_tag :tr do
                          header.collect {|details|  concat content_tag(:th,details)}.join().html_safe
                        end
                     end
                     tbody = content_tag :tbody do
                        content_tag :tr do
                           header.collect { |details|   "<td class='#{details.downcase.gsub(' ', '-')}'>-</td>"  }.join().html_safe
                        end
                      end
                  thead.concat(tbody)
        elsif v == '1'
          a = ''
          #header = ["Ip Type", "Ip", "Subnet Mask", "Gateway", "Primary Dns","Secondary Dns"]
          header = ["IP Type", "IP"]
                     thead = content_tag :thead do
                        content_tag :tr do
                          header.collect {|details|  concat content_tag(:th,details)}.join().html_safe
                        end
                     end
                     tbody = content_tag :tbody do
                        content_tag :tr do
                            a << "<td class='ip-type'>#{uplink_obj.ip_type}</td>"
                            a << "<td class='ip'> #{uplink_obj.ip}</td>"
                            #a << "<td class='subnet-mask '> #{uplink_obj.subnet_mask}</td>"
                            #a << "<td class='gateway'> #{uplink_obj.gateway}</td>"
                            #a << "<td class='pri-dns'> #{uplink_obj.primary_dns}</td>"
                            #a << "<td class='sec-dns'> #{uplink_obj.secondary_dns}</td>"
                            a.html_safe
                        end
                      end
                  thead.concat(tbody)
          elsif v == '4'
          a = ''
          header = ["Apn","Status",'IP']
                     thead = content_tag :thead do
                        content_tag :tr do
                          header.collect {|details|  concat content_tag(:th,details)}.join().html_safe
                        end
                     end
                     tbody = content_tag :tbody do
                        content_tag :tr do
                          a << "<td class='apn'> #{uplink_obj.mo_apn}</td>"
                          a << "<td>"
                          a << "<span class='eid'>EID: #{uplink_obj.eid} <br/></span>" unless (uplink_obj.eid.blank?)
                          a << "<span class='status'>#{uplink_obj.try(:last_mobile_status).try(:split,'|').try(:delete_if){|a| a=~ /signal/i}.try(:join,'<br/>') || '-'}<br/>"
                          a << "Network : #{uplink_obj.nt} <br/>" unless uplink_obj.nt.blank?
                          unless uplink_obj.operator.blank?
                            a << "Operator: #{uplink_obj.operator} <br/>"
                          else
                            a << "MCC-MNC: #{uplink_obj.mm} <br/>" unless uplink_obj.mm.blank?
                          end
                         a << "Cell ID: #{uplink_obj.cid} <br/>" unless (uplink_obj.cid.blank? || !uplink_obj.lat.blank?)
                         a << "Cell Tower Location: #{uplink_obj.lat}, #{uplink_obj.lng} <br/>" unless uplink_obj.lat.blank?
                         a << "LAC: #{uplink_obj.lac} <br/>" unless (uplink_obj.lac.blank? || !uplink_obj.lng.blank?)
                          a << "<span id='singal_data'></span></span>"
                          a << "</td>"
                          a << "<td class='ip'>#{uplink_obj.last_seen_ip}</td>"
                          a.html_safe
                        end
                      end
                  thead.concat(tbody)
          end
        end
        content.html_safe
      end
    end
  end

  def show_radio(radios)
    row = ''
    content_tag :div do
      content = content_tag(:table, {:class => "table table-condensed table-bordered"}) do
      header = ["Band","Channel","Power"]
      thead = content_tag :thead do
        content_tag :tr do
          header.collect {|details|  concat content_tag(:th,details)}.join().html_safe
        end
     end
     tbody = content_tag :tbody do
       radios.each do |radio|
         class_channel="c#{radio[0]}"
         class_power="p#{radio[0]}"
          trow = content_tag :tr do
            a=''
            a << "<td>#{ssid_band radio[0]}</td>"
            a << "<td class=#{class_channel}>#{radio[1] || "-"}</td>"
            a << "<td class=#{class_power}>#{radio[2] || "-"}</td>"
            a.html_safe
          end
          row << trow
        end
        row.html_safe
      end
      thead.concat(tbody)
      end
      content.html_safe
    end
  end

  def ap_name ap, style=nil
    content = ""
    content << link_to(ap.mac_id, inventory_path(ap.id), :class => "text-info").html_safe
    if ap.name.present?
      content << "<br />"
      content << "<span style='#{style}'>(&nbsp;#{ap.name}&nbsp;)</span>"
    end

    content.html_safe
  end
end
