<%- header %>
<!-- pre-rendered navbar inserted -->
<main class="dashboard-main">
  <%- navbar %>
  <!-- pre-rendered navbar inserted -->
  <%- include('../../partials/utils/mask.ejs') %>

  <script src="/js/pagination.js"></script>

  <div class="container flex-1 pt-20 w-full my-4">

    <%- include('../../partials/utils/title.ejs', {title: "Owner Drivers"}) %>

    <% 
      const breadcrumbs = [
        { label: "Dashboard", href: "/admin/dashboard", icon: "bi bi-house-door" },
        { label: "Owner Drivers" }
      ];
    %>

    <%- include('../../partials/utils/breadcrumb', { breadcrumbs }) %>
    
    <div style="display: flex; justify-content: space-between; align-items: center;">
      <%- include('../../partials/utils/export-buttons.ejs') %>
      <!-- Offcanvas for Search Filter Panel -->
      <div style="display: flex; justify-content: space-between; align-items: center; gap: 10px;">
        <a href="/admin/owner/details/<%= ownerId %>" class="btn shadow btn-secondary" style="padding-block: 6px;">
          <i class="fas fa-arrow-left"></i> Back to Owner
        </a>
        <div style="display: flex; justify-content: end;">
          <%- include('../../partials/utils/searchFilter-withApi.ejs') %>
        </div>
      </div>
    </div>

    <div class="card basic-data-table" style="margin-top: 20px;">
      <div class="card-header">
        <h5 class="card-title mb-0">Owner's Drivers: <span id="totalRows"></span> </h5>
      </div>

      <%- include('../../partials/globalSearch.ejs') %>

      <!-- Responsive Table -->
      <div style="padding-inline: 20px; overflow-x: auto;">
        <div class="table-responsive bordered-table">
          <table id="driversTable" class="table table-striped table-bordered">
            <thead>
              <tr>
                <th data-sort="driver_id">
                  Driver ID
                  <span class="sort-icons">
                    <i class="fa fa-sort sort-neutral"></i>
                    <i class="fa fa-sort-up sort-asc"></i>
                    <i class="fa fa-sort-down sort-desc"></i>
                  </span>
                </th>
                <th>Driver Details</th>
                <th data-sort="d_rating">
                  Rating (Avg)
                  <span class="sort-icons">
                    <i class="fa fa-sort sort-neutral"></i>
                    <i class="fa fa-sort-up sort-asc"></i>
                    <i class="fa fa-sort-down sort-desc"></i>
                  </span>
                </th>
                <th data-sort="d_wallet">
                  Wallet Balance
                  <span class="sort-icons">
                    <i class="fa fa-sort sort-neutral"></i>
                    <i class="fa fa-sort-up sort-asc"></i>
                    <i class="fa fa-sort-down sort-desc"></i>
                  </span>
                </th>
                <th>Status</th>
                <th>Actions</th>
              </tr>
            </thead>
            <tbody></tbody>
          </table>
        </div>
      </div>

      <div class="pagination">
        <div id="pagination"></div>
      </div>

    </div>

</main>

<script>
  let city_cur = "<%= city_cur %>";
  // Set global search input for pagination
  window.globalSearchInput = '#globalSearch';
  
  // --- Export config ---
  window.exportConfig = {
    csv: {
      headers: ["Driver ID", "First Name", "Last Name", "Email", "Country Code", "Phone", "Rating", "Wallet"],
      dataMapper: (driver) => [
        driver.driver_id,
        maskName(driver.d_fname || 'N/A', driver.d_lname || ''),
        maskEmail(driver.d_email || 'N/A'),
        driver.c_code || "N/A",
        maskPhone(driver.d_phone || 'N/A'),
        (driver.d_rating || 0).toFixed(1),
        `${(driver.d_wallet || 0).toFixed(2)}`
      ],
      filename: 'owner_drivers.csv'
    },
    pdf: {
      headers: ["Driver ID", "First Name", "Last Name", "Email", "Country Code", "Phone", "Rating", "Wallet"],
      dataMapper: (driver) => [
        driver.driver_id,
        maskName(driver.d_fname || 'N/A', driver.d_lname || ''),
        maskEmail(driver.d_email || 'N/A'),
        driver.c_code || "N/A",
        maskPhone(driver.d_phone || 'N/A'),
        (driver.d_rating || 0).toFixed(1),
        `${city_cur}${(driver.d_wallet || 0).toFixed(2)}`
      ],
      title: 'Owner Drivers Report',
      filename: 'owner_drivers.pdf'
    },
    fetchAllUrl: '/admin/owner/drivers-data/<%= ownerId %>?limit=99999',
    currentData: []
  };

  // --- Pagination table rows ---
  const pagination = new Pagination({
    fetchUrl: '/admin/owner/drivers-data/<%= ownerId %>',
    defaultSort: { column: 'driver_id', order: 'DESC' },
    dataMapper: (driver) => {
      const rating = parseFloat(driver.d_rating || 0);
      const fullStars = Math.floor(rating);
      const hasHalfStar = rating % 1 >= 0.5;
      let ratingStars = '';

      for (let i = 1; i <= 5; i++) {
        if (i <= fullStars) {
          ratingStars += '<i class="fa fa-star text-warning"></i>';
        } else if (i === fullStars + 1 && hasHalfStar) {
          ratingStars += '<i class="fa fa-star-half-alt text-warning"></i>';
        } else {
          ratingStars += '<i class="fa fa-star text-muted"></i>';
        }
      }

      const phoneNumber = driver.c_code ?
        `${driver.c_code} ${maskPhone(driver.d_phone || 'N/A')}` :
        maskPhone(driver.d_phone || 'N/A');

      const walletAmount = (driver.d_wallet || 0).toFixed(2);

      return `
        <tr>
          <td>${driver.driver_id}</td>
          <td>
            <div class="d-flex align-items-center">
              <img 
                src="<%= IMAGE_FOLDER_PATH %>${driver.image?.img_path || '/placeholder.jpg'}" 
                alt="Profile Image" 
                class="pi-css rounded-circle me-2" 
                width="40" 
                height="40"
                onerror="this.onerror=null; this.src='/placeholder.jpg';"
              >
              <div>
                <a href="/admin/driver-detailed-report/${driver.driver_id}">
                  <strong>${maskName(driver.d_fname || 'N/A', driver.d_lname || '')}</strong>
                </a><br>
                <strong>${maskEmail(driver.d_email || 'N/A')}</strong><br>
                <span>${phoneNumber}</span>
              </div>
            </div>
          </td>
          <td>${ratingStars}</td>
          <td style="color:${ walletAmount < 0 ? 'red' : 'green' }">${city_cur}${walletAmount}</td>
          <td>
            <span class="badge ${driver.d_active ? 'bg-success' : 'bg-danger'}">
              ${driver.d_active ? 'Active' : 'Inactive'}
            </span>
          </td>
          <td>
            <button data-tooltip="View driver details" class="view-driver" data-id="${driver.driver_id}" style="background: transparent; border: none; padding: 0.25rem;">
              <a href="javascript:void(0)" class="w-32-px h-32-px bg-info-focus text-info-main rounded-circle d-inline-flex align-items-center justify-content-center">
                <iconify-icon icon="lucide:eye"></iconify-icon>
              </a>
            </button>
            <button data-tooltip="Edit driver" class="edit-driver" data-id="${driver.driver_id}" style="background: transparent; border: none; padding: 0.25rem; margin-left: 0.5rem;">
              <a href="javascript:void(0)" class="w-32-px h-32-px bg-success-focus text-success-main rounded-circle d-inline-flex align-items-center justify-content-center">
                <iconify-icon icon="lucide:edit"></iconify-icon>
              </a>
            </button>
          </td>
        </tr>
      `;
    }
  });

  $(document).ready(function() {
    pagination.loadData(1);
    
    // View driver handler
    $(document).on("click", ".view-driver", function() {
      const driverId = $(this).data("id");
      window.location.href = `/admin/driver-detailed-report/${driverId}`;
    });
    
    // Edit driver handler
    $(document).on("click", ".edit-driver", function() {
      const driverId = $(this).data("id");
      window.location.href = `/admin/edit-driver/${driverId}`;
    });
  });
</script>

<%- footer %>