<?php
session_start();

// Cek apakah user sudah login
if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] !== true) {
  // Jika belum login, redirect ke halaman login
  header("Location: login.php");
  exit();
}

$nama = isset($_SESSION['nama']) ? $_SESSION['nama'] : 'User'; // Jika belum login, tampilkan 'User' sebagai default
$user = isset($_SESSION['user']) ? $_SESSION['user'] : 'warehouse'; // Jika belum login, tampilkan 'User' sebagai default
$jenis = isset($_SESSION['jenis']) ? $_SESSION['jenis'] : 'Coba'; // Jika belum login, tampilkan 'User' sebagai default

// Di awal skrip PHP Anda
set_time_limit(0); // 0 berarti tidak ada batas waktu
// set_time_limit(300); // Menetapkan batas waktu menjadi 5 menit (300 detik)

// koneksi ke database
// error_reporting(0);
date_default_timezone_set('Asia/Jakarta');
include 'connection.php';


// Mendapatkan data stock wh
$query_stock = "SELECT * FROM `allocation_stockwh`";
$result_wh = $conn->query($query_stock);

// Mendapatkan data penjualan tiap dealer
$query_sl = "SELECT * FROM `allocation_sl` WHERE bulan = MONTH(CURDATE()) AND tahun = YEAR(CURDATE())";
$result_sl = $conn->query($query_sl);

// Mendapatkan data tipe dan warna
$query_tipewarna = "SELECT DISTINCT nama_tipe, warna FROM `allocation_tipewarna`";
$result_tipewarna = $conn->query($query_tipewarna);

// Mendapatkan rasio kunci dari tabel allocation_rasiokunci
$query_rasiokunci = "SELECT * FROM `allocation_rasiokunci`";
$result_rasiokunci = $conn->query($query_rasiokunci);
$key_ratio = [];
while ($row = $result_rasiokunci->fetch_assoc()) {
  $key_ratio[$row['tipe']][$row['warna']] = $row['rasio'] ?? 0; // Jika rasio null, tampilkan 0
}



// Menyusun array tipe dengan warna terkaitnya
$tipeWarna = [];
while ($row = $result_tipewarna->fetch_assoc()) {
  $tipeWarna[$row['nama_tipe']][] = $row['warna'];
}

// Hitung jumlah tipe dan warna untuk pengaturan colspan
$jumlah_tipe = count($tipeWarna);
$colspan_per_tipe = 4; // Asumsi 4 kolom per warna
$colspan_total = $colspan_per_tipe * $jumlah_tipe;


// Query untuk mendapatkan tanggal dari allocation_savewarehouse
$query_tgl_wh = "SELECT tanggal FROM `allocation_savewarehouse` GROUP BY tanggal";
$tgl_wh_result = $conn->query($query_tgl_wh);

// Query untuk mendapatkan tanggal dari allocation_savedealer
$query_tgl_d = "SELECT tanggal FROM `allocation_savedealer` GROUP BY tanggal";
$tgl_d_result = $conn->query($query_tgl_d);




if ($jenis == 'aom') {
  $query = "
      SELECT d.subyek, d.kode_lks, a.tipe, a.warna, a.qty
      FROM fkt_dealer d
      LEFT JOIN allocation_stock a
      ON d.kode_lks = a.dealer_id
      WHERE d.grup='LT' AND d.nonaktif=0
      AND d.kode_lks NOT IN ('FLEET01','GUDANG UNIT','MD')
      AND d.aom='$user'
      ORDER BY d.urutan";
} else {
  $query = "
      SELECT d.subyek, d.kode_lks, a.tipe, a.warna, a.qty
      FROM fkt_dealer d
      LEFT JOIN allocation_stock a
      ON d.kode_lks = a.dealer_id
      WHERE d.grup='LT' AND d.nonaktif=0
      AND d.kode_lks NOT IN ('FLEET01','GUDANG UNIT','MD')
      ORDER BY d.urutan";
}

$result = $conn->query($query);

// Menyusun array dealer dengan tipe, warna, dan qty
$qtyDataWh = [];
while ($row = $result_wh->fetch_assoc()) {
  $qtyDataWh[$row['tipe']][$row['warna']] = $row['qty'] ?? 0; // Jika qty null, tampilkan 0
}


// Menyusun array dealer dengan tipe, warna, dan qty
$sellDataDealer = [];
while ($row = $result_sl->fetch_assoc()) {
  $sellDataDealer[$row['dealer_id']][$row['tipe']][$row['warna']] = $row['qty'] ?? 0; // Jika qty null, tampilkan 0
}

// Menyusun array dealer dengan tipe, warna, dan qty
$dealerData = [];
while ($row = $result->fetch_assoc()) {
  $dealerData[$row['kode_lks']]['subyek'] = $row['subyek'];
  $dealerData[$row['kode_lks']]['qty'][$row['tipe']][$row['warna']] = $row['qty'] ?? 0; // Jika qty null, tampilkan 0
}




if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  include 'connection.php'; // Include your database connection file

  // Inisialisasi array untuk menyimpan total allocation per tipe dan warna
  $totalAllocation = [];

  // Loop through dealer data and save to allocation_savedealer
  foreach ($dealerData as $kode_lks => $data) {
    $kode_dealer = $data['subyek'];

    // Loop through tipe dan warna untuk mengambil data qty
    foreach ($tipeWarna as $tipe => $warnas) {
      foreach ($warnas as $warna) {
        // Ambil qty dari $data
        $qty_st_in = $data['qty'][$tipe][$warna] ?? 0; // Menampilkan qty stok (ST)
        $qty_sl_in = $sellDataDealer[$kode_lks][$tipe][$warna] ?? 0; // Menampilkan qty sell (SL)
        $rasio_in = ($qty_sl_in != 0) ? $qty_st_in / $qty_sl_in : 0;  // Rasio_in untuk dealer ini
        $allocation_in = 0; // Inisialisasi alokasi


        // $allocation_in = isset($_POST['dealer'][$kode_lks][$tipe][$warna]['al']) ? $_POST['dealer'][$kode_lks][$tipe][$warna]['al'] : 0;
        $allocation_in = $_POST['dealer'][$kode_lks][$tipe][$warna]['al'];

        // Simpan nilai allocation ke dalam totalAllocation untuk tipe dan warna
        if (!isset($totalAllocation[$tipe][$warna])) {
          $totalAllocation[$tipe][$warna] = 0; // Inisialisasi jika belum ada
        }
        $totalAllocation[$tipe][$warna] += $allocation_in; // Tambahkan allocation ke total


        // Insert into allocation_in_savedealer
        $sql_dealer = "INSERT INTO allocation_savedealer
                            (tanggal, kode_lks, tipe, warna, sl, st, rs, al, waktusimpan, waktuedit) 
                            VALUES (CURDATE(), '$kode_lks', '$tipe', '$warna', '$qty_sl_in', '$qty_st_in', '$rasio_in', '$allocation_in', NOW(), NOW())";
        mysqli_query($conn, $sql_dealer);
      }
    }
  }


  // Loop through warehouse data and save to allocation_savewarehouse
  foreach ($_POST['warehouse'] as $tipe => $warnaData) {
    foreach ($warnaData as $warna => $data) {
      $qty_st_wh_in = $data['soh'];
      $dist_harian_wh_in = $totalAllocation[$tipe][$warna] ?? 0; // Gunakan total allocation untuk dist_harian_wh_in
      $sisa_stock_wh_in = $qty_st_wh_in - $dist_harian_wh_in;

      // Insert into allocation_savewarehouse
      $sql_warehouse = "INSERT INTO allocation_savewarehouse
                            (tanggal, tipe, warna, soh, dh, ssh, waktusimpan, waktuedit)
                            VALUES (CURDATE(), '$tipe', '$warna', '$qty_st_wh_in', '$dist_harian_wh_in', '$sisa_stock_wh_in', NOW(), NOW())";
      mysqli_query($conn, $sql_warehouse);
    }
  }


  // Redirect or show success message
  echo "Data berhasil disimpan!";
}




?>

<!DOCTYPE html>
<html lang="en">
<?php
include 'head.php';
?>

<body>

  <?php
  include 'header.php';
  ?>



  <?php
  $activeMenu = 'dashboard'; // Sesuaikan dengan halaman yang sedang dibuka
  include 'sidebar.php';
  ?>



  <main id="main" class="main">

    <section class="section dashboard">
      <div class="row">

        <!-- Left side columns -->
        <div class="col-lg-12">
          <div class="row">

            <!-- Filter Stok Unit -->
            <div class="col-12">
              <div class="card recent-sales overflow-auto">

                <div class="card-body">
                  <!-- <h5 class="card-title">Allocation Report</h5> -->
                  <div class="overflow-auto mt-3" style="max-height: 650px;">
                    <h2 class="card-title mb-1" style="font-size:32px">Selamat Datang,<br><strong style="font-size:22px"><?php echo $nama; ?></strong></h2>
                    <!-- End Table with stripped rows -->
                  </div>

                </div>

              </div>
            </div><!-- End Filter Stok Unit -->


          </div>
        </div><!-- End Left side columns -->

        <!-- Left side columns -->
        <div class="col-lg-12">
          <div class="row">

            <!-- Filter Stok Unit -->
            <div class="col-12">

              <!-- F.A.Q Group 1 -->
              <div class="card">
                <div class="card-body">
                  <h5 class="card-title">Mengenai Allocation Unit</h5>

                  <div class="accordion accordion-flush" id="faq-group-1">
                    <?php if ($jenis == 'Superadmin'): ?>
                      <div class="accordion-item">
                        <h2 class="accordion-header">
                          <button class="accordion-button collapsed" data-bs-target="#faqsOne-1" type="button" data-bs-toggle="collapse">
                            Apa fungsi menu Allocation?
                          </button>
                        </h2>
                        <div id="faqsOne-1" class="accordion-collapse collapse" data-bs-parent="#faq-group-1">
                          <div class="accordion-body">
                            Menu Allocation digunakan untuk mengalokasikan unit di gudang ke seluruh dealer cabang di Lampung. Proses alokasi ini dilakukan berdasarkan key ratio yang sudah ditetapkan untuk tiap jenis dan warna unit. Pengguna (AOM) dapat membagi unit sesuai dengan tanggung jawab mereka, dan kemudian menyimpan hasilnya. Setelah disimpan, alokasi ini akan masuk ke menu Shipping untuk diproses lebih lanjut oleh tim warehouse. Catatan penting: Jika pembagian unit melebihi stok gudang, tombol simpan tidak akan berfungsi. Alokasi hanya bisa dilakukan satu kali per hari.
                          </div>
                        </div>
                      </div>
                      <div class="accordion-item">
                        <h2 class="accordion-header">
                          <button class="accordion-button collapsed" data-bs-target="#faqsOne-2" type="button" data-bs-toggle="collapse">
                            Bagaimana cara kerja menu Shipping?
                          </button>
                        </h2>
                        <div id="faqsOne-2" class="accordion-collapse collapse" data-bs-parent="#faq-group-1">
                          <div class="accordion-body">
                            Menu Shipping menampilkan hasil alokasi yang telah dilakukan di menu Allocation. Di sini, pengguna dapat melakukan edit untuk menyesuaikan pembagian unit sesuai kebutuhan. Jika ada perubahan pada unit dan warna, background kolom yang diubah akan berubah menjadi kuning. Jika alokasi melebihi stok gudang, background akan berubah menjadi merah dan tombol simpan tidak akan dapat digunakan. Catatan penting: Edit shipping hanya bisa dilakukan pada hari yang sama, tidak bisa mengedit alokasi dari hari sebelumnya.
                          </div>
                        </div>
                      </div>
                      <div class="accordion-item">
                        <h2 class="accordion-header">
                          <button class="accordion-button collapsed" data-bs-target="#faqsOne-3" type="button" data-bs-toggle="collapse">
                            Apa fungsi dari menu History?
                          </button>
                        </h2>
                        <div id="faqsOne-3" class="accordion-collapse collapse" data-bs-parent="#faq-group-1">
                          <div class="accordion-body">
                            Menu History menampilkan semua alokasi unit yang telah dilakukan sejak awal aplikasi digunakan. Pengguna dapat melihat detail alokasi, seperti pembagian unit ke masing-masing dealer, jenis, dan warna. Ini membantu pengguna melacak riwayat dan memantau semua transaksi alokasi yang telah terjadi.
                          </div>
                        </div>
                      </div>
                      <div class="accordion-item">
                        <h2 class="accordion-header">
                          <button class="accordion-button collapsed" data-bs-target="#faqsOne-4" type="button" data-bs-toggle="collapse">
                            Apa itu Key Ratio dan bagaimana penggunaannya?
                          </button>
                        </h2>
                        <div id="faqsOne-4" class="accordion-collapse collapse" data-bs-parent="#faq-group-1">
                          <div class="accordion-body">
                            Menu Key Ratio berfungsi untuk mengatur rasio kunci yang digunakan dalam proses alokasi unit di gudang. Pengguna dapat menentukan dan mengedit rasio kunci berdasarkan tipe dan warna unit. Dengan rasio ini, sistem dapat secara otomatis menghitung pembagian yang optimal untuk tiap dealer.
                          </div>
                        </div>
                      </div>
                    <?php elseif ($jenis == 'Business Head'): ?>
                      <div class="accordion-item">
                        <h2 class="accordion-header">
                          <button class="accordion-button collapsed" data-bs-target="#faqsOne-3" type="button" data-bs-toggle="collapse">
                            Apa fungsi dari menu History?
                          </button>
                        </h2>
                        <div id="faqsOne-3" class="accordion-collapse collapse" data-bs-parent="#faq-group-1">
                          <div class="accordion-body">
                            Menu History menampilkan semua alokasi unit yang telah dilakukan sejak awal aplikasi digunakan. Pengguna dapat melihat detail alokasi, seperti pembagian unit ke masing-masing dealer, jenis, dan warna. Ini membantu pengguna melacak riwayat dan memantau semua transaksi alokasi yang telah terjadi.
                          </div>
                        </div>
                      </div>
                      <div class="accordion-item">
                        <h2 class="accordion-header">
                          <button class="accordion-button collapsed" data-bs-target="#faqsOne-4" type="button" data-bs-toggle="collapse">
                            Apa itu Key Ratio dan bagaimana penggunaannya?
                          </button>
                        </h2>
                        <div id="faqsOne-4" class="accordion-collapse collapse" data-bs-parent="#faq-group-1">
                          <div class="accordion-body">
                            Menu Key Ratio berfungsi untuk mengatur rasio kunci yang digunakan dalam proses alokasi unit di gudang. Pengguna dapat menentukan dan mengedit rasio kunci berdasarkan tipe dan warna unit. Dengan rasio ini, sistem dapat secara otomatis menghitung pembagian yang optimal untuk tiap dealer.
                          </div>
                        </div>
                      </div>
                    <?php elseif ($jenis == 'aom'): ?>
                      <div class="accordion-item">
                        <h2 class="accordion-header">
                          <button class="accordion-button collapsed" data-bs-target="#faqsOne-1" type="button" data-bs-toggle="collapse">
                            Apa fungsi menu Allocation?
                          </button>
                        </h2>
                        <div id="faqsOne-1" class="accordion-collapse collapse" data-bs-parent="#faq-group-1">
                          <div class="accordion-body">
                            Menu Allocation digunakan untuk mengalokasikan unit di gudang ke seluruh dealer cabang di Lampung. Proses alokasi ini dilakukan berdasarkan key ratio yang sudah ditetapkan untuk tiap jenis dan warna unit. Pengguna (AOM) dapat membagi unit sesuai dengan tanggung jawab mereka, dan kemudian menyimpan hasilnya. Setelah disimpan, alokasi ini akan masuk ke menu Shipping untuk diproses lebih lanjut oleh tim warehouse. Catatan penting: Jika pembagian unit melebihi stok gudang, tombol simpan tidak akan berfungsi. Alokasi hanya bisa dilakukan satu kali per hari.
                          </div>
                        </div>
                      </div>
                      <div class="accordion-item">
                        <h2 class="accordion-header">
                          <button class="accordion-button collapsed" data-bs-target="#faqsOne-3" type="button" data-bs-toggle="collapse">
                            Apa fungsi dari menu History?
                          </button>
                        </h2>
                        <div id="faqsOne-3" class="accordion-collapse collapse" data-bs-parent="#faq-group-1">
                          <div class="accordion-body">
                            Menu History menampilkan semua alokasi unit yang telah dilakukan sejak awal aplikasi digunakan. Pengguna dapat melihat detail alokasi, seperti pembagian unit ke masing-masing dealer, jenis, dan warna. Ini membantu pengguna melacak riwayat dan memantau semua transaksi alokasi yang telah terjadi.
                          </div>
                        </div>
                      </div>
                    <?php elseif ($jenis == 'warehouse'): ?>
                      <div class="accordion-item">
                        <h2 class="accordion-header">
                          <button class="accordion-button collapsed" data-bs-target="#faqsOne-1" type="button" data-bs-toggle="collapse">
                            Apa fungsi menu Allocation?
                          </button>
                        </h2>
                        <div id="faqsOne-1" class="accordion-collapse collapse" data-bs-parent="#faq-group-1">
                          <div class="accordion-body">
                            Menu Allocation digunakan untuk mengalokasikan unit di gudang ke seluruh dealer cabang di Lampung. Proses alokasi ini dilakukan berdasarkan key ratio yang sudah ditetapkan untuk tiap jenis dan warna unit. Pengguna (AOM) dapat membagi unit sesuai dengan tanggung jawab mereka, dan kemudian menyimpan hasilnya. Setelah disimpan, alokasi ini akan masuk ke menu Shipping untuk diproses lebih lanjut oleh tim warehouse. Catatan penting: Jika pembagian unit melebihi stok gudang, tombol simpan tidak akan berfungsi. Alokasi hanya bisa dilakukan satu kali per hari.
                          </div>
                        </div>
                      </div>
                      <div class="accordion-item">
                        <h2 class="accordion-header">
                          <button class="accordion-button collapsed" data-bs-target="#faqsOne-2" type="button" data-bs-toggle="collapse">
                            Bagaimana cara kerja menu Shipping?
                          </button>
                        </h2>
                        <div id="faqsOne-2" class="accordion-collapse collapse" data-bs-parent="#faq-group-1">
                          <div class="accordion-body">
                            Menu Shipping menampilkan hasil alokasi yang telah dilakukan di menu Allocation. Di sini, pengguna dapat melakukan edit untuk menyesuaikan pembagian unit sesuai kebutuhan. Jika ada perubahan pada unit dan warna, background kolom yang diubah akan berubah menjadi kuning. Jika alokasi melebihi stok gudang, background akan berubah menjadi merah dan tombol simpan tidak akan dapat digunakan. Catatan penting: Edit shipping hanya bisa dilakukan pada hari yang sama, tidak bisa mengedit alokasi dari hari sebelumnya.
                          </div>
                        </div>
                      </div>
                      <div class="accordion-item">
                        <h2 class="accordion-header">
                          <button class="accordion-button collapsed" data-bs-target="#faqsOne-3" type="button" data-bs-toggle="collapse">
                            Apa fungsi dari menu History?
                          </button>
                        </h2>
                        <div id="faqsOne-3" class="accordion-collapse collapse" data-bs-parent="#faq-group-1">
                          <div class="accordion-body">
                            Menu History menampilkan semua alokasi unit yang telah dilakukan sejak awal aplikasi digunakan. Pengguna dapat melihat detail alokasi, seperti pembagian unit ke masing-masing dealer, jenis, dan warna. Ini membantu pengguna melacak riwayat dan memantau semua transaksi alokasi yang telah terjadi.
                          </div>
                        </div>
                      </div>
                    <?php endif; ?>


                  </div>

                </div>
              </div><!-- End F.A.Q Group 1 -->
            </div><!-- End Filter Stok Unit -->


          </div>
        </div><!-- End Left side columns -->


    </section>

  </main><!-- End #main -->


  <?php
  include 'footer.php';
  ?>

  <a href="#" class="back-to-top d-flex align-items-center justify-content-center"><i class="bi bi-arrow-up-short"></i></a>

  <!-- Vendor JS Files -->
  <script src="assets/vendor/apexcharts/apexcharts.min.js"></script>
  <script src="assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
  <script src="assets/vendor/chart.js/chart.umd.js"></script>
  <script src="assets/vendor/echarts/echarts.min.js"></script>
  <script src="assets/vendor/quill/quill.js"></script>
  <script src="assets/vendor/simple-datatables/simple-datatables.js"></script>
  <script src="assets/vendor/tinymce/tinymce.min.js"></script>
  <script src="assets/vendor/php-email-form/validate.js"></script>


  <!-- Template Main JS File -->
  <script src="assets/js/main.js"></script>

  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  <!-- <script>
    $(document).ready(function() {
      $('#jalankanButton').click(function() {
        // Kirim permintaan AJAX ke server untuk menjalankan alokasi
        $.ajax({
          url: 'jalankan_alokasi.php', // File PHP yang akan menangani logika alokasi
          method: 'POST',
          success: function(response) {
            alert('Alokasi berhasil dijalankan!'); // Notifikasi setelah sukses
            location.reload(); // Reload halaman untuk menampilkan hasil alokasi terbaru
          },
          error: function(xhr, status, error) {
            alert('Terjadi kesalahan: ' + error); // Menampilkan pesan kesalahan jika gagal
          }
        });
      });
    });
  </script> -->
  <script>
    // // Event listener untuk tombol "Simpan Data"
    // document.getElementById('saveButton').addEventListener('click', function() {
    //   // Loop melalui setiap row tipe dan warna untuk memperbarui hidden input
    //   document.querySelectorAll('tr').forEach(function(row) {
    //     // Ambil tipe dan warna dari atribut data
    //     var tipe = row.querySelector('.stock_wh')?.getAttribute('data-tipe');
    //     var warna = row.querySelector('.stock_wh')?.getAttribute('data-warna');

    //     if (tipe && warna) {
    //       // Ambil nilai dari kolom stock, distribusi harian, dan sisa stok
    //       var stockOnHand = parseInt(row.querySelector('.stock_wh')?.innerHTML) || 0;
    //       var distribusiHarian = parseInt(row.querySelector('.dist_harian_wh')?.innerHTML) || 0;
    //       var sisaStock = parseInt(row.querySelector('.sisa_stock_wh')?.innerHTML) || 0;

    //       // Update nilai hidden input dengan nilai yang ada di tampilan
    //       var hiddenQtyElem = row.querySelector('input.hidden-qty[data-tipe="' + tipe + '"][data-warna="' + warna + '"]');
    //       var hiddenDistElem = row.querySelector('input.hidden-dist[data-tipe="' + tipe + '"][data-warna="' + warna + '"]');
    //       var hiddenSisaElem = row.querySelector('input.hidden-sisa[data-tipe="' + tipe + '"][data-warna="' + warna + '"]');

    //       if (hiddenQtyElem) hiddenQtyElem.value = stockOnHand;
    //       if (hiddenDistElem) hiddenDistElem.value = distribusiHarian;
    //       if (hiddenSisaElem) hiddenSisaElem.value = sisaStock;
    //     }
    //   });
    // });




    function loadTargetDealer(dealerCode, nameDealer, tipe, warna) {
      $.ajax({
        url: 'get_target_dealer_data.php',
        type: 'POST',
        data: {
          kode_lks: dealerCode,
          subyek: nameDealer,
          tipe: tipe,
          warna: warna
        },
        success: function(response) {
          // Tampilkan data di dalam modal
          $('#modalContent').html(response);

          // Update the edit button's href to point to target_dealer_edit.php with the right parameters
          $('#editBtn').click(function() {
            window.location.href = 'target_dealer_edit.php?kode_lks=' + dealerCode +
              '&subyek=' + nameDealer +
              '&tipe=' + tipe +
              '&warna=' + warna;
          });
        },
        error: function() {
          $('#modalContent').html('<p>Error loading data.</p>');
        }
      });
    }
  </script>

  <!-- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js"></script> -->


</body>

</html>