@php
    $bulkErrors = isset($errors) ? $errors->getBag('bulkPriceAssignment') : new \Illuminate\Support\ViewErrorBag();
    $bienesData = $bienesData ?? [];
    $bienesIndex = collect($bienesData)->keyBy('id');
    $formItems = collect(old('items', []))
        ->values()
        ->map(function ($item) use ($bienesIndex) {
            $bienId = (int) data_get($item, 'bien_id');
            $bien = $bienesIndex->get($bienId, []);

            return [
                'bien_id' => $bienId,
                'codigo' => data_get($item, 'codigo', data_get($bien, 'codigo', '')),
                'descripcion' => data_get($item, 'descripcion', data_get($bien, 'descripcion', '')),
                'marca' => data_get($item, 'marca', data_get($bien, 'marca', '')),
                'precio_vigente' => data_get($item, 'precio_vigente', data_get($bien, 'precio_vigente')),
                'porcentaje_utilidad_vigente' => data_get($item, 'porcentaje_utilidad_vigente', data_get($bien, 'porcentaje_utilidad_vigente')),
                'fecha_registro_vigente' => data_get($item, 'fecha_registro_vigente', data_get($bien, 'fecha_registro_vigente')),
                'precio' => data_get($item, 'precio', ''),
                'porcentaje_utilidad' => data_get($item, 'porcentaje_utilidad', ''),
                'fecha_registro' => data_get($item, 'fecha_registro', now()->toDateString()),
            ];
        })
        ->all();
@endphp

@extends('layouts.app')

@section('title', 'Asignacion masiva de precios')
@section('full_width', '1')

@push('styles')
    <link rel="stylesheet" href="{{ asset('css/crud-custom.css') }}">
    <link rel="stylesheet" href="{{ asset('css/carga-styles.css') }}">
    <style>
        .bulk-price-header-actions {
            flex-wrap: wrap;
        }

        .bulk-price-shell {
            width: min(1500px, 100%);
            margin: 0 auto;
        }

        .bulk-price-search-controls {
            width: 100%;
            max-width: 100%;
            min-width: 0;
        }

        .bulk-price-search-input-wrap {
            width: 100%;
            min-width: 0;
            max-width: 100%;
        }

        .bulk-price-search-field {
            min-width: 0;
        }

        .bulk-price-search-controls .form-control {
            min-width: 0;
        }

        .bulk-price-summary {
            width: 100%;
            text-align: left;
        }

        .bulk-price-empty-row .items-empty-cell {
            padding-inline: clamp(1rem, 6vw, 3rem) !important;
        }

        .bulk-price-empty-row .items-empty-state {
            width: min(100%, 34rem);
            margin-inline: auto;
        }

        .bulk-price-col-bien {
            width: 20%;
            min-width: 12rem;
        }

        .bulk-price-col-marca {
            width: 14%;
            min-width: 10rem;
        }

        .bulk-price-col-vigente {
            width: 20%;
            min-width: 12rem;
        }

        .bulk-price-col-precio,
        .bulk-price-col-utilidad {
            width: 10%;
            min-width: 8rem;
        }

        .bulk-price-col-fecha {
            width: 12%;
            min-width: 11rem;
        }

        .bulk-price-col-acciones {
            width: 14%;
            min-width: 8.5rem;
        }

        .bulk-price-input-compact,
        .bulk-price-input-date {
            max-width: 100%;
            padding-inline: 0.5rem;
        }

        .bulk-price-row-highlight {
            background: #fff7db;
        }

        .bulk-price-actions-cell .actions-cell {
            width: 100%;
            display: flex;
            align-items: center;
        }

        .bulk-price-actions-cell .bulk-remove-row-btn {
            width: 100%;
            white-space: nowrap;
        }

        @media (min-width: 992px) {
            .bulk-price-table-responsive {
                overflow-x: auto;
                overflow-y: visible;
            }

            .bulk-price-table {
                min-width: 86rem;
            }
        }

        @media (min-width: 768px) {

            .bulk-price-search-controls {
                align-items: flex-end;
            }

            .bulk-price-summary {
                text-align: right;
            }
        }

        @media (max-width: 991.98px) {
            .bulk-price-search-input-wrap {
                display: grid;
                grid-template-columns: 1fr;
            }

            .bulk-price-empty-row {
                width: min(100%, 30rem);
                margin-inline: auto;
            }

            .bulk-price-empty-row.items-empty-cell {
                min-height: 8.5rem;
            }
        }
    </style>
@endpush

@section('content')
    <div class="content-stage bulk-price-shell">
        <div class="card card-soft border-0">
            <div class="card-body p-4 p-md-5">
                <div class="d-flex flex-column flex-md-row justify-content-between align-items-md-center gap-2 mb-3">
                    <div>
                        <h1 class="h3 mb-0">Asignacion masiva de precios</h1>
                        <div class="text-muted small">Aplique un mismo precio base, utilidad y fecha a multiples bienes en una sola operacion.</div>
                    </div>
                    <div class="d-flex gap-2 bulk-price-header-actions">
                        <a href="{{ route('administracion.index') }}" class="btn btn-outline-secondary">Volver a Adm.</a>
                        <a href="{{ route('administracion.crud.index', ['entity' => $entity]) }}" class="btn btn-outline-secondary">Volver a Precios por Bien</a>
                    </div>
                </div>

                <div class="page-shell">
                    @if ($bulkErrors->any())
                        <div class="alert alert-danger" role="alert">
                            <div class="fw-semibold mb-1">Hay errores de validacion:</div>
                            <ul class="mb-0 ps-3">
                                @foreach ($bulkErrors->all() as $error)
                                    <li>{{ $error }}</li>
                                @endforeach
                            </ul>
                        </div>
                    @endif

                    <div class="alert alert-info" role="note">
                        <div class="fw-semibold mb-2">Instrucciones de uso</div>
                        <ol class="mb-0 ps-3">
                            <li>Busque el bien por codigo, descripcion o marca y presione Enter para incorporarlo a la lista.</li>
                            <li>Complete en cada fila el precio base, el porcentaje de utilidad y la fecha de registro.</li>
                            <li>Use el boton "Eliminar" para sacar filas que no deban procesarse.</li>
                            <li>Pulse "Aplicar Precios" para registrar un nuevo precio por cada fila agregada.</li>
                        </ol>
                    </div>

                    <form method="POST" action="{{ route('administracion.crud.precios-por-bien.bulk-store') }}" autocomplete="off" class="form-shell">
                        @csrf

                        <section class="section-card">
                            <div class="section-title-row">
                                <div>
                                    <div class="section-title">Bienes agregados</div>
                                    <div class="text-muted small">Agregue bienes existentes a la tabla y complete sus campos antes de guardar.</div>
                                </div>
                                <div class="d-flex flex-column gap-2 bulk-price-search-controls">
                                    <div class="bulk-price-search-input-wrap">
                                        <input
                                            id="bulkPriceBienSearch"
                                            type="text"
                                            class="form-control bulk-price-search-field"
                                            placeholder="Buscar por codigo, descripcion o marca y presionar Enter"
                                            list="bulkPriceBienSuggestions"
                                            autocomplete="off"
                                        >
                                    </div>
                                    <datalist id="bulkPriceBienSuggestions">
                                        @foreach ($bienesData as $bien)
                                            <option value="{{ $bien['label'] ?? '' }}"></option>
                                        @endforeach
                                    </datalist>
                                </div>
                            </div>

                            <div class="table-wrap">
                                <div class="table-responsive bulk-price-table-responsive">
                                    <table class="table table-sm align-middle items-table bulk-price-table">
                                        <thead>
                                            <tr>
                                                <th class="bulk-price-col-bien">Bien</th>
                                                <th class="bulk-price-col-marca">Marca</th>
                                                <th class="bulk-price-col-vigente">Precio vigente</th>
                                                <th class="bulk-price-col-precio">Precio ($)</th>
                                                <th class="bulk-price-col-utilidad">% Utilidad</th>
                                                <th class="bulk-price-col-fecha">Fecha</th>
                                                <th class="bulk-price-col-acciones">Acciones</th>
                                            </tr>
                                        </thead>
                                        <tbody id="bulkPriceItemsBody">
                                            @forelse ($formItems as $index => $item)
                                                <tr data-item-row="true" data-bien-id="{{ (int) ($item['bien_id'] ?? 0) }}">
                                                    @include('administracion.crud.entities.precios-por-bien.partials.bulk-row-cells', [
                                                        'index' => $index,
                                                        'item' => $item,
                                                        'errorPrefix' => 'items.' . $index,
                                                    ])
                                                </tr>
                                            @empty
                                                <tr id="bulkPriceEmptyRow" class="bulk-price-empty-row">
                                                    <td colspan="7" class="items-empty-cell">
                                                        <div class="items-empty-state">
                                                            <strong>No hay bienes agregados</strong>
                                                            <span>Use el buscador y presione Enter para preparar la asignacion masiva.</span>
                                                        </div>
                                                    </td>
                                                </tr>
                                            @endforelse
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                        </section>

                        <div class="d-flex gap-2 mt-4 flex-wrap">
                            <button class="btn btn-brand" type="submit">Aplicar Precios</button>
                            <a class="btn btn-outline-secondary" href="{{ route('administracion.crud.index', ['entity' => $entity]) }}">Cancelar</a>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
@endsection

@include('administracion.crud.entities.precios-por-bien.partials.bulk-row-template')

@push('scripts')
    @include('administracion.crud.entities.precios-por-bien.scripts-bulk-form')
@endpush