<div class="container mx-auto px-4 py-6">
  <.admin_page_header back={PhoenixKit.Utils.Routes.path("/admin/customer-service/tickets")} />

  <div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
    <%!-- Main Content --%>
    <div class="lg:col-span-2 space-y-6">
      <%!-- Ticket Info Card --%>
      <div class="card bg-base-100 shadow">
        <div class="card-body">
          <div class="flex items-start justify-between">
            <div>
              <h1 class="card-title text-2xl">{@ticket.title}</h1>
              <div class="flex items-center gap-3 mt-2 text-sm text-base-content/70">
                <span>#{String.slice(@ticket.uuid, 0, 8)}</span>
                <span>•</span>
                <span>Created {Calendar.strftime(@ticket.inserted_at, "%Y-%m-%d %H:%M")}</span>
              </div>
            </div>
            <div class="flex gap-2">
              <.link
                navigate={
                  PhoenixKit.Utils.Routes.path(
                    "/admin/customer-service/tickets/#{@ticket.uuid}/edit"
                  )
                }
                class="btn btn-outline btn-sm"
              >
                Edit
              </.link>
            </div>
          </div>

          <div class="divider"></div>

          <%!-- Description --%>
          <div class="prose max-w-none">
            <p class="whitespace-pre-wrap">{@ticket.description}</p>
          </div>

          <%!-- Attachments Section --%>
          <%= if @attachments_enabled do %>
            <div class="divider"></div>
            <div class="flex items-center justify-between mb-3">
              <h3 class="font-semibold">Attachments ({length(@attachments)})</h3>
              <button
                type="button"
                phx-click="open_media_selector"
                class="btn btn-primary btn-sm"
              >
                <.icon name="hero-paper-clip" class="w-4 h-4" /> Add Files
              </button>
            </div>

            <%= if Enum.any?(@attachments) do %>
              <div class="grid grid-cols-2 md:grid-cols-4 gap-3">
                <%= for attachment <- @attachments do %>
                  <div class="relative group border rounded-lg overflow-hidden">
                    <%= if attachment.file do %>
                      <%= if attachment.file.file_type == "image" do %>
                        <img
                          src={
                            PhoenixKit.Modules.Storage.get_public_url_by_variant(
                              attachment.file,
                              "thumbnail"
                            )
                          }
                          alt={attachment.caption || attachment.file.original_file_name}
                          class="w-full h-24 object-cover"
                        />
                      <% else %>
                        <div class="w-full h-24 flex items-center justify-center bg-base-200">
                          <.icon name="hero-document" class="w-8 h-8 text-base-content/50" />
                        </div>
                      <% end %>
                      <div class="p-2">
                        <div class="text-xs truncate">{attachment.file.original_file_name}</div>
                      </div>
                      <button
                        type="button"
                        phx-click="remove_attachment"
                        phx-value-uuid={attachment.uuid}
                        class="absolute top-1 right-1 btn btn-circle btn-xs btn-error opacity-0 group-hover:opacity-100 transition-opacity"
                        data-confirm="Remove this attachment?"
                      >
                        <.icon name="hero-x-mark" class="w-3 h-3" />
                      </button>
                    <% end %>
                  </div>
                <% end %>
              </div>
            <% else %>
              <div class="text-center py-4 text-base-content/50">
                No attachments yet. Click "Add Files" to attach files.
              </div>
            <% end %>
          <% end %>
        </div>
      </div>

      <%!-- Public Comments Section --%>
      <div class="card bg-base-100 shadow">
        <div class="card-body">
          <h2 class="card-title">Comments ({length(@public_comments)})</h2>

          <%!-- Comments List --%>
          <div class="space-y-4 mt-4">
            <%= if Enum.empty?(@public_comments) do %>
              <div class="text-center py-8 text-base-content/50">
                No comments yet. Be the first to respond.
              </div>
            <% else %>
              <%= for comment <- @public_comments do %>
                <div class="bg-base-200 rounded-lg p-4">
                  <div class="flex items-start justify-between">
                    <div class="flex items-center gap-2">
                      <.user_avatar user={comment.user} size="sm" />
                      <div>
                        <span class="font-medium">{comment.user.email}</span>
                        <span class="text-sm text-base-content/50 ml-2">
                          {Calendar.strftime(comment.inserted_at, "%Y-%m-%d %H:%M")}
                        </span>
                      </div>
                    </div>
                    <button
                      phx-click="delete_comment"
                      phx-value-uuid={comment.uuid}
                      class="btn btn-ghost btn-xs"
                      data-confirm="Are you sure you want to delete this comment?"
                    >
                      <svg
                        xmlns="http://www.w3.org/2000/svg"
                        class="h-4 w-4"
                        fill="none"
                        viewBox="0 0 24 24"
                        stroke="currentColor"
                      >
                        <path
                          stroke-linecap="round"
                          stroke-linejoin="round"
                          stroke-width="2"
                          d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"
                        />
                      </svg>
                    </button>
                  </div>
                  <div class="mt-2 whitespace-pre-wrap">{comment.content}</div>
                </div>
              <% end %>
            <% end %>
          </div>

          <%!-- Add Comment Form --%>
          <div class="divider"></div>
          <form phx-submit="add_comment" class="space-y-4">
            <input type="hidden" name="comment[is_internal]" value="false" />
            <textarea
              name="comment[content]"
              class="textarea textarea-bordered w-full"
              rows="3"
              placeholder="Write a public reply..."
            ></textarea>
            <div class="flex justify-end">
              <button type="submit" class="btn btn-primary">
                Add Comment
              </button>
            </div>
          </form>
        </div>
      </div>

      <%!-- Internal Notes Section (Staff Only) --%>
      <%= if @can_view_internal and @internal_notes_enabled do %>
        <div class="card bg-warning/10 border-2 border-warning/30 shadow">
          <div class="card-body">
            <div class="flex items-center gap-2">
              <svg
                xmlns="http://www.w3.org/2000/svg"
                class="h-5 w-5 text-warning"
                fill="none"
                viewBox="0 0 24 24"
                stroke="currentColor"
              >
                <path
                  stroke-linecap="round"
                  stroke-linejoin="round"
                  stroke-width="2"
                  d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"
                />
              </svg>
              <h2 class="card-title text-warning">
                Internal Notes ({length(@internal_notes)})
              </h2>
              <span class="badge badge-warning badge-sm h-auto">Staff Only</span>
            </div>

            <%!-- Internal Notes List --%>
            <div class="space-y-4 mt-4">
              <%= if Enum.empty?(@internal_notes) do %>
                <div class="text-center py-4 text-base-content/50">
                  No internal notes yet.
                </div>
              <% else %>
                <%= for note <- @internal_notes do %>
                  <div class="bg-warning/20 rounded-lg p-4">
                    <div class="flex items-start justify-between">
                      <div class="flex items-center gap-2">
                        <.user_avatar user={note.user} size="sm" />
                        <div>
                          <span class="font-medium">{note.user.email}</span>
                          <span class="text-sm text-base-content/50 ml-2">
                            {Calendar.strftime(note.inserted_at, "%Y-%m-%d %H:%M")}
                          </span>
                        </div>
                      </div>
                      <button
                        phx-click="delete_comment"
                        phx-value-uuid={note.uuid}
                        class="btn btn-ghost btn-xs"
                        data-confirm="Are you sure you want to delete this note?"
                      >
                        <svg
                          xmlns="http://www.w3.org/2000/svg"
                          class="h-4 w-4"
                          fill="none"
                          viewBox="0 0 24 24"
                          stroke="currentColor"
                        >
                          <path
                            stroke-linecap="round"
                            stroke-linejoin="round"
                            stroke-width="2"
                            d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"
                          />
                        </svg>
                      </button>
                    </div>
                    <div class="mt-2 whitespace-pre-wrap">{note.content}</div>
                  </div>
                <% end %>
              <% end %>
            </div>

            <%!-- Add Internal Note Form --%>
            <div class="divider"></div>
            <form phx-submit="add_comment" class="space-y-4">
              <input type="hidden" name="comment[is_internal]" value="true" />
              <textarea
                name="comment[content]"
                class="textarea textarea-bordered textarea-warning w-full"
                rows="3"
                placeholder="Write an internal note (not visible to customer)..."
              ></textarea>
              <div class="flex justify-end">
                <button type="submit" class="btn btn-warning">
                  Add Internal Note
                </button>
              </div>
            </form>
          </div>
        </div>
      <% end %>
    </div>

    <%!-- Sidebar --%>
    <div class="space-y-6">
      <%!-- Status & Actions Card --%>
      <div class="card bg-base-100 shadow">
        <div class="card-body">
          <h3 class="font-semibold mb-4">Status & Actions</h3>

          <%!-- Current Status --%>
          <div class="mb-4">
            <span class="text-sm text-base-content/70">Current Status</span>
            <div class="mt-1">
              <%= case @ticket.status do %>
                <% "open" -> %>
                  <span class="badge badge-info badge-lg h-auto">Open</span>
                <% "in_progress" -> %>
                  <span class="badge badge-warning badge-lg h-auto">In Progress</span>
                <% "resolved" -> %>
                  <span class="badge badge-success badge-lg h-auto">Resolved</span>
                <% "closed" -> %>
                  <span class="badge badge-lg h-auto">Closed</span>
              <% end %>
            </div>
          </div>

          <%!-- Status Actions --%>
          <div class="space-y-2">
            <%= if @ticket.status == "open" do %>
              <button
                phx-click="change_status"
                phx-value-status="in_progress"
                class="btn btn-warning btn-sm w-full"
              >
                Start Progress
              </button>
              <button
                phx-click="change_status"
                phx-value-status="resolved"
                class="btn btn-success btn-sm w-full"
              >
                Mark Resolved
              </button>
            <% end %>

            <%= if @ticket.status == "in_progress" do %>
              <button
                phx-click="change_status"
                phx-value-status="resolved"
                class="btn btn-success btn-sm w-full"
              >
                Mark Resolved
              </button>
              <button
                phx-click="change_status"
                phx-value-status="open"
                class="btn btn-ghost btn-sm w-full"
              >
                Return to Open
              </button>
            <% end %>

            <%= if @ticket.status == "resolved" do %>
              <button
                phx-click="change_status"
                phx-value-status="closed"
                class="btn btn-sm w-full"
              >
                Close Ticket
              </button>
              <button
                phx-click="change_status"
                phx-value-status="open"
                class="btn btn-ghost btn-sm w-full"
              >
                Reopen
              </button>
            <% end %>

            <%= if @ticket.status == "closed" do %>
              <button
                phx-click="change_status"
                phx-value-status="open"
                class="btn btn-info btn-sm w-full"
              >
                Reopen Ticket
              </button>
            <% end %>
          </div>
        </div>
      </div>

      <%!-- Details Card --%>
      <div class="card bg-base-100 shadow">
        <div class="card-body">
          <h3 class="font-semibold mb-4">Details</h3>

          <%!-- Customer --%>
          <div class="mb-4">
            <span class="text-sm text-base-content/70">Customer</span>
            <div class="mt-1 flex items-center gap-2">
              <%= if @ticket.user do %>
                <.user_avatar user={@ticket.user} size="xs" />
                <span class="text-sm">{@ticket.user.email}</span>
              <% else %>
                <span class="text-sm text-base-content/50">Unknown</span>
              <% end %>
            </div>
          </div>

          <%!-- Assigned To --%>
          <div class="mb-4">
            <span class="text-sm text-base-content/70">Assigned To</span>
            <div class="mt-1">
              <%= if @ticket.assigned_to do %>
                <span class="badge badge-outline">{@ticket.assigned_to.email}</span>
              <% else %>
                <div class="flex items-center gap-2">
                  <span class="badge badge-ghost">Unassigned</span>
                  <button phx-click="assign_to_me" class="btn btn-xs btn-primary">
                    Assign to me
                  </button>
                </div>
              <% end %>
            </div>
          </div>

          <%!-- Comments Count --%>
          <div class="mb-4">
            <span class="text-sm text-base-content/70">Comments</span>
            <div class="mt-1 font-medium">{@ticket.comment_count}</div>
          </div>

          <%!-- Timestamps --%>
          <%= if @ticket.resolved_at do %>
            <div class="mb-4">
              <span class="text-sm text-base-content/70">Resolved At</span>
              <div class="mt-1 text-sm">
                {Calendar.strftime(@ticket.resolved_at, "%Y-%m-%d %H:%M")}
              </div>
            </div>
          <% end %>

          <%= if @ticket.closed_at do %>
            <div class="mb-4">
              <span class="text-sm text-base-content/70">Closed At</span>
              <div class="mt-1 text-sm">
                {Calendar.strftime(@ticket.closed_at, "%Y-%m-%d %H:%M")}
              </div>
            </div>
          <% end %>
        </div>
      </div>

      <%!-- Status History Card --%>
      <div class="card bg-base-100 shadow">
        <div class="card-body">
          <h3 class="font-semibold mb-4">Status History</h3>

          <div class="space-y-3">
            <%= for entry <- @status_history do %>
              <div class="flex items-start gap-3 text-sm">
                <div class="w-2 h-2 rounded-full bg-base-content/30 mt-1.5"></div>
                <div>
                  <div>
                    <%= if entry.from_status do %>
                      <span class="badge badge-xs h-auto">{entry.from_status}</span> →
                    <% end %>
                    <span class="badge badge-xs badge-primary">{entry.to_status}</span>
                  </div>
                  <div class="text-base-content/50 mt-1">
                    by {(entry.changed_by && entry.changed_by.email) || "System"}
                    <br />
                    {Calendar.strftime(entry.inserted_at, "%Y-%m-%d %H:%M")}
                  </div>
                  <%= if entry.reason do %>
                    <div class="text-base-content/70 mt-1 italic">"{entry.reason}"</div>
                  <% end %>
                </div>
              </div>
            <% end %>
          </div>
        </div>
      </div>
    </div>
  </div>

  <%!-- Media Selector Modal --%>
  <%= if @attachments_enabled do %>
    <.live_component
      module={PhoenixKitWeb.Live.Components.MediaSelectorModal}
      id="ticket-media-selector"
      show={@show_media_selector}
      mode={:multiple}
      selected_uuids={Enum.map(@attachments, & &1.file_uuid)}
      phoenix_kit_current_user={@current_user}
    />
  <% end %>
</div>
