<% content_for :title, "Edit WAF Policy" %>

<div class="space-y-6">
  <!-- Header -->
  <div class="flex items-center justify-between">
    <div>
      <h1 class="text-3xl font-bold text-gray-900">Edit WAF Policy</h1>
      <p class="mt-2 text-gray-600">Modify the firewall policy settings</p>
    </div>
    <div class="flex space-x-3">
      <%= link_to "← Back to Policy", waf_policy_path(@waf_policy),
          class: "inline-flex items-center px-4 py-2 border border-gray-300 rounded-md shadow-sm text-sm font-medium text-gray-700 bg-white hover:bg-gray-50" %>
    </div>
  </div>

  <%= form_with(model: @waf_policy, local: true, class: "space-y-6", data: { controller: "waf-policy-form" }) do |form| %>
    <!-- Basic Information -->
    <div class="bg-white shadow rounded-lg">
      <div class="px-4 py-5 sm:p-6 space-y-4">
        <h3 class="text-lg leading-6 font-medium text-gray-900">📋 Basic Information</h3>

        <!-- Name -->
        <div>
          <%= form.label :name, class: "block text-sm font-medium text-gray-700" %>
          <%= form.text_field :name,
              class: "block w-full border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm",
              placeholder: "e.g., Block Brazil" %>
        </div>

        <!-- Description -->
        <div>
          <%= form.label :description, "Description", class: "block text-sm font-medium text-gray-700" %>
          <%= form.text_area :description, rows: 3,
              class: "block w-full border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm",
              placeholder: "Explain why this policy is needed..." %>
        </div>

        <!-- Policy Action -->
        <div>
          <%= form.label :policy_action, "Policy Action", class: "block text-sm font-medium text-gray-700" %>
          <%= form.select :policy_action,
              options_for_select(@actions.map { |action| [action.humanize, action] }, @waf_policy.policy_action),
              { prompt: "Select action" },
              { class: "block w-full border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm",
                data: { "waf-policy-form-target": "policyActionSelect", "action": "change->waf-policy-form#updateActionConfig" } } %>
        </div>

        <!-- Status -->
        <div class="flex items-center">
          <%= form.check_box :enabled, class: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded" %>
          <%= form.label :enabled, "Enable this policy", class: "ml-2 text-sm text-gray-700" %>
        </div>

        <!-- Expiration -->
        <div>
          <%= form.label :expires_at, "Expires At (optional)", class: "block text-sm font-medium text-gray-700" %>
          <%= form.datetime_local_field :expires_at,
              class: "block w-full border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm" %>
          <p class="text-xs text-gray-500 mt-1">Leave blank for permanent policy</p>
        </div>
      </div>
    </div>

    <!-- Targets Configuration -->
    <div class="bg-white shadow rounded-lg">
      <div class="px-4 py-5 sm:p-6 space-y-4">
        <h3 class="text-lg leading-6 font-medium text-gray-900">🎯 Targets Configuration</h3>
        <p class="text-sm text-gray-600">
          <strong>Policy Type:</strong> <%= @waf_policy.policy_type.humanize %>
          <% unless @waf_policy.new_record? %>
            <span class="text-xs text-gray-500">(Cannot change policy type after creation)</span>
          <% end %>
        </p>

        <% if @waf_policy.new_record? %>
          <!-- Policy Type (only for new records) -->
          <div>
            <%= form.label :policy_type, "Policy Type", class: "block text-sm font-medium text-gray-700" %>
            <%= form.select :policy_type,
                options_for_select(@policy_types.map { |type| [type.humanize, type] }, @waf_policy.policy_type),
                { prompt: "Select policy type" },
                { class: "block w-full border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm",
                  id: "policy-type-select", disabled: !@waf_policy.new_record? } %>
          </div>
        <% else %>
          <!-- Display policy type for existing records -->
          <div>
            <%= form.label :policy_type, "Policy Type", class: "block text-sm font-medium text-gray-700" %>
            <div class="mt-1">
              <span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-blue-100 text-blue-800">
                <%= @waf_policy.policy_type.humanize %>
              </span>
            </div>
            <%= form.hidden_field :policy_type %>
          </div>
        <% end %>

        <!-- Country Policy Targets -->
        <% if @waf_policy.country_policy? %>
          <div id="country-targets">
            <%= form.label :targets, "Countries", class: "block text-sm font-medium text-gray-700 mb-2" %>
            <div data-controller="country-selector"
                 data-country-selector-options-value="<%= CountryHelper.all_for_select.to_json %>"
                 data-country-selector-placeholder-value="Search and select countries...">
              <%= select_tag "waf_policy[targets][]",
                  options_for_select(@waf_policy.targets.map { |code| [CountryHelper.display_with_flag(code), code] }, @waf_policy.targets),
                  {
                    multiple: true,
                    class: "hidden",
                    data: { "country-selector-target": "select" }
                  } %>
            </div>
          </div>
        <% end %>

        <!-- ASN Policy Targets -->
        <% if @waf_policy.asn_policy? %>
          <div id="asn-targets">
            <%= form.label :targets, "ASN Numbers", class: "block text-sm font-medium text-gray-700" %>
            <%= text_field_tag "waf_policy[targets][]", @waf_policy.targets.join(', '),
                class: "block w-full border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm",
                placeholder: "e.g., 12345, 67890" %>
            <p class="text-xs text-gray-500 mt-1">Enter ASNs separated by commas</p>
          </div>
        <% end %>

        <!-- Company Policy Targets -->
        <% if @waf_policy.company_policy? %>
          <div id="company-targets">
            <%= form.label :targets, "Companies", class: "block text-sm font-medium text-gray-700" %>
            <%= text_field_tag "waf_policy[targets][]", @waf_policy.targets.join(', '),
                class: "block w-full border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm",
                placeholder: "e.g., AWS, Digital Ocean, Google Cloud" %>
            <p class="text-xs text-gray-500 mt-1">Enter company names separated by commas</p>
          </div>
        <% end %>

        <!-- Network Type Targets -->
        <% if @waf_policy.network_type_policy? %>
          <div id="network-type-targets">
            <%= form.label :targets, "Network Types", class: "block text-sm font-medium text-gray-700" %>
            <div class="space-y-2">
              <label class="flex items-center">
                <%= check_box_tag "waf_policy[targets][]", "datacenter", @waf_policy.targets.include?("datacenter"), class: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded mr-2" %>
                <span class="text-sm text-gray-700">Datacenter IPs</span>
              </label>
              <label class="flex items-center">
                <%= check_box_tag "waf_policy[targets][]", "proxy", @waf_policy.targets.include?("proxy"), class: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded mr-2" %>
                <span class="text-sm text-gray-700">Proxy/VPN IPs</span>
              </label>
              <label class="flex items-center">
                <%= check_box_tag "waf_policy[targets][]", "standard", @waf_policy.targets.include?("standard"), class: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded mr-2" %>
                <span class="text-sm text-gray-700">Standard ISPs</span>
              </label>
            </div>
          </div>
        <% end %>
      </div>
    </div>

    <!-- Additional Configuration -->
    <div class="bg-white shadow rounded-lg">
      <div class="px-4 py-5 sm:p-6 space-y-4">
        <h3 class="text-lg leading-6 font-medium text-gray-900">⚙️ Additional Configuration</h3>

        <!-- Redirect Settings (for redirect action) -->
        <div id="redirect-config" class="space-y-3 <%= 'hidden' unless @waf_policy.redirect_action? %>" data-waf-policy-form-target="redirectConfig">
          <div>
            <%= label_tag "additional_data[redirect_url]", "Redirect URL", class: "block text-sm font-medium text-gray-700" %>
            <%= text_field_tag "additional_data[redirect_url]", @waf_policy.additional_data&.dig('redirect_url'),
                class: "block w-full border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm",
                placeholder: "https://example.com/compliance" %>
          </div>
          <div>
            <%= label_tag "additional_data[redirect_status]", "HTTP Status", class: "block text-sm font-medium text-gray-700" %>
            <%= select_tag "additional_data[redirect_status]",
                options_for_select([["301 Moved Permanently", 301], ["302 Found", 302], ["307 Temporary Redirect", 307]], @waf_policy.additional_data&.dig('redirect_status')),
                { include_blank: true, class: "block w-full border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm" } %>
          </div>
        </div>

        <!-- Challenge Settings (for challenge action) -->
        <div id="challenge-config" class="space-y-3 <%= 'hidden' unless @waf_policy.challenge_action? %>" data-waf-policy-form-target="challengeConfig">
          <div>
            <%= label_tag "additional_data[challenge_type]", "Challenge Type", class: "block text-sm font-medium text-gray-700" %>
            <%= select_tag "additional_data[challenge_type]",
                options_for_select([["CAPTCHA", "captcha"], ["JavaScript", "javascript"], ["Proof of Work", "proof_of_work"]], @waf_policy.additional_data&.dig('challenge_type')),
                { include_blank: true, class: "block w-full border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm" } %>
          </div>
          <div>
            <%= label_tag "additional_data[challenge_message]", "Challenge Message", class: "block text-sm font-medium text-gray-700" %>
            <%= text_area_tag "additional_data[challenge_message]", @waf_policy.additional_data&.dig('challenge_message'), rows: 2,
                class: "block w-full border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm",
                placeholder: "Please verify you are human to continue..." %>
          </div>
        </div>
      </div>
    </div>

    <!-- Submit Buttons -->
    <div class="flex justify-end space-x-3">
      <%= link_to "Cancel", waf_policy_path(@waf_policy),
          class: "inline-flex items-center px-4 py-2 border border-gray-300 rounded-md shadow-sm text-sm font-medium text-gray-700 bg-white hover:bg-gray-50" %>
      <%= form.submit "Update Policy",
          class: "inline-flex items-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500" %>
    </div>
  <% end %>
</div>