@php
    $giorni = [
        1 => 'lunedi',
        2 => 'martedi',
        3 => 'mercoledi',
        4 => 'giovedi',
        5 => 'venerdi',
        6 => 'sabato',
        7 => 'domenica'
    ];
@endphp


@if(isset($impostazione))
    <form action="{{ route('impostazioni.store') }}" method="post" onsubmit="updateImpostazione(event)">
        <div class="modal-header">
                  <h5 class="modal-title" id="modal-impostazione-title">
                  Modifica
                    <span class="text-primary">{{ $impostazione['label'] }}</span>
                    
                </h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body">
                    <span class="text-muted">{{ $impostazione['descrizione'] }}</span>

             
        <div class="row">
            <div class="col-12">
                <div class="form-group">
                    @switch($impostazione['tipo'])
                        @case('text')
                            <input type="text" name="valore" class="form-control mt-2" value="{{ $impostazione->valore }}">
                            @break
                        @case('number')
                            <input type="number" name="valore" class="form-control mt-2" value="{{ $impostazione->valore }}">
                            @break
                        @case('boolean')
                        <div class="form-check mt-2">
                            <input class="form-check-input" type="radio" name="valore" id="valore-yes" value="1" {{ $impostazione->valore == '1' || $impostazione->valore === 1 || $impostazione->valore === true || $impostazione->valore === 'true' ? 'checked' : '' }}>
                            <label class="form-check-label" for="valore-yes">Attiva</label>
                        </div>
                        <div class="form-check">
                            <input class="form-check-input" type="radio" name="valore" id="valore-no" value="0" {{ $impostazione->valore == '0' || $impostazione->valore === 0 || $impostazione->valore === false || $impostazione->valore === 'false' ? 'checked' : '' }}>
                            <label class="form-check-label" for="valore-no">Disattiva</label>
                        </div>
                            @break
                        @case('date')
                   
                            <input type="date" name="valore" class="form-control mt-2" value="{{ $impostazione->valore }}">
                            @break
                        @case('time')
                            <input type="time" name="valore" class="form-control mt-2" value="{{ $impostazione->valore }}">
                            @break
                        @case('array')
                        <div class="form-check">
                            @foreach($impostazione->opzioni as $opzione)
                            @php
                                $selezionati = array_filter(array_map('trim', explode(',', (string) $impostazione->valore)));
                                $checked = in_array((string) $opzione, $selezionati, true) ? 'checked' : '';
                            @endphp
                            <div class="form-check-label mt-2">
                                    <input class="form-check-input" type="checkbox" name="valore[]" value="{{ $opzione }}" {{ $checked }}>
                                    {{ \App\Models\Asporto::getGiorniDisponibilitaAsporto()->get($opzione) }}
                            </div>
                            @endforeach
                        </div>
                            @break
                        @default
                            <input type="text" name="valore" class="form-control mt-2" value="{{ $impostazione->valore }}">
                            @break
                    @endswitch
                    {{-- Mostra errore di validazione lato client dalla risposta 422 di DataTable AJAX --}}
                    <div id="valore-error" class="text-danger"></div>
               
                </div>
            </div>
        </div>

        </div>
                <div class="modal-footer">
                  <button type="button" class="btn btn-label-secondary" data-bs-dismiss="modal">Chiudi</button>
                  <button type="submit" class="btn btn-primary">Salva</button>
                </div>
    </form>

    <script>
        function updateImpostazione(event) {
            event.preventDefault();
            var valore = $("input[name='valore']").val();
            var tipo = "{{ $impostazione->tipo }}";
            if(tipo == 'array') {
                valore = $("input[name='valore[]']:checked").map(function() {
                    return $(this).val();
                }).get().join(',');
            }else if(tipo == 'boolean'){
                valore = $("input[name='valore']:checked").val();
            }

            $.ajax({
                url: "{{ route('impostazioni.store') }}",
                method: "POST",
                data: {
                    _token: "{{ csrf_token() }}",
                    impostazione_id: "{{ $impostazione->id }}",
                    action: "edit",
                    tipo: "{{ $impostazione->tipo }}",
                    data:{"{{ $impostazione->id }}":{valore: valore}},
                },
                success: function(response) {
                    console.log(response);
                    $('#modal-impostazione').modal('hide');
                    new Notyf({ duration: 2000, position: { x: 'right', y: 'top' } })
                    .success('Impostazione aggiornata con successo');
                    $('#dataTable_impostazioni').DataTable().ajax.reload();
                },
                error: function(xhr, status, error) {
                    if (xhr.responseJSON && Array.isArray(xhr.responseJSON.fieldErrors)) {
                        xhr.responseJSON.fieldErrors.forEach(function(error) {
                            if (error.name === "valore") {
                                $('#valore-error').text(error.status);
                                new Notyf({ duration: 2000, position: { x: 'right', y: 'top' } })
                                    .error(error.status);
                            }
                        });
                    } else {
                        new Notyf({ duration: 2000, position: { x: 'right', y: 'top' } })
                            .error('Errore sconosciuto');
                    }
               
                }
            });
        }
    </script>
@endif