@extends('layouts.app')

@section('title', $envio->numero_envio . ' | Veltrix v2')

@section('content')

<div class="d-flex align-items-center gap-2 mb-3 flex-wrap">
    <a href="{{ route('envios.index') }}" class="btn btn-sm btn-outline-secondary"><i class="bx bx-arrow-back"></i></a>
    <h1 class="h5 mb-0">{{ $envio->numero_envio }}</h1>
    <span class="badge bg-{{ $envio->estadoColor() }}-subtle text-{{ $envio->estadoColor() }} rounded-pill px-3">
        {{ $envio->estadoLabel() }}
    </span>
    <div class="ms-auto d-flex gap-2">
        @if ($envio->rotulos->count() > 0)
            <a href="{{ route('rotulos.print', $envio->rotulos->first()) }}" target="_blank" class="btn btn-sm btn-outline-primary">
                <i class="bx bx-printer me-1"></i>Imprimir rótulo
            </a>
        @endif
    </div>
</div>

@if (session('success'))
    <div class="alert alert-success alert-dismissible fade show mb-3" role="alert">
        {{ session('success') }}
        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
    </div>
@endif

<div class="row g-3">

    {{-- Left column --}}
    <div class="col-lg-8">

        {{-- Destinatario / Remitente cards --}}
        <div class="row g-3 mb-3">
            <div class="col-md-6">
                <div class="card border-0 shadow-sm h-100">
                    <div class="card-body">
                        <div class="d-flex align-items-center gap-2 mb-3">
                            <div class="rounded-circle d-flex align-items-center justify-content-center" style="width:36px;height:36px;background:#ede9fe">
                                <i class="bx bxs-map-pin text-purple" style="color:#7c3aed"></i>
                            </div>
                            <h2 class="h6 mb-0">Destinatario</h2>
                        </div>
                        <dl class="mb-0 vx-dl-sm">
                            <dt>Nombre</dt><dd>{{ $envio->destinatario_nombre }}</dd>
                            @if ($envio->destinatario_telefono)
                                <dt>Teléfono</dt><dd>{{ $envio->destinatario_telefono }}</dd>
                            @endif
                            <dt>Dirección</dt><dd>{{ $envio->destinatario_direccion }}</dd>
                            <dt>Ciudad</dt><dd>{{ $envio->destinatario_ciudad }}{{ $envio->destinatario_departamento ? ', ' . $envio->destinatario_departamento : '' }}</dd>
                            <dt>País</dt><dd>{{ $envio->destinatario_pais }}</dd>
                        </dl>
                    </div>
                </div>
            </div>
            <div class="col-md-6">
                <div class="card border-0 shadow-sm h-100">
                    <div class="card-body">
                        <div class="d-flex align-items-center gap-2 mb-3">
                            <div class="rounded-circle d-flex align-items-center justify-content-center" style="width:36px;height:36px;background:#dcfce7">
                                <i class="bx bxs-store" style="color:#16a34a"></i>
                            </div>
                            <h2 class="h6 mb-0">Remitente</h2>
                        </div>
                        <dl class="mb-0 vx-dl-sm">
                            <dt>Nombre</dt><dd>{{ $envio->remitente_nombre }}</dd>
                            @if ($envio->remitente_telefono)
                                <dt>Teléfono</dt><dd>{{ $envio->remitente_telefono }}</dd>
                            @endif
                            @if ($envio->remitente_direccion)
                                <dt>Dirección</dt><dd>{{ $envio->remitente_direccion }}</dd>
                            @endif
                            @if ($envio->remitente_ciudad)
                                <dt>Ciudad</dt><dd>{{ $envio->remitente_ciudad }}</dd>
                            @endif
                        </dl>
                    </div>
                </div>
            </div>
        </div>

        {{-- Contenido --}}
        <div class="card border-0 shadow-sm mb-3">
            <div class="card-body">
                <h2 class="h6 mb-3"><i class="bx bxs-package me-2 text-warning"></i>Contenido y logística</h2>
                <div class="row g-3">
                    <div class="col-sm-6 col-md-3">
                        <div class="text-muted" style="font-size:.72rem">Contenido</div>
                        <div class="fw-semibold">{{ $envio->descripcion_contenido }}</div>
                    </div>
                    <div class="col-sm-6 col-md-2">
                        <div class="text-muted" style="font-size:.72rem">Peso</div>
                        <div class="fw-semibold">{{ number_format($envio->peso_kg, 3) }} kg</div>
                    </div>
                    @if ($envio->valor_declarado)
                        <div class="col-sm-6 col-md-3">
                            <div class="text-muted" style="font-size:.72rem">Valor declarado</div>
                            <div class="fw-semibold">${{ number_format($envio->valor_declarado, 2) }}</div>
                        </div>
                    @endif
                    @if ($envio->transportadora)
                        <div class="col-sm-6 col-md-2">
                            <div class="text-muted" style="font-size:.72rem">Transportadora</div>
                            <div class="fw-semibold">{{ $envio->transportadora }}</div>
                        </div>
                    @endif
                    @if ($envio->numero_guia)
                        <div class="col-sm-6 col-md-2">
                            <div class="text-muted" style="font-size:.72rem">N° Guía</div>
                            <div class="fw-semibold font-monospace">{{ $envio->numero_guia }}</div>
                        </div>
                    @endif
                </div>
                @if ($envio->observaciones)
                    <div class="mt-3 p-3 rounded" style="background:#f8fafc;font-size:.85rem">
                        <i class="bx bx-note me-1 text-muted"></i>{{ $envio->observaciones }}
                    </div>
                @endif
            </div>
        </div>

        {{-- Rótulos --}}
        <div class="card border-0 shadow-sm mb-3">
            <div class="card-header bg-transparent border-0 d-flex align-items-center justify-content-between pt-3 px-4">
                <h2 class="h6 mb-0"><i class="bx bx-qr me-2 text-info"></i>Rótulos ({{ $envio->rotulos->count() }})</h2>
                @if (has_permission('rotulos.generar'))
                    <button class="btn btn-sm btn-outline-info" data-bs-toggle="modal" data-bs-target="#modalGenRotulo">
                        <i class="bx bx-plus me-1"></i>Generar rótulo
                    </button>
                @endif
            </div>
            <div class="card-body px-4 pt-2">
                @forelse ($envio->rotulos as $rotulo)
                    <div class="d-flex align-items-center gap-3 py-2 border-bottom">
                        <div class="flex-grow-1">
                            <div class="fw-semibold font-monospace" style="font-size:.82rem">{{ $rotulo->codigo_rotulo }}</div>
                            <div class="text-muted" style="font-size:.72rem">
                                {{ $rotulo->formatoLabel() }} &bull; Generado {{ $rotulo->created_at->format('d/m/Y H:i') }}
                                @if ($rotulo->impreso)
                                    &bull; <span class="text-success"><i class="bx bx-check me-1"></i>Impreso {{ $rotulo->fecha_impresion?->format('d/m/Y H:i') }}</span>
                                @else
                                    &bull; <span class="text-warning">Pendiente impresión</span>
                                @endif
                            </div>
                        </div>
                        @if (has_permission('rotulos.imprimir'))
                            <a href="{{ route('rotulos.print', $rotulo) }}" target="_blank" class="btn btn-sm btn-outline-primary" title="Imprimir">
                                <i class="bx bx-printer"></i>
                            </a>
                            <a href="{{ route('rotulos.pdf', $rotulo) }}" class="btn btn-sm btn-outline-success" title="Descargar PDF">
                                <i class="bx bxs-file-pdf"></i>
                            </a>
                        @endif
                        @if (has_permission('rotulos.generar'))
                            <button class="btn btn-sm btn-outline-danger"
                                    data-rotulo-id="{{ $rotulo->id }}"
                                    data-delete-rotulo
                                    title="Eliminar"
                                    data-vx-confirm="¿Eliminar el rótulo {{ $rotulo->codigo_rotulo }}?"
                                    data-vx-confirm-type="danger"
                                    data-vx-confirm-title="Eliminar rótulo"
                                    data-vx-confirm-accept="Eliminar">
                                <i class="bx bx-trash"></i>
                            </button>
                        @endif
                    </div>
                @empty
                    <div class="text-center text-muted py-4">
                        <i class="bx bx-qr fs-2 d-block mb-2 opacity-25"></i>
                        Sin rótulos. Genera uno para imprimir.
                    </div>
                @endforelse

                {{-- Bulk generate --}}
                @if (has_permission('rotulos.generar') && $envio->rotulos->count() === 0)
                    <div class="mt-3">
                        <form method="POST" action="{{ route('envios.rotulos.masivo', $envio) }}">
                            @csrf
                            <div class="d-flex flex-wrap gap-2 align-items-center">
                                @foreach ($formatos as $key => $label)
                                    <div class="form-check">
                                        <input class="form-check-input" type="checkbox" name="formatos[]" value="{{ $key }}" id="fmt-{{ $key }}" checked>
                                        <label class="form-check-label" for="fmt-{{ $key }}" style="font-size:.8rem">{{ $label }}</label>
                                    </div>
                                @endforeach
                                <button type="submit" class="btn btn-sm btn-info ms-auto">
                                    <i class="bx bx-layer me-1"></i>Generar todos los formatos
                                </button>
                            </div>
                        </form>
                    </div>
                @endif
            </div>
        </div>

    </div>

    {{-- Right column --}}
    <div class="col-lg-4">

        {{-- Cambiar estado --}}
        @if (has_permission('envios.cambiar_estado'))
            <div class="card border-0 shadow-sm mb-3">
                <div class="card-body">
                    <h2 class="h6 mb-3"><i class="bx bx-transfer me-2 text-primary"></i>Cambiar estado</h2>
                    <form method="POST" action="{{ route('envios.estado', $envio) }}">
                        @csrf
                        @method('PATCH')
                        <div class="mb-2">
                            <select name="estado" class="form-select form-select-sm">
                                @foreach ($estados as $key => $meta)
                                    <option value="{{ $key }}" @selected($envio->estado === $key)>{{ $meta['label'] }}</option>
                                @endforeach
                            </select>
                        </div>
                        <div class="mb-2">
                            <input class="form-control form-control-sm" name="nota" placeholder="Nota (opcional)">
                        </div>
                        <button type="submit" class="btn btn-primary btn-sm w-100">Actualizar estado</button>
                    </form>
                </div>
            </div>
        @endif

        {{-- Info envío --}}
        <div class="card border-0 shadow-sm mb-3">
            <div class="card-body">
                <h2 class="h6 mb-3"><i class="bx bx-info-circle me-2 text-secondary"></i>Información</h2>
                <dl class="mb-0 vx-dl-sm">
                    <dt>N° Envío</dt><dd class="font-monospace">{{ $envio->numero_envio }}</dd>
                    <dt>Creado</dt><dd>{{ $envio->created_at->format('d/m/Y H:i') }}</dd>
                    @if ($envio->cliente)
                        <dt>Cliente</dt><dd>{{ $envio->cliente->nombre }}</dd>
                    @endif
                </dl>
            </div>
        </div>

        {{-- Historial --}}
        <div class="card border-0 shadow-sm">
            <div class="card-body">
                <h2 class="h6 mb-3"><i class="bx bx-history me-2 text-secondary"></i>Historial</h2>
                @forelse ($envio->historial as $h)
                    <div class="d-flex gap-2 pb-2 border-bottom mb-2" style="font-size:.78rem">
                        <div class="flex-shrink-0 mt-1">
                            <div class="rounded-circle bg-primary bg-opacity-10 d-flex align-items-center justify-content-center" style="width:22px;height:22px">
                                <i class="bx bx-right-arrow-alt text-primary" style="font-size:.7rem"></i>
                            </div>
                        </div>
                        <div>
                            <div>
                                @if ($h->estado_anterior)
                                    <span class="badge bg-secondary-subtle text-secondary">{{ $estados[$h->estado_anterior]['label'] ?? $h->estado_anterior }}</span>
                                    <i class="bx bx-right-arrow-alt mx-1"></i>
                                @endif
                                <span class="badge bg-primary-subtle text-primary">{{ $estados[$h->estado_nuevo]['label'] ?? $h->estado_nuevo }}</span>
                            </div>
                            @if ($h->nota)
                                <div class="text-muted mt-1">{{ $h->nota }}</div>
                            @endif
                            <div class="text-muted">{{ $h->created_at->format('d/m/Y H:i') }}</div>
                        </div>
                    </div>
                @empty
                    <div class="text-muted text-center py-2" style="font-size:.8rem">Sin historial.</div>
                @endforelse
            </div>
        </div>

    </div>
</div>

{{-- Modal: generar rótulo individual --}}
<div class="modal fade" id="modalGenRotulo" tabindex="-1">
    <div class="modal-dialog modal-dialog-centered" style="max-width:360px">
        <div class="modal-content border-0 shadow">
            <div class="modal-header border-0">
                <h5 class="modal-title h6">Generar rótulo</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
            </div>
            <form method="POST" action="{{ route('envios.rotulos.generar', $envio) }}">
                @csrf
                <div class="modal-body">
                    <label class="form-label">Formato</label>
                    <select name="formato" class="form-select">
                        @foreach ($formatos as $key => $label)
                            <option value="{{ $key }}">{{ $label }}</option>
                        @endforeach
                    </select>
                </div>
                <div class="modal-footer border-0">
                    <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Cancelar</button>
                    <button type="submit" class="btn btn-primary">Generar</button>
                </div>
            </form>
        </div>
    </div>
</div>

@endsection

@push('scripts')
<script>
(function () {
    // Delete rótulo via AJAX
    document.querySelectorAll('[data-delete-rotulo]').forEach(btn => {
        btn.addEventListener('click', function (e) {
            e.preventDefault();
            const id = this.dataset.rotuloId;
            const row = this.closest('.d-flex');
            window.vxConfirm && window.vxConfirm(
                this.dataset.vxConfirm || '¿Eliminar este rótulo?',
                { type: 'danger', title: 'Eliminar rótulo', accept: 'Eliminar' }
            ).then(ok => {
                if (!ok) return;
                fetch('/rotulos/' + id, {
                    method: 'DELETE',
                    headers: { 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content }
                }).then(r => r.json()).then(d => {
                    if (d.ok) row.remove();
                });
            });
        });
    });
})();
</script>
@endpush
