@extends('layouts.admin.theme')

@section('title', env('APP_NAME') . ' :: ' . ($linha ? __('Editar Linha') : __('Nova Linha')) . ' - MobiAngra')

@section('content')
<div class="card shadow-sm">
    @php
        $isEdicao = $linha !== null;
        $headLine = "<i class='fa-solid fa-bus'></i> " . ($isEdicao ? __('Linha :cod - :nome', ['cod' => $linha->codigo, 'nome' => $linha->nome]) : __('Nova Linha de Horários'));
    @endphp

    @include('components.buttons._headLineButtonsBackAdd', [
        'headLine'        => $headLine,
        'routeBack'       => 'admin.mobiangra.index',
        'routeBackParams' => ['tab' => 'horarios'],
        'nameBack'        => __('Voltar'),
        'permission'      => 'GERENCIADOR_DE_MOBIANGRA',
    ])

    <div class="card-body">
        @include('errors.messageFlash')

        {{-- ===== DADOS BÁSICOS DA LINHA ===== --}}
        <form action="{{ $isEdicao ? route('admin.mobiangra.horarios.linhas.update', $linha) : route('admin.mobiangra.horarios.linhas.store') }}"
              method="post">
            @csrf
            @if ($isEdicao) @method('PUT') @endif

            <div class="border rounded p-3 mb-4">
                <h5 class="mb-3"><i class="fa-solid fa-info-circle me-1"></i>{{ __('Dados da Linha') }}</h5>
                <div class="row g-3">
                    <div class="col-md-2">
                        <label class="form-label fw-semibold">{{ __('Código') }} <span class="text-danger">*</span></label>
                        <input type="text" name="codigo" class="form-control @error('codigo') is-invalid @enderror"
                               value="{{ old('codigo', $linha->codigo ?? '') }}"
                               placeholder="ex: 101, C01, T10" maxlength="20" required>
                        @error('codigo')<div class="invalid-feedback">{{ $message }}</div>@enderror
                    </div>
                    <div class="col-md-4">
                        <label class="form-label fw-semibold">{{ __('Nome Curto') }} <span class="text-danger">*</span></label>
                        <input type="text" name="nome" class="form-control @error('nome') is-invalid @enderror"
                               value="{{ old('nome', $linha->nome ?? '') }}"
                               placeholder="ex: CANTAGALO x DIVISA MANGARATIBA" maxlength="255" required>
                        @error('nome')<div class="invalid-feedback">{{ $message }}</div>@enderror
                    </div>
                    <div class="col-md-6">
                        <label class="form-label fw-semibold">{{ __('Nome Completo (exibido ao público)') }} <span class="text-danger">*</span></label>
                        <input type="text" name="nome_completo" class="form-control @error('nome_completo') is-invalid @enderror"
                               value="{{ old('nome_completo', $linha->nome_completo ?? '') }}"
                               placeholder="ex: 101 - CANTAGALO x DIVISA MANGARATIBA" maxlength="255" required>
                        @error('nome_completo')<div class="invalid-feedback">{{ $message }}</div>@enderror
                    </div>
                    <div class="col-md-2">
                        <label class="form-label fw-semibold">{{ __('Tarifa (R$)') }}</label>
                        <input type="number" step="0.01" min="0" name="tarifa"
                               class="form-control @error('tarifa') is-invalid @enderror"
                               value="{{ old('tarifa', $linha->tarifa ?? '') }}" placeholder="7,00">
                        @error('tarifa')<div class="invalid-feedback">{{ $message }}</div>@enderror
                    </div>
                    <div class="col-md-2">
                        <label class="form-label fw-semibold">{{ __('Tarifa Cidadão (R$)') }}</label>
                        <input type="number" step="0.01" min="0" name="tarifa_cidadao"
                               class="form-control @error('tarifa_cidadao') is-invalid @enderror"
                               value="{{ old('tarifa_cidadao', $linha->tarifa_cidadao ?? '') }}" placeholder="2,00">
                        @error('tarifa_cidadao')<div class="invalid-feedback">{{ $message }}</div>@enderror
                    </div>
                    <div class="col-md-2">
                        <label class="form-label fw-semibold">{{ __('Ordem') }}</label>
                        <input type="number" min="0" name="ordem"
                               class="form-control"
                               value="{{ old('ordem', $linha->ordem ?? 0) }}">
                    </div>
                    <div class="col-md-2 d-flex align-items-end">
                        <div class="form-check mb-2">
                            <input class="form-check-input" type="checkbox" name="publicada" id="publicada" value="1"
                                   {{ old('publicada', $linha->publicada ?? true) ? 'checked' : '' }}>
                            <label class="form-check-label" for="publicada">{{ __('Publicada') }}</label>
                        </div>
                    </div>
                </div>

                @if ($isEdicao)
                    {{-- -- Legendas de cores --------------------------------- --}}
                    <hr>
                    <h6 class="mt-2 mb-1">
                        <i class="fa-solid fa-circle-half-stroke me-1 text-muted"></i>{{ __('Legendas de cores') }}
                    </h6>
                    <p class="text-muted small mb-2">
                        {{ __('Explique o significado dos horários marcados em cores diferentes na planilha.') }}
                    </p>
                    <div id="legendas-container">
                        @foreach ($linha->legendas as $i => $leg)
                        <div class="d-flex align-items-center gap-2 mb-2 legenda-row">
                            <select name="legendas[{{ $i }}][cor]" class="form-select form-select-sm" style="width:130px" required>
                                @foreach (['azul' => __('🔵 Azul'), 'vermelho' => __('🔴 Vermelho'), 'verde' => __('🟢 Verde'), 'laranja' => __('🟠 Laranja'), 'amarelo' => __('🟡 Amarelo'), 'preto' => __('⚫ Preto')] as $val => $label)
                                    <option value="{{ $val }}" {{ $leg->cor === $val ? 'selected' : '' }}>{{ $label }}</option>
                                @endforeach
                            </select>
                            <input type="text" name="legendas[{{ $i }}][descricao]" class="form-control form-control-sm"
                                   value="{{ $leg->descricao }}" placeholder="{{ __('Ex: Saindo do Cantagalo') }}" required>
                            <button type="button" class="btn btn-sm btn-outline-danger flex-shrink-0 remover-legenda" title="{{ __('Remover') }}">
                                <i class="fa-solid fa-trash"></i>
                            </button>
                        </div>
                        @endforeach
                    </div>
                    <button type="button" class="btn btn-sm btn-outline-secondary mt-1" id="btn-add-legenda">
                        <i class="fa-solid fa-plus me-1"></i>{{ __('Adicionar legenda') }}
                    </button>

                    {{-- -- Integrações ---------------------------------------- --}}
                    <hr>
                    <h6 class="mt-2 mb-1">
                        <i class="fa-solid fa-right-left me-1 text-muted"></i>{{ __('Integrações') }}
                    </h6>
                    <p class="text-muted small mb-2">
                        {{ __('Indique quais linhas o passageiro pode usar em sequência pagando apenas uma passagem, e por quanto tempo.') }}
                    </p>
                    <div id="integracoes-container">
                        @foreach ($linha->integracoes as $i => $integ)
                        @php $envolvidas = $integ->linhas_envolvidas ?? []; @endphp
                        <div class="integracao-row border rounded p-3 mb-3 bg-light">
                            <div class="d-flex justify-content-between align-items-start mb-2">
                                <strong class="small text-muted">{{ __('Integração') }} {{ $i + 1 }}</strong>
                                <button type="button" class="btn btn-sm btn-outline-danger remover-integracao" title="{{ __('Remover integração') }}">
                                    <i class="fa-solid fa-trash"></i>
                                </button>
                            </div>

                            {{-- Tempo de integração --}}
                            <div class="mb-3">
                                <label class="form-label form-label-sm fw-semibold">
                                    <i class="fa-regular fa-clock me-1"></i>{{ __('Tempo de integração') }}
                                </label>
                                <div class="input-group input-group-sm" style="max-width:180px">
                                    <input type="number" min="0" max="9999"
                                           name="integracoes[{{ $i }}][tempo_minutos]"
                                           class="form-control"
                                           value="{{ $integ->tempo_minutos }}">
                                    <span class="input-group-text">{{ __('minutos') }}</span>
                                </div>
                            </div>

                            {{-- Linhas envolvidas --}}
                            <label class="form-label form-label-sm fw-semibold mb-2">
                                <i class="fa-solid fa-bus me-1"></i>{{ __('Linhas envolvidas na integração') }}
                            </label>
                            <div class="linhas-envolvidas-container d-flex flex-column gap-2 mb-2">
                                @foreach ($envolvidas as $j => $lenv)
                                <div class="linha-envolvida-row d-flex align-items-center gap-2">
                                    @if ($j > 0)
                                    <span class="text-muted fw-bold" style="width:20px;text-align:center">↔</span>
                                    @else
                                    <span style="width:20px"></span>
                                    @endif
                                    <input type="text"
                                           name="integracoes[{{ $i }}][linhas][{{ $j }}][codigo]"
                                           class="form-control form-control-sm"
                                           style="max-width:80px"
                                           value="{{ $lenv['codigo'] ?? '' }}"
                                           placeholder="{{ __('Cód.') }}" required>
                                    <input type="text"
                                           name="integracoes[{{ $i }}][linhas][{{ $j }}][nome]"
                                           class="form-control form-control-sm"
                                           value="{{ $lenv['nome'] ?? '' }}"
                                           placeholder="{{ __('Nome do destino, ex: Divisa Mangaratiba') }}" required>
                                    @if ($j >= 2)
                                    <button type="button" class="btn btn-sm btn-outline-danger flex-shrink-0 remover-linha-envolvida" title="{{ __('Remover') }}">
                                        <i class="fa-solid fa-minus"></i>
                                    </button>
                                    @else
                                    <span style="width:30px"></span>
                                    @endif
                                </div>
                                @endforeach
                            </div>
                            <button type="button" class="btn btn-sm btn-outline-secondary btn-add-linha-envolvida">
                                <i class="fa-solid fa-plus me-1"></i>{{ __('Adicionar outra linha') }}
                            </button>
                        </div>
                        @endforeach
                    </div>
                    <button type="button" class="btn btn-sm btn-outline-secondary mt-1" id="btn-add-integracao">
                        <i class="fa-solid fa-plus me-1"></i>{{ __('Adicionar integração') }}
                    </button>

                    <div id="mobiangra-horarios-linha-form-config" class="d-none"
                         data-legenda-idx="{{ count($linha->legendas) }}"
                         data-integracao-idx="{{ count($linha->integracoes) }}"
                         data-legendas='@json($linha->legendas->map(fn ($l) => ["cor" => $l->cor, "descricao" => $l->descricao])->values())'
                         data-cor-azul="{{ __('🔵 Azul') }}"
                         data-cor-vermelho="{{ __('🔴 Vermelho') }}"
                         data-cor-verde="{{ __('🟢 Verde') }}"
                         data-cor-laranja="{{ __('🟠 Laranja') }}"
                         data-cor-amarelo="{{ __('🟡 Amarelo') }}"
                         data-cor-preto="{{ __('⚫ Preto') }}"
                         data-ph-descricao="{{ __('Ex: Saindo do Cantagalo') }}"
                         data-ph-codigo="{{ __('Cód.') }}"
                         data-ph-nome="{{ __('Nome do destino, ex: Divisa Mangaratiba') }}"
                         data-label-integracao="{{ __('Integração') }}"
                         data-label-tempo="{{ __('Tempo de integração') }}"
                         data-label-minutos="{{ __('minutos') }}"
                         data-label-linhas="{{ __('Linhas envolvidas na integração') }}"
                         data-label-add-linha="{{ __('Adicionar outra linha') }}"
                         data-label-remover="{{ __('Remover') }}"
                         data-label-remover-integracao="{{ __('Remover integração') }}"
                         data-label-pintor="{{ __('Clique em cada horário para alternar a cor das legendas cadastradas.') }}"
                         data-label-cores="{{ __('Cores dos horários') }}"
                         data-label-sem-legenda="{{ __('Salve ao menos uma legenda de cor acima para pintar horários.') }}"
                         data-label-padrao="{{ __('Padrão (sem cor)') }}"
                         data-label-horarios="{{ __('horários') }}">
                    </div>
                @endif
            </div>

            <div class="d-flex gap-2 mb-4 flex-wrap">
                @if ($isEdicao && (auth()->user()->getPermissaoDetalhes('GERENCIADOR_DE_MOBIANGRA')['visualizar'] ?? false))
                    <a href="{{ route('mobiangra.horarios', ['linha' => $linha->codigo]) }}"
                       target="_blank"
                       rel="noopener noreferrer"
                       class="btn btn-outline-primary"
                       @if (! $linha->publicada)
                           title="{{ __('Esta linha está oculta no site. Publique-a para que o público possa vê-la.') }}"
                       @else
                           title="{{ __('Abrir a grade de horários desta linha no site público') }}"
                       @endif>
                        <i class="fa-solid fa-eye me-1" aria-hidden="true"></i>{{ __('Visualizar no site') }}
                    </a>
                @endif
                @if (auth()->user()->getPermissaoDetalhes('GERENCIADOR_DE_MOBIANGRA')['editar'] ?? false)
                    <button type="submit" class="btn btn-primary">
                        <i class="fa-solid fa-floppy-disk me-1"></i>{{ __('Salvar dados da linha') }}
                    </button>
                    <a href="{{ route('admin.mobiangra.index', ['tab' => 'horarios']) }}" class="btn btn-outline-secondary">
                        {{ __('Cancelar') }}
                    </a>
                @endif
            </div>
        </form>

        {{-- ===== SEÇÕES E GRADES (somente em edição) ===== --}}
        @if ($isEdicao)
            <hr>
            <div class="d-flex align-items-center justify-content-between mb-3">
                <h5 class="mb-0"><i class="fa-solid fa-table me-1"></i>{{ __('Seções e Horários') }}</h5>
                @if (auth()->user()->getPermissaoDetalhes('GERENCIADOR_DE_MOBIANGRA')['adicionar'] ?? false)
                <form action="{{ route('admin.mobiangra.horarios.secoes.store', $linha) }}" method="post" class="d-flex gap-2">
                    @csrf
                    <input type="text" name="titulo" class="form-control form-control-sm"
                           style="width:260px" placeholder="{{ __('Título da nova seção, ex: SAÍDA DO CENTRO') }}" required>
                    <button type="submit" class="btn btn-sm btn-success">
                        <i class="fa-solid fa-plus me-1"></i>{{ __('Adicionar seção') }}
                    </button>
                </form>
                @endif
            </div>

            @forelse ($linha->secoes as $secao)
            <div class="border rounded mb-3" id="secao-{{ $secao->id }}">
                {{-- Cabeçalho da seção --}}
                <div class="d-flex align-items-center justify-content-between p-3 bg-light rounded-top border-bottom">
                    <form action="{{ route('admin.mobiangra.horarios.secoes.update', $secao) }}" method="post"
                          class="d-flex align-items-center gap-2 flex-grow-1 me-3">
                        @csrf @method('PUT')
                        <input type="text" name="titulo" class="form-control form-control-sm fw-semibold"
                               value="{{ $secao->titulo }}" required>
                        @if (auth()->user()->getPermissaoDetalhes('GERENCIADOR_DE_MOBIANGRA')['editar'] ?? false)
                        <button type="submit" class="btn btn-sm btn-outline-primary text-nowrap">
                            <i class="fa-solid fa-pen"></i> {{ __('Renomear') }}
                        </button>
                        @endif
                    </form>
                    @if (auth()->user()->getPermissaoDetalhes('GERENCIADOR_DE_MOBIANGRA')['excluir'] ?? false)
                    <form action="{{ route('admin.mobiangra.horarios.secoes.destroy', $secao) }}" method="post"
                          onsubmit="return confirm('{{ __('Excluir esta seção e todos seus horários?') }}')">
                        @csrf @method('DELETE')
                        <button type="submit" class="btn btn-sm btn-outline-danger">
                            <i class="fa-solid fa-trash"></i>
                        </button>
                    </form>
                    @endif
                </div>

                <div class="p-3">
                    {{-- Grades existentes --}}
                    @if ($secao->grades->isNotEmpty())
                    <div class="row g-3 mb-3">
                        @foreach ($secao->grades as $grade)
                        <div class="col-md-4">
                            <div class="card h-100 border-0 shadow-sm">
                                <div class="card-header d-flex justify-content-between align-items-center py-2"
                                     style="background:#0085CD;color:#fff">
                                    <strong class="small">{{ $grade->label }}</strong>
                                    @if (auth()->user()->getPermissaoDetalhes('GERENCIADOR_DE_MOBIANGRA')['excluir'] ?? false)
                                    <form action="{{ route('admin.mobiangra.horarios.grades.destroy', $grade) }}"
                                          method="post"
                                          onsubmit="return confirm('{{ __('Remover esta grade de horários?') }}')">
                                        @csrf @method('DELETE')
                                        <button type="submit" class="btn btn-sm btn-light border-0 p-1 lh-1">
                                            <i class="fa-solid fa-trash fa-xs text-danger"></i>
                                        </button>
                                    </form>
                                    @endif
                                </div>

                                @if (auth()->user()->getPermissaoDetalhes('GERENCIADOR_DE_MOBIANGRA')['editar'] ?? false)
                                <div class="card-body p-2">
                                    <form action="{{ route('admin.mobiangra.horarios.grades.store', $secao) }}"
                                          method="post"
                                          class="horarios-grade-form">
                                        @csrf
                                        <input type="hidden" name="periodo" value="{{ $grade->periodo }}">
                                        <input type="hidden" name="label" value="{{ $grade->label }}">

                                        @if ($linha->legendas->isNotEmpty())
                                            <p class="text-muted small mb-2">
                                                {{ __('Clique em um horário para alternar a cor. Abra "Edição em lote" para colar ou alterar a lista inteira.') }}
                                            </p>
                                            <div class="horarios-pintor-legenda mb-2">
                                                @foreach ($linha->legendas as $leg)
                                                    <span class="horarios-pintor-legenda__item horarios-pintor-legenda__item--{{ $leg->cor }}">
                                                        {{ __(':cor: :desc', ['cor' => ucfirst($leg->cor), 'desc' => $leg->descricao]) }}
                                                    </span>
                                                @endforeach
                                            </div>
                                            <div class="horarios-pintor-chips d-flex flex-wrap gap-1 mb-2">
                                                @foreach ($grade->horariosItens() as $item)
                                                    <button type="button"
                                                            class="btn btn-sm horarios-pintor-chip horarios-pintor-chip--{{ $item['c'] ?: 'nenhuma' }}"
                                                            data-hora="{{ $item['h'] }}"
                                                            data-cor="{{ $item['c'] ?? '' }}"
                                                            title="{{ __('Clique para alternar a cor') }}">
                                                        {{ $item['h'] }}
                                                    </button>
                                                @endforeach
                                            </div>
                                            <input type="hidden"
                                                   name="horarios_cores"
                                                   class="horarios-cores-input"
                                                   value="">
                                            <textarea name="horarios"
                                                      class="form-control form-control-sm font-monospace horarios-grade-textarea d-none">{{ $grade->horariosComoTexto() }}</textarea>
                                            <details class="mb-2">
                                                <summary class="small fw-semibold text-primary">
                                                    {{ __('Edição em lote (colar lista)') }}
                                                </summary>
                                                <textarea class="form-control form-control-sm font-monospace horarios-grade-bulk mt-2"
                                                          rows="3"
                                                          placeholder="06:50, 07:00, 07:30..."
                                                          title="{{ __('Horários separados por vírgula ou nova linha') }}">{{ $grade->horariosComoTexto() }}</textarea>
                                            </details>
                                        @else
                                            <textarea name="horarios"
                                                      class="form-control form-control-sm font-monospace mb-2 horarios-grade-textarea"
                                                      rows="4"
                                                      placeholder="06:50, 07:00, 07:30..."
                                                      title="{{ __('Horários separados por vírgula ou nova linha') }}">{{ $grade->horariosComoTexto() }}</textarea>
                                            <p class="text-muted small mb-2">
                                                {{ __('Salve ao menos uma legenda de cor acima para pintar horários.') }}
                                            </p>
                                        @endif

                                        <div class="d-flex justify-content-between align-items-center gap-2 mt-1">
                                            <small class="text-muted horarios-grade-count">
                                                {{ count($grade->horariosItens()) }} {{ __('horários') }}
                                            </small>
                                            <button type="submit" class="btn btn-sm btn-primary">
                                                <i class="fa-solid fa-floppy-disk me-1"></i>{{ __('Salvar') }}
                                            </button>
                                        </div>
                                    </form>
                                </div>
                                @else
                                <div class="card-body p-2">
                                    <div class="d-flex flex-wrap gap-1">
                                        @foreach ($grade->horariosItens() as $item)
                                            <span @class([
                                                'badge border',
                                                'text-bg-light' => empty($item['c']),
                                                'horarios-pintor-chip--' . $item['c'] => ! empty($item['c']),
                                            ])>{{ $item['h'] }}</span>
                                        @endforeach
                                    </div>
                                    <small class="text-muted mt-1 d-block">{{ count($grade->horariosItens()) }} {{ __('horários') }}</small>
                                </div>
                                @endif
                            </div>
                        </div>
                        @endforeach
                    </div>
                    @endif

                    {{-- Adicionar novo período --}}
                    @if (auth()->user()->getPermissaoDetalhes('GERENCIADOR_DE_MOBIANGRA')['adicionar'] ?? false)
                    @php
                        $periodosExistentes = $secao->grades->pluck('periodo')->all();
                        $periodosDisponiveis = array_diff_key($periodos, array_flip($periodosExistentes));
                    @endphp
                    @if (!empty($periodosDisponiveis))
                    <form action="{{ route('admin.mobiangra.horarios.grades.store', $secao) }}" method="post"
                          class="border rounded p-3 bg-light">
                        @csrf
                        <h6 class="mb-2 text-muted">{{ __('Adicionar período') }}</h6>
                        <div class="row g-2">
                            <div class="col-md-3">
                                <select name="periodo" class="form-select form-select-sm" required>
                                    @foreach ($periodosDisponiveis as $key => $label)
                                        <option value="{{ $key }}">{{ $label }}</option>
                                    @endforeach
                                </select>
                            </div>
                            <div class="col-md-2">
                                <input type="text" name="label" class="form-control form-control-sm"
                                       placeholder="{{ __('Label (opcional)') }}">
                            </div>
                            <div class="col">
                                <input type="text" name="horarios" class="form-control form-control-sm"
                                       placeholder="06:50, 07:00, 07:30, 08:00, ..." required>
                            </div>
                            <div class="col-auto">
                                <button type="submit" class="btn btn-sm btn-success">
                                    <i class="fa-solid fa-plus"></i>
                                </button>
                            </div>
                        </div>
                    </form>
                    @endif
                    @endif
                </div>
            </div>
            @empty
            <div class="alert alert-info">
                {{ __('Nenhuma seção cadastrada. Adicione ao menos uma seção para incluir os horários.') }}
            </div>
            @endforelse
        @endif
    </div>{{-- card-body --}}
</div>{{-- card --}}
@endsection

@push('scripts')
    <link rel="stylesheet" href="{{ asset('pmar/css/admin/mobiangra/horarios_linha_form.css') }}?v={{ time() }}">
@endpush

@push('after-scripts')
    <script src="{{ asset('pmar/js/admin/mobiangra/horarios_linha_form.js') }}?v={{ time() }}"></script>
@endpush
