
{{ $dataTable_rigaordine->scripts(attributes: ['type' => 'module']) }}

<script>
const initialOrdineId = Number("{{ $ordine->id ?? 0 }}") || null;
let currentOrdineId = initialOrdineId;

function getOrdineId() {
    return currentOrdineId ?? initialOrdineId;
}

        document.querySelectorAll('.piatto-card, .cassa-piatto-card, .cassa-sb-product').forEach(function (card) {
            card.addEventListener('click', function () {
                const piattoId = card.getAttribute('data-piatto-id');
            aumentaQuantita(piattoId);
            aggiornaCarrello();
        });
    });



function aumentaQuantita(piattoId, rigaOrdineId) {
    $.ajax({
        url: "{{ route('carrello.aumenta') }}",
        type: "POST",
        data: {
            piatto_id: piattoId,
            riga_ordine_id: rigaOrdineId,
            aumenta: true,
            _token: "{{ csrf_token() }}",
            dispositivo_id: "{{ $punto_vendita->id }}",
            attivita_id: "{{ $punto_vendita->attivita_id }}",
            ordine_id: getOrdineId(),
        },
        success: function(response) {
            if (response && response.ordine_id) {
                currentOrdineId = Number(response.ordine_id) || currentOrdineId;
            }
            aggiornaCarrello();
        },
        error: function(xhr, status, error) {
            console.log(xhr.responseText);
        }
    });
}

function diminuisciQuantita(piattoId, rigaOrdineId) {
    $.ajax({
        url: "{{ route('carrello.diminuisci') }}",
        type: "POST",
        data: {
            piatto_id: piattoId,
            riga_ordine_id: rigaOrdineId,
            diminuisci: true,
            _token: "{{ csrf_token() }}",
            dispositivo_id: "{{ $punto_vendita->id }}",
            attivita_id: "{{ $punto_vendita->attivita_id }}",
            ordine_id: getOrdineId(),
        },
        success: function(response) {
            aggiornaCarrello();
        },
        error: function(xhr, status, error) {
            console.log(xhr.responseText);
        }
    });
}

function eliminaRiga(piattoId, rigaOrdineId) {
    $.ajax({
        url: "{{ route('carrello.elimina') }}",
        type: "POST",
        data: {
            piatto_id: piattoId,
            elimina: true,
            riga_ordine_id: rigaOrdineId,
            _token: "{{ csrf_token() }}",
            dispositivo_id: "{{ $punto_vendita->id }}",
            attivita_id: "{{ $punto_vendita->attivita_id }}",
            ordine_id: getOrdineId(),
        },
        success: function(response) {
            aggiornaCarrello();
        },
        error: function(xhr, status, error) {
            console.log(xhr.responseText);
        }
    });
}
function aggiungiNota(piattoId, rigaOrdineId, nota) {
    Swal.fire({
        title: "Aggiungi nota",
        text: "Inserisci la nota per il piatto",
        input: "text",
        inputValue: nota,
        inputPlaceholder: "Inserisci la nota",
        icon: "info",
        showCancelButton: true,
        confirmButtonText: "Aggiungi",
        cancelButtonText: "Annulla",
        preConfirm: (value) => {
            return value; // qui puoi validare il valore se necessario
        }
    }).then(function(result) {
        if (result.isConfirmed) {
            // Qui recuperi il valore dell'input
            var nota = result.value;
            aggiornaNota(piattoId, rigaOrdineId, nota);
        }
    });
}
function aggiornaNota(piattoId, rigaOrdineId, nota) {
    $.ajax({
        url: "{{ route('carrello.aggiorna_nota') }}",
        type: "POST",
        data: {
            piatto_id: piattoId,
            note: nota,
            riga_ordine_id: rigaOrdineId,
            _token: "{{ csrf_token() }}",
        },
        success: function(response) {
            if(response.success){
                new Notyf({
                    duration: 2000,
                    position: { x: 'right', y: 'top' }
                }).success(response.message);
                aggiornaCarrello();
            }
        },
        error: function(xhr, status, error) {
            new Notyf({
                duration: 2000,
                position: { x: 'right', y: 'top' }
            }).error(xhr.responseText);
        }
    });
}

function aggiornaCarrello() {

    // window.LaravelDataTables["dataTable_rigaordine"].ajax.reload()
    window.LaravelDataTables["dataTable_rigaordine"].ajax.reload(function() {
        // Dopo il reload, chiama la funzione di init complete se esiste
        if (typeof initComplete_rigaordine === "function") {
            initComplete_rigaordine();
        }
        if (typeof cassaSyncCartScroll === "function") {
            cassaSyncCartScroll();
        }
    });
    aggiornaTotaleCarrello();

}



function azzeraCarrello(){
    Swal.fire({
        title: "Svuota carrello",
        text: "Sei sicuro di voler svuotare il carrello?",
        icon: "warning",
        showCancelButton: true,
        confirmButtonText: "Svuota",
        cancelButtonText: "Annulla",
        confirmButtonColor: "#d33",
        cancelButtonColor: "#3085d6"
    }).then((result) => {
        if (result.isConfirmed) {
            azzeraCarrelloAjax();
        }
    });
}
function azzeraCarrelloAjax() {
    $.ajax({
        url: "{{ route('carrello.azzera') }}",
        type: "POST",
        data: {
            dispositivo_id: "{{ $punto_vendita->id }}",
            attivita_id: "{{ $punto_vendita->attivita_id }}",
            ordine_id: getOrdineId(),
            _token: "{{ csrf_token() }}",
        },
        success: function(response) {
            if(response.success){
                new Notyf({
                    duration: 2000,
                    position: { x: 'right', y: 'top' }
                }).success(response.message);
                window.location.reload();
            }else{
                Swal.fire({
                    title: "Errore",
                    text: response.message,
                    icon: "error",
                });
            }
          
        },
        error: function(xhr, status, error) {
            // console.log(xhr.responseText);
            Swal.fire({
                title: "Errore",
                text: "Si è verificato un errore",
                icon: "error",
                body: xhr.responseText,
            });
        }
    });
}


// function initComplete_rigaordine() {
//     $('div.dt-buttons button').removeClass('btn-secondary');
//     $('div.dt-search').addClass('mt-0 mb-4');
//     return;
// }
</script>


<script type="module">
  $(document).ready(function(){
    $("#cliente").on('change', function() {
      aggiornaInfoOrdine();
    });
    $("#tavolo").on('change', function() {
      aggiornaInfoOrdine();
    });
    

        // Editor edit
    $("#dataTable_rigaordine").on('click', 'a.editor_edit', function (e) {
      e.preventDefault();
      window.LaravelDataTables["dataTable_rigaordine-editor"].edit( $(this).closest('tr'), {
        title: 'Modifica',
        buttons: 'Aggiorna',
      });
    });

    // Editor delete
    $("#dataTable_rigaordine").on('click', 'a.editor_delete', function (e) {
      e.preventDefault();
      window.LaravelDataTables["dataTable_rigaordine-editor"].remove($(this).closest('tr'), {
        title: 'Cancella record',
        message: 'Sei sicuro di voler eliminare il record selezionato?',
        buttons: 'Cancella record'
      });
    } );

    $("#dataTable_rigaordine").on('dblclick', 'tbody td', function (e) {
      window.LaravelDataTables["dataTable_rigaordine-editor"].edit( $(this).closest('tr'), {
        title: 'Modifica',
        buttons: 'Aggiorna',
      });
    });

    // Handle collapse/expand of child rows in DataTable
    $('#dataTable_rigaordine tbody').on('click', 'td.details-control', function () {
      var tr = $(this).closest('tr');
      var row = window.LaravelDataTables["dataTable_rigaordine"].row(tr);

      if (row.child.isShown()) {
        // Collapse child row
        row.child.hide();
        tr.removeClass('shown');
      }
      else {
        // Expand child row
        row.child('<div class="loading">Caricamento...</div>').show();
        tr.addClass('shown');
        // Optionally load remote data via AJAX here and update row.child()
        $.get("{{ route('riga-ordine.dettagli') }}?riga_ordine_id="+row.data().id, function(data) {
          row.child(data).show();
        });
      }
    });

  });

</script>

<script>
  function initComplete_rigaordine(){
    var $ = window.jQuery || window.$;
    if (!$) {
      cassaSyncCartScroll();
      return;
    }

    $('div.dt-buttons button').removeClass('btn-secondary');
    $('div.dt-search').addClass('mt-0 mb-2');
    $('div.dt-buttons').removeClass('btn-group');
    $('.dt-type-numeric').each(function() {
      $(this).removeClass('dt-type-numeric');
    });
    $('table.dataTable tbody').css('border-style', 'none !important');
    aggiornaTotaleCarrello();
    $(".dt-empty").text("Carrello vuoto");
    $('.mb-6 .card').addClass('shadow-none');
    $('.mb-6').removeClass('mb-6');
    cassaSyncCartScroll();

    @if(isset($vista) && $vista == 'catalogo')
      $('table').removeClass('datatable table dt-inline');
    @endif

}

  function cassaSyncCartScroll() {
    var card = document.querySelector('.cassa-cart-card');
    var el = document.querySelector('.cassa-cart-scroll');
    if (!card || !el) {
      return;
    }

    var footer = document.querySelector('.cassa-footer');
    var footerGap = footer ? footer.getBoundingClientRect().height + 8 : 8;
    var available = window.innerHeight - el.getBoundingClientRect().top - footerGap;

    if (available > 80) {
      el.style.maxHeight = Math.floor(available) + 'px';
    } else {
      el.style.maxHeight = '';
    }
    el.style.overflowY = 'auto';

    window.requestAnimationFrame(function() {
      var dt = window.LaravelDataTables && window.LaravelDataTables['dataTable_rigaordine'];
      if (dt && typeof dt.columns !== 'undefined') {
        dt.columns.adjust();
      }
    });
  }

  window.addEventListener('resize', cassaSyncCartScroll);
  window.addEventListener('load', cassaSyncCartScroll);

  function aggiornaTotaleCarrello() {
    $.ajax({
      url: "{{ route('carrello.totale') }}",
      type: "GET",
      data: {
        dispositivo_id: "{{ $punto_vendita->id }}",
        attivita_id: "{{ $punto_vendita->attivita_id }}",
        ordine_id: getOrdineId(),
      },
      success: function(response) {
        // alert(response.data);
        // $('#totale_carrello').text('€ ' + response.data.toFixed(2));
      // Animazione al cambio del prezzo del carrello
      var $totale = $('#totale_carrello');
      $totale.fadeOut(200, function() {
        $totale.text('€ ' + response.totale.toFixed(2).replace('.', ','));
        $totale.fadeIn(200);
      });
      var $kioskPz = $('#kiosk_carrello_n_pz');
      var $kioskTot = $('#kiosk_carrello_totale');
      if ($kioskPz.length && response.quantita_totale !== undefined) {
        $kioskPz.text(response.quantita_totale + ' pz.');
      }
      if ($kioskTot.length) {
        $kioskTot.fadeOut(150, function() {
          $kioskTot.text('€ ' + response.totale.toFixed(2).replace('.', ','));
          $kioskTot.fadeIn(150);
        });
      }
      },
      error: function(xhr, status, error) {
        console.log(xhr.responseText);
      }
    });
  }

  function aggiornaInfoOrdine() {

    $.ajax({
      url: "{{ route('carrello.aggiorna_info') }}",
      type: "POST",
      data: {
        ordine_id: getOrdineId(),
        cliente: $("#cliente").val(),
        tavolo: $("#tavolo").val(), 
        _token: "{{ csrf_token() }}",
      },
      success: function(response) {
        if(response.success){
          if (typeof Notyf !== 'undefined') {
            // Usa Notyf per la notifica
            new Notyf({
              duration: 2000,
              position: { x: 'right', y: 'top' }
            }).success(response.message);
            
          } else {
            // Fallback su Swal se Notyf non è disponibile
            Swal.fire({
              toast: true,
              showConfirmButton: false,
              showCancelButton: false,
              timerProgressBar: true,
              type: 'success',
              background: 'success',
              position: 'top-end',
              title: response.message,
              // icon: 'success',
            });
          }
        }else{
          Swal.fire({
            toast: true,
            title: response.message,
            icon: 'error',
          });
        }
      },
      error: function(xhr, status, error) {
        console.log(xhr.responseText);
      }
    });
  }

  function checkout() {
    const url = "{{ route('carrello.checkout') }}" + "?" + $.param({
      ordine_id: getOrdineId(),
      dispositivo_id: "{{ $punto_vendita->id }}",
      attivita_id: "{{ $punto_vendita->attivita_id }}"
    });
    $('#modalPagamento .modal-body').load(url);
    $('#modalPagamento').modal('show');
  }

function showInfoPuntoVendita() {
  $('#basicModal .modal-body').load("{{ route('punto-vendita.dettagli', ['punto_vendita_id' => $punto_vendita->id]) }}");
  $('#basicModal .modal-title').text("Informazioni punto vendita");
  $('#basicModal').modal('show');
}
function stampaRiepilogo() {
  $('#basicModal .modal-body').load("{{ route('punto-vendita.riepilogo-cassa', ['punto_vendita_id' => $punto_vendita->id]) }}");
  $('#basicModal .modal-title').text("Riepilogo incassi punto vendita");
  $('#basicModal').modal('show');
}
</script>