@extends('layouts.admin.theme')

@section('title', env('APP_NAME') . ' :: Arte Sacra - Emitir Relatório de Arte Sacra')

@section('body_class', 'page-report')

@section('content')
    <div class="card shadow-sm">
        
        @php $headLine = "<i class='fa-solid fa-church'></i> Arte Sacra - Emitir Relatório de Arte Sacra"; @endphp

        @include('components.buttons._headLineButtonsBackAdd', [
            "headLine" => __($headLine),
            "routeBack" => "admin.cultura.arteSacra.index",
            "routeBackParams" => [],
            "fontawesomeBack" => '<i class="fa-solid fa-rectangle-list"></i>',
            "nameBack" => __("Lista de Peças"),
            "routeAdd" => "admin.cultura.arteSacra.create",
            "routeAddParams" => [],
            "nameAdd" => __("Nova peça"),
            "permission" => "GERENCIADOR_DO_CADASTRO_DE_ARTE_SACRA",
            "tabs" => [
                [
                    'route' => 'admin.cultura.arteSacra.options', 
                    'class' => 'fa-list', 
                    'label' => 'Edição de Opções', 
                    'permission' => 'GERENCIADOR_DO_CADASTRO_DE_ARTE_SACRA',
                ],
                [
                    'route' => 'admin.cultura.arteSacra.trash', 
                    'class' => 'fa-trash', 
                    'label' => 'Lixeira', 
                    'permission' => 'DIRETOR_DE_ARTE_SACRA',
                ],
                [
                    'route' => 'admin.cultura.arteSacra.logs.usuarios', 
                    'class' => 'fa-user-secret', 
                    'label' => 'Logs de Usuários', 
                    'permission' => 'DIRETOR_DE_ARTE_SACRA',
                ],
            ],
        ])
        
        @include('errors.messageFlash')

        <div class="card-body">
            <div class="modal fade" id="modalExportacao" tabindex="-1" aria-labelledby="modalExportacaoLabel"
                aria-modal="true" data-bs-backdrop="false">
                <div class="modal-dialog modal-lg">
                    <div class="modal-content">
                        <div class="modal-header bg-primary text-white">
                            <h5 class="modal-title" id="modalExportacaoLabel">Selecione os campos para exportação</h5>
                            <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"
                                aria-label="Fechar modal"></button>
                        </div>
                        <div class="modal-body">
                            <div class="row" id="checkbox-container">
                                @foreach ($camposTodos as $campo)
                                    <div class="col-md-4 mb-3">
                                        <div class="form-check">
                                            <input class="form-check-input campo-exportar" type="checkbox"
                                                value="{{ $campo }}" id="check-{{ $campo }}" checked>
                                            <label class="form-check-label" for="check-{{ $campo }}">
                                                {{ $rotulos[$campo] ?? ucfirst(str_replace('_', ' ', $campo)) }}
                                            </label>
                                        </div>
                                    </div>
                                @endforeach
                            </div>
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-secondary me-2" id="selecionarTodosBtn">
                                <i class="fas fa-check-circle"></i> Selecionar Todos
                            </button>
                            <button type="button" class="btn btn-secondary" id="deselecionarTodosBtn">
                                <i class="fas fa-times-circle"></i> Deselecionar Todos
                            </button>
                            <select id="tipoExportacao" class="form-select w-auto d-inline-block ms-2 me-2">
                                <option value="csv">CSV</option>
                                <option value="pdf">PDF</option>
                            </select>
                            <button type="button" class="btn btn-primary" id="exportarSelecionadosBtn"
                                onclick="exportarTabela()">
                                <i class="fas fa-file-export"></i> Exportar Selecionados
                            </button>
                        </div>

                    </div>
                </div>
            </div>

            <div id="formRelatorioGeral">
                <form action="{{ route('admin.cultura.arteSacra.report.filtros') }}" method="GET">
                    @csrf
                    <div>
                        <h3>Filtros</h3>
                        <div class="row">
                            <div class="col-md-3">
                                <label for="modo_aquisicao_id">Modo de Aquisição:</label>
                                <select name="modo_aquisicao_id" id="modo_aquisicao_id"
                                    class="form-control @error('modo_aquisicao_id') is-invalid @enderror">
                                    <option value="">Selecione...</option>
                                    @foreach ($modosAquisicao as $id => $modo)
                                        <option value="{{ $id }}"
                                            {{ old('modo_aquisicao_id') == $id ? 'selected' : '' }}>
                                            {{ $modo }}
                                        </option>
                                    @endforeach
                                </select>
                                @error('modo_aquisicao_id')
                                    <div class="invalid-feedback">{{ $message }}</div>
                                @enderror
                            </div>

                            <div class="col-md-3">
                                <label for="tipo_id">Tipo:</label>
                                <select name="tipo_id" id="tipo_id"
                                    class="form-control @error('tipo_id') is-invalid @enderror">
                                    <option value="">Selecione...</option>
                                    @foreach ($tipos as $id => $tipo)
                                        <option value="{{ $id }}" {{ old('tipo_id') == $id ? 'selected' : '' }}>
                                            {{ $tipo }}
                                        </option>
                                    @endforeach
                                </select>
                                @error('tipo_id')
                                    <div class="invalid-feedback">{{ $message }}</div>
                                @enderror
                            </div>

                            <div class="col-md-3">
                                <label for="ano_arte">Ano da Peça:</label>
                                <input type="number" name="ano_arte" id="ano_arte"
                                    class="form-control @error('ano_arte') is-invalid @enderror"
                                    value="{{ old('ano_arte') }}" min="1000" max="{{ date('Y') }}"
                                    placeholder="Ex: 1950">
                                @error('ano_arte')
                                    <div class="invalid-feedback">{{ $message }}</div>
                                @enderror
                            </div>

                            <div class="col-md-3">
                                <label for="material_id">Material:</label>
                                <select name="material_id" id="material_id"
                                    class="form-control @error('material_id') is-invalid @enderror">
                                    <option value="">Selecione...</option>
                                    @foreach ($materiais as $id => $material)
                                        <option value="{{ $id }}"
                                            {{ old('material_id') == $id ? 'selected' : '' }}>
                                            {{ $material }}
                                        </option>
                                    @endforeach
                                </select>
                                @error('material_id')
                                    <div class="invalid-feedback">{{ $message }}</div>
                                @enderror
                            </div>

                            <div class="col-md-3">
                                <label for="tecnica_id">Técnica:</label>
                                <select name="tecnica_id" id="tecnica_id"
                                    class="form-control @error('tecnica_id') is-invalid @enderror">
                                    <option value="">Selecione...</option>
                                    @foreach ($tecnicas as $id => $tecnica)
                                        <option value="{{ $id }}"
                                            {{ old('tecnica_id') == $id ? 'selected' : '' }}>
                                            {{ $tecnica }}
                                        </option>
                                    @endforeach
                                </select>
                                @error('tecnica_id')
                                    <div class="invalid-feedback">{{ $message }}</div>
                                @enderror
                            </div>

                            <div class="col-md-3">
                                <label for="proprietario_id">Proprietário:</label>
                                <select name="proprietario_id" id="proprietario_id"
                                    class="form-control @error('proprietario_id') is-invalid @enderror">
                                    <option value="">Selecione...</option>
                                    @foreach ($proprietarios as $id => $proprietario)
                                        <option value="{{ $id }}"
                                            {{ old('proprietario_id') == $id ? 'selected' : '' }}>
                                            {{ $proprietario }}
                                        </option>
                                    @endforeach
                                </select>
                                @error('proprietario_id')
                                    <div class="invalid-feedback">{{ $message }}</div>
                                @enderror
                            </div>

                            <div class="col-md-3">
                                <label for="localizacao_id">Localização:</label>
                                <select name="localizacao_id" id="localizacao_id"
                                    class="form-control @error('localizacao_id') is-invalid @enderror">
                                    <option value="">Selecione...</option>
                                    @foreach ($proprietarios as $id => $localizacao)
                                        <option value="{{ $id }}"
                                            {{ old('localizacao_id') == $id ? 'selected' : '' }}>
                                            {{ $localizacao }}
                                        </option>
                                    @endforeach
                                </select>
                                @error('localizacao_id')
                                    <div class="invalid-feedback">{{ $message }}</div>
                                @enderror
                            </div>

                            <div class="col-12 text-end mt-3">
                                <button type="submit" class="btn btn-primary mt-2">
                                    <i class="fas fa-filter"></i> Filtrar
                                </button>
                            </div>
                        </div>
                    </div>
                </form>

                @if (isset($acervos))
                    <h3 class="mt-4">Relatório de Acervo</h3>
                    <div class="table-responsive mt-4" id="table-relatorio">
                        <table class="table table-striped">
                            <thead>
                                <tr>
                                    @foreach ($campos as $campo)
                                        <th>{{ $rotulos[$campo] ?? ucfirst(str_replace('_', ' ', $campo)) }}</th>
                                    @endforeach
                                </tr>
                            </thead>
                            <tbody>
                                @forelse($acervos as $acervo)
                                    <tr>
                                        @foreach ($campos as $campo)
                                            <td>
                                                @switch($campo)
                                                    @case('tipo_id')
                                                        {{ optional($acervo->tipo)->tipo ?? 'Não informado' }}
                                                    @break

                                                    @case('modo_aquisicao_id')
                                                        {{ optional($acervo->modoAquisicao)->modo_aquisicao ?? 'Não informado' }}
                                                    @break

                                                    @case('material_id')
                                                        {{ optional($acervo->material)->material ?? 'Não informado' }}
                                                    @break

                                                    @case('tecnica_id')
                                                        {{ optional($acervo->tecnica)->tecnica ?? 'Não informado' }}
                                                    @break

                                                    @case('proprietario_id')
                                                        {{ optional($acervo->proprietario)->proprietario ?? 'Não informado' }}
                                                    @break

                                                    @case('localizacao_id')
                                                        {{ optional($acervo->localizacao)->proprietario ?? 'Não informado' }}
                                                    @break

                                                    @case('designacao_id')
                                                        {{ optional($acervo->designacao)->designacao ?? 'Não informado' }}
                                                    @break

                                                    @case('classe_id')
                                                        {{ optional($acervo->classe)->classe ?? 'Não informado' }}
                                                    @break

                                                    @case('tombamento_id')
                                                        {{ optional($acervo->tombamento)->tombamento ?? 'Não informado' }}
                                                    @break

                                                    @case('roca')
                                                        {{ $acervo->roca ? 'Sim' : 'Não' }}
                                                    @break

                                                    @case('imagem')
                                                        @if ($acervo->imagem && $acervo->imagem !== 'default.jpg')
                                                            <img src="{{ asset('pmar/assets/img/arte_sacra/' . $acervo->imagem) }}"
                                                                width="100" alt="{{ $acervo->nome_peca }}"
                                                                class="img-thumbnail hover-zoom">
                                                        @else
                                                            <img src="{{ asset('pmar/assets/img/arte_sacra/default.jpg') }}"
                                                                width="100" alt="Imagem padrão" class="img-thumbnail">
                                                        @endif
                                                    @break

                                                    @default
                                                        {{ $acervo->$campo ?? 'Não informado' }}
                                                @endswitch
                                            </td>
                                        @endforeach
                                    </tr>
                                    @empty
                                        <tr>
                                            <td colspan="{{ count($campos) }}">* Nenhum registro encontrado!</td>
                                        </tr>
                                    @endforelse
                                </tbody>
                            </table>
                        </div>
                    @endif

                    @if ($acervos->hasPages())
                        <nav>
                            <ul class="pagination justify-content-center">
                                @if ($acervos->onFirstPage())
                                    <li class="page-item disabled"><span class="page-link">&laquo; Anterior</span></li>
                                @else
                                    <li class="page-item">
                                        <a class="page-link" href="{{ $acervos->previousPageUrl() }}" rel="prev">&laquo;
                                            Anterior</a>
                                    </li>
                                @endif

                                @php
                                    $start = max($acervos->currentPage() - 2, 2);
                                    $end = min($acervos->currentPage() + 2, $acervos->lastPage() - 1);
                                @endphp

                                <li class="page-item {{ $acervos->currentPage() == 1 ? 'active' : '' }}">
                                    <a class="page-link" href="{{ $acervos->url(1) }}">1</a>
                                </li>

                                @if ($start > 2)
                                    <li class="page-item disabled"><span class="page-link">...</span></li>
                                @endif

                                @for ($i = $start; $i <= $end; $i++)
                                    <li class="page-item {{ $acervos->currentPage() == $i ? 'active' : '' }}">
                                        <a class="page-link" href="{{ $acervos->url($i) }}">{{ $i }}</a>
                                    </li>
                                @endfor

                                @if ($end < $acervos->lastPage() - 1)
                                    <li class="page-item disabled"><span class="page-link">...</span></li>
                                @endif

                                @if ($acervos->lastPage() > 1)
                                    <li
                                        class="page-item {{ $acervos->currentPage() == $acervos->lastPage() ? 'active' : '' }}">
                                        <a class="page-link"
                                            href="{{ $acervos->url($acervos->lastPage()) }}">{{ $acervos->lastPage() }}</a>
                                    </li>
                                @endif

                                @if ($acervos->hasMorePages())
                                    <li class="page-item">
                                        <a class="page-link" href="{{ $acervos->nextPageUrl() }}" rel="next">Próximo
                                            &raquo;</a>
                                    </li>
                                @else
                                    <li class="page-item disabled"><span class="page-link">Próximo &raquo;</span></li>
                                @endif
                            </ul>
                        </nav>
                    @endif

                    <div class="col-12 text-end mt-3">
                        <button type="button" class="btn btn-danger mt-2 ms-2" onclick="abrirModalExportacao()">
                            <i class="fas fa-file-excel"></i> Exportar Relatório
                        </button>
                    </div>
                </div>
            </div>
        </div>

        <script>
            function exportarTabela() {
                const camposSelecionados = [...document.querySelectorAll('.campo-exportar:checked')].map(el => el.value);
                const tipoExportacao = document.getElementById('tipoExportacao').value;
                const linhasTabela = document.querySelectorAll('#table-relatorio tbody tr');

                if (camposSelecionados.length === 0) {
                    alert('Por favor, selecione pelo menos um campo para exportação.');
                    return;
                }

                const temRegistros = Array.from(linhasTabela).some(tr => !tr.innerText.includes('Nenhum registro encontrado'));
                if (!temRegistros) {
                    alert('Nenhum item disponível para exportação.');
                    return;
                }

                const params = new URLSearchParams(window.location.search);

                const form = document.createElement('form');
                form.method = 'POST';
                form.action = tipoExportacao === 'csv' ?
                    '{{ route('admin.cultura.arteSacra.report.exportarCSV') }}' :
                    '{{ route('admin.cultura.arteSacra.report.exportarPDF') }}';

                const token = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
                const inputToken = document.createElement('input');
                inputToken.type = 'hidden';
                inputToken.name = '_token';
                inputToken.value = token;
                form.appendChild(inputToken);

                camposSelecionados.forEach(campo => {
                    const input = document.createElement('input');
                    input.type = 'hidden';
                    input.name = 'campos[]';
                    input.value = campo;
                    form.appendChild(input);
                });

                for (const [key, value] of params.entries()) {
                    const input = document.createElement('input');
                    input.type = 'hidden';
                    input.name = key;
                    input.value = value;
                    form.appendChild(input);
                }

                document.body.appendChild(form);
                form.submit();
            }
        </script>
    @endsection
