@extends('layouts.admin')

@section('title', 'Categories')

@section('content')
@include('admin.partials.warehouse-catalogue-banner')

@php
    $sortKey = $sortKey ?? (($sort ?? 'sort_order') . '_' . ($order ?? 'asc'));
    $stats = $stats ?? ['total' => 0, 'active' => 0, 'empty' => 0, 'products' => 0];
@endphp

<div class="ci-page">
    <nav class="ci-crumb" aria-label="Breadcrumb">
        <span>Catalogue</span>
        <span class="ci-crumb__sep">/</span>
        <span class="ci-crumb__current">Categories</span>
    </nav>

    <div class="ci-header">
        <div>
            <h1>Categories</h1>
            <p class="ci-header__sub">Organize your catalogue with parent/child categories and product counts.</p>
        </div>
        <div class="ci-header__actions">
            @can('categories.create')
                @if($adminCatalogueWritable ?? false)
                    <button type="button" class="ci-btn ci-btn--ghost" data-bs-toggle="collapse" data-bs-target="#importSection" aria-expanded="false" aria-controls="importSection">
                        <i class="bi bi-upload"></i> Import CSV
                    </button>
                    <a href="{{ route('admin.categories.create') }}" class="ci-btn ci-btn--primary">
                        <i class="bi bi-plus-lg"></i> Add Category
                    </a>
                @else
                    <a href="{{ route('admin.categories.download-sample') }}" class="ci-btn ci-btn--ghost">
                        <i class="bi bi-download"></i> Sample CSV
                    </a>
                @endif
            @endcan
        </div>
    </div>

    <div class="ci-stats">
        <div class="ci-stat">
            <div>
                <p class="ci-stat__label">Total</p>
                <p class="ci-stat__value">{{ number_format($stats['total']) }}</p>
            </div>
            <span class="ci-stat__icon"><i class="bi bi-folder2"></i></span>
        </div>
        <div class="ci-stat">
            <div>
                <p class="ci-stat__label">Active</p>
                <p class="ci-stat__value ci-stat__value--success">{{ number_format($stats['active']) }}</p>
            </div>
            <span class="ci-stat__icon"><i class="bi bi-check-circle"></i></span>
        </div>
        <div class="ci-stat">
            <div>
                <p class="ci-stat__label">Empty</p>
                <p class="ci-stat__value ci-stat__value--warning">{{ number_format($stats['empty']) }}</p>
            </div>
            <span class="ci-stat__icon"><i class="bi bi-inbox"></i></span>
        </div>
        <div class="ci-stat">
            <div>
                <p class="ci-stat__label">Products</p>
                <p class="ci-stat__value">{{ number_format($stats['products']) }}</p>
            </div>
            <span class="ci-stat__icon"><i class="bi bi-box-seam"></i></span>
        </div>
    </div>

    @can('categories.create')
    @if($adminCatalogueWritable ?? false)
    <div class="collapse mb-3" id="importSection">
        <div class="ci-import">
            <div class="ci-import__head">
                <h5><i class="bi bi-upload"></i> Import Categories from CSV</h5>
                <a href="{{ route('admin.categories.download-sample') }}" class="ci-btn ci-btn--ghost">
                    <i class="bi bi-download"></i> Download Sample CSV
                </a>
            </div>
            <div class="alert alert-info mb-3">
                <i class="bi bi-info-circle"></i> <strong>CSV Format:</strong> columns <code>name</code>, <code>parent_category_name</code>, <code>sort_order</code>, <code>is_active</code>.
                Leave <code>parent_category_name</code> empty for root categories.
            </div>
            <form action="{{ route('admin.categories.import') }}" method="POST" enctype="multipart/form-data" class="row g-3 align-items-end">
                @csrf
                <div class="col-md-8">
                    <label class="admin-form-label">Select CSV File</label>
                    <input type="file"
                           name="import_file"
                           class="admin-form-control form-control @error('import_file') is-invalid @enderror"
                           accept=".csv,.txt"
                           required>
                    @error('import_file')
                        <div class="invalid-feedback">{{ $message }}</div>
                    @enderror
                    <small class="text-muted">Maximum file size: 5MB.</small>
                </div>
                <div class="col-md-4">
                    <button type="submit" class="ci-btn ci-btn--primary w-100">
                        <i class="bi bi-upload"></i> Import Categories
                    </button>
                </div>
            </form>
        </div>
    </div>
    @endif
    @endcan

    <form method="GET" action="{{ route('admin.categories.index') }}" class="ci-filters" id="categoryFilters">
        <div class="row g-2 align-items-center justify-content-end flex-nowrap">
            <div class="col-lg-2">
                <div class="products-search-wrap">
                    <i class="bi bi-search"></i>
                    <input type="text"
                           name="search"
                           class="admin-form-control form-control"
                           placeholder="Search category or parent…"
                           value="{{ request('search') }}">
                </div>
            </div>
            <div class="col-lg-2">
                <select name="parent_id" onchange="this.form.submit()">
                    <option value="">All parents</option>
                    <option value="root" {{ request('parent_id') === 'root' ? 'selected' : '' }}>Root only</option>
                    @foreach($parentCategories ?? [] as $parent)
                        <option value="{{ $parent->id }}" {{ (string) request('parent_id') === (string) $parent->id ? 'selected' : '' }}>
                            {{ $parent->name }}
                        </option>
                    @endforeach
                </select>
            </div>
            <div class="col-lg-2">
                <select name="status" onchange="this.form.submit()">
                    <option value="">All status</option>
                    <option value="active" {{ request('status') === 'active' ? 'selected' : '' }}>Active</option>
                    <option value="inactive" {{ request('status') === 'inactive' ? 'selected' : '' }}>Inactive</option>
                </select>
            </div>
            <div class="col-lg-2">
                <select name="sort" onchange="this.form.submit()">
                    <option value="sort_order_asc" {{ $sortKey === 'sort_order_asc' ? 'selected' : '' }}>Sort order ↑</option>
                    <option value="name_asc" {{ $sortKey === 'name_asc' ? 'selected' : '' }}>Name A–Z</option>
                    <option value="name_desc" {{ $sortKey === 'name_desc' ? 'selected' : '' }}>Name Z–A</option>
                    <option value="products_count_desc" {{ $sortKey === 'products_count_desc' ? 'selected' : '' }}>Most products</option>
                    <option value="products_count_asc" {{ $sortKey === 'products_count_asc' ? 'selected' : '' }}>Fewest products</option>
                    <option value="parent_asc" {{ $sortKey === 'parent_asc' ? 'selected' : '' }}>Parent A–Z</option>
                    <option value="updated_at_desc" {{ $sortKey === 'updated_at_desc' ? 'selected' : '' }}>Recently updated</option>
                </select>
            </div>
            <div class="ci-filters__actions col-lg-2">
                <button type="submit" class="ci-btn ci-btn--primary">Filter</button>
                @if(request()->hasAny(['search','parent_id','status','sort','order']))
                    <a href="{{ route('admin.categories.index') }}" class="ci-btn ci-btn--ghost ci-btn--icon" title="Clear filters">
                        <i class="bi bi-arrow-clockwise"></i>
                    </a>
                @endif
            </div>
        </div>
        <div class="ci-filters__count ci-filters__count--bottom text-end">
            Showing <strong>{{ $categories->count() }}</strong> of <strong>{{ $categories->total() }}</strong> categories
        </div>
    </form>

    <div class="ci-table-card">
        <div class="ci-table-wrap">
            <table class="ci-table">
                <thead>
                    <tr>
                        <th>Category</th>
                        <th>Parent</th>
                        <th>Products</th>
                        <th>Status</th>
                        <th>Updated</th>
                        <th style="text-align:right;">Actions</th>
                    </tr>
                </thead>
                <tbody>
                    @forelse($categories as $category)
                        @php
                            $initials = strtoupper(mb_substr($category->name, 0, 2));
                        @endphp
                        <tr>
                            <td>
                                <div class="ci-entity">
                                    @if($category->image_path)
                                        <img src="{{ asset('storage/' . $category->image_path) }}"
                                             alt="{{ $category->name }}"
                                             class="ci-avatar"
                                             onerror="this.onerror=null;this.outerHTML='<span class=&quot;ci-avatar&quot;>{{ $initials }}</span>';">
                                    @else
                                        <span class="ci-avatar">{{ $initials }}</span>
                                    @endif
                                    <div class="ci-entity__meta">
                                        <p class="ci-entity__name">{{ $category->name }}</p>
                                        @if($category->slug)
                                            <p class="ci-entity__sub">{{ $category->slug }}</p>
                                        @endif
                                    </div>
                                </div>
                            </td>
                            <td>
                                @if($category->parent)
                                    <span class="ci-muted">{{ $category->parent->name }}</span>
                                @else
                                    <span class="ci-pill ci-pill--chip">Root</span>
                                @endif
                            </td>
                            <td>
                                <span class="ci-pill ci-pill--count">{{ $category->products_count ?? 0 }}</span>
                            </td>
                            <td>
                                <span class="ci-pill {{ $category->is_active ? 'ci-pill--active' : 'ci-pill--inactive' }}">
                                    {{ $category->is_active ? 'Active' : 'Inactive' }}
                                </span>
                            </td>
                            <td class="ci-muted">
                                {{ optional($category->updated_at)->format('M d, Y') ?? '—' }}
                            </td>
                            <td>
                                <div class="ci-actions">
                                    @can('categories.update')
                                    @if($adminCatalogueWritable ?? false)
                                        <a href="{{ route('admin.categories.edit', $category->id) }}"
                                           class="ci-btn ci-btn--ghost ci-btn--icon"
                                           title="Edit">
                                            <i class="bi bi-pencil"></i>
                                        </a>
                                    @endif
                                    @endcan
                                    @can('categories.delete')
                                    @if($adminCatalogueWritable ?? false)
                                        <form action="{{ route('admin.categories.destroy', $category->id) }}"
                                              method="POST"
                                              class="d-inline"
                                              onsubmit="return confirm('Are you sure you want to delete this category?')">
                                            @csrf
                                            @method('DELETE')
                                            <button type="submit" class="ci-btn ci-btn--danger-outline ci-btn--icon" title="Delete">
                                                <i class="bi bi-trash"></i>
                                            </button>
                                        </form>
                                    @endif
                                    @endcan
                                </div>
                            </td>
                        </tr>
                    @empty
                        <tr>
                            <td colspan="6">
                                <div class="ci-empty">
                                    <i class="bi bi-folder-x"></i>
                                    <h3>No Categories Found</h3>
                                    @can('categories.create')
                                    @if($adminCatalogueWritable ?? false)
                                        <p>Get started by creating your first category.</p>
                                        <a href="{{ route('admin.categories.create') }}" class="ci-btn ci-btn--primary">
                                            <i class="bi bi-plus-lg"></i> Add Category
                                        </a>
                                    @endif
                                    @endcan
                                </div>
                            </td>
                        </tr>
                    @endforelse
                </tbody>
            </table>
        </div>

        @if($categories->hasPages())
        <div class="ci-pagination">
            <div class="ci-pagination__info">
                Showing <strong>{{ $categories->firstItem() ?? 0 }}</strong>–<strong>{{ $categories->lastItem() ?? 0 }}</strong>
                of <strong>{{ $categories->total() }}</strong>
            </div>
            <div>
                {{ $categories->links('vendor.pagination.admin-categories') }}
            </div>
        </div>
        @endif
    </div>
</div>
@endsection
