<%- header %>
<!-- pre-rendered navbar inserted -->
<main class="dashboard-main">
  <%- navbar %>
  <!-- pre-rendered navbar inserted -->

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

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

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

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

    <%- 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 Vehicles: <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="vehiclesTable" class="table table-striped table-bordered">
            <thead>
              <tr>
                <th data-sort="car_id">
                  Vehicle 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>Vehicle Details</th>
                <th>Vehicle Images</th>
                <th data-sort="car_reg_no">
                  Registration No
                  <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="car_model">
                  Model
                  <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="car_make">
                  Model Year
                  <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>Assets</th>
              </tr>
            </thead>
            <tbody></tbody>
          </table>
        </div>
      </div>

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

    </div>

</main>

<!-- Assets Modal -->
<div class="modal fade" id="assetsModal" tabindex="-1" aria-labelledby="assetsModalLabel" aria-hidden="true">
  <div class="modal-dialog modal-lg">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="assetsModalLabel">Vehicle Assets</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        <div id="modalAssetsContent" class="d-flex flex-wrap gap-3 justify-content-center"></div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>

<script>
  // Set global search input for pagination
  window.globalSearchInput = '#globalSearch';
  
  // --- Export config ---
  window.exportConfig = {
    csv: {
      headers: ["Vehicle ID", "Name", "Registration No", "Model", "Model Year", "Assets Count"],
      dataMapper: (vehicle) => [
        vehicle.car_id,
        vehicle.car_name || 'N/A',
        vehicle.car_reg_no || 'N/A',
        vehicle.car_model || 'N/A',
        vehicle.car_make || 'N/A',
        vehicle.assets?.length || 0,
       ],
      filename: 'owner_vehicles.csv'
    },
    pdf: {
      headers: ["Vehicle ID", "Name", "Registration No", "Model", "Model Year", "Assets Count"],
      dataMapper: (vehicle) => [
        vehicle.car_id,
        vehicle.car_name || 'N/A',
        vehicle.car_reg_no || 'N/A',
        vehicle.car_model || 'N/A',
        vehicle.car_make || 'N/A',
        vehicle.assets?.length || 0,
       ],
      title: 'Owner Vehicles Report',
      filename: 'owner_vehicles.pdf'
    },
    fetchAllUrl: '/admin/owner/vehicles-data/<%= ownerId %>?limit=99999',
    currentData: []
  };

  // --- Pagination table rows ---
  const pagination = new Pagination({
    fetchUrl: '/admin/owner/vehicles-data/<%= ownerId %>',
    defaultSort: { column: 'car_id', order: 'DESC' },
    dataMapper: (vehicle) => {
      // Build vehicle images HTML
      const frontImageUrl = vehicle.frontImage?.img_path 
        ? `<%= IMAGE_FOLDER_PATH %>${vehicle.frontImage.img_path}` 
        : '/placeholder.jpg';
      const backImageUrl = vehicle.backImage?.img_path 
        ? `<%= IMAGE_FOLDER_PATH %>${vehicle.backImage.img_path}` 
        : '/placeholder.jpg';
      
      const vehicleImagesHtml = `
        <div class="d-flex gap-3 align-items-start">
          <div class="text-center">
            <div style="font-weight: 600; font-size: 13px; color: #495057; margin-bottom: 6px; text-transform: uppercase;">Front</div>
            <img 
              src="${frontImageUrl}" 
              alt="Front Image" 
              class="rounded" 
              width="80" 
              height="80"
              style="object-fit: cover; border: 2px solid #e9ecef;"
              onerror="this.onerror=null; this.src='/placeholder.jpg';"
            >
          </div>
          <div class="text-center">
            <div style="font-weight: 600; font-size: 13px; color: #495057; margin-bottom: 6px; text-transform: uppercase;">Back</div>
            <img 
              src="${backImageUrl}" 
              alt="Back Image" 
              class="rounded" 
              width="80" 
              height="80"
              style="object-fit: cover; border: 2px solid #e9ecef;"
              onerror="this.onerror=null; this.src='/placeholder.jpg';"
            >
          </div>
        </div>
      `;

      // Build assets button and store data
      let assetsHtml = '';
      if (vehicle.assets && vehicle.assets.length > 0) {
        assetsHtml = `
          <button 
            class="btn btn-primary btn-sm view-assets-btn" 
            data-vehicle-id="${vehicle.car_id}"
            data-vehicle-name="${vehicle.car_name || 'N/A'}"
            style="font-size: 14px; padding: 8px 16px;">
            <i class="fas fa-images me-1"></i> View Assets (${vehicle.assets.length})
          </button>
        `;
        // Store assets data in a global object for modal access
        if (!window.vehicleAssetsData) window.vehicleAssetsData = {};
        window.vehicleAssetsData[vehicle.car_id] = vehicle.assets;
      } else {
        assetsHtml = '<div class="text-muted" style="font-style: italic; font-size: 14px;">No assets</div>';
      }

      return `
        <tr>
          <td style="vertical-align: middle; font-weight: 600; font-size: 15px;">${vehicle.car_id}</td>
          <td style="vertical-align: middle;">
            <div>
              <div style="font-weight: 600; font-size: 15px; color: #212529; margin-bottom: 4px;">${vehicle.car_name || 'N/A'}</div>
              <div style="font-size: 13px; color: #6c757d;">Year: ${vehicle.car_make || 'N/A'}</div>
            </div>
          </td>
          <td style="vertical-align: middle;">${vehicleImagesHtml}</td>
          <td style="vertical-align: middle; font-weight: 500; font-size: 14px;">${vehicle.car_reg_no || 'N/A'}</td>
          <td style="vertical-align: middle; font-size: 14px;">${vehicle.car_model || 'N/A'}</td>
          <td style="vertical-align: middle; font-size: 14px;">${vehicle.car_make || 'N/A'}</td>
          <td style="vertical-align: middle; padding: 12px; text-align: center;">${assetsHtml}</td>
        </tr>
      `;
    }
  });

  $(document).ready(function() {
    pagination.loadData(1);
    
    // View assets modal handler
    $(document).on("click", ".view-assets-btn", function() {
      const vehicleId = $(this).data("vehicle-id");
      const vehicleName = $(this).data("vehicle-name");
      const assets = window.vehicleAssetsData[vehicleId];
      
      if (assets && assets.length > 0) {
        // Update modal title
        $('#assetsModalLabel').text(`Assets for ${vehicleName} (Vehicle ID: ${vehicleId})`);
        
        // Build assets HTML for modal
        let modalContent = '';
        assets.forEach(asset => {
          const assetImageUrl = asset.img_path 
            ? `<%= IMAGE_FOLDER_PATH %>${asset.img_path}` 
            : '/placeholder.jpg';
          
          // Determine the label to show
          const sideLabel = asset.is_front === 1 ? ' (FRONT)' : (asset.is_front === 0 ? ' (BACK)' : '');
          
          modalContent += `
            <div class="text-center" style="flex: 0 0 auto;">
              <div style="font-weight: 600; font-size: 13px; color: #495057; margin-bottom: 6px; text-transform: uppercase;">
                ${asset.asset_type}${sideLabel}
              </div>
              <div style="width: 140px; height: 140px; display: flex; align-items: center; justify-content: center; border: 2px solid #e9ecef; border-radius: 8px; overflow: hidden; background: #f8f9fa;">
                <img 
                  src="${assetImageUrl}" 
                  alt="${asset.asset_type}" 
                  style="width: 100%; height: 100%; object-fit: cover;"
                  onerror="this.onerror=null; this.src='/placeholder.jpg';"
                >
              </div>
              ${asset.expire_date ? `<div style="font-size: 12px; color: #6c757d; margin-top: 6px;">Expires: ${new Date(asset.expire_date).toLocaleDateString()}</div>` : ''}
            </div>
          `;
        });
        
        $('#modalAssetsContent').html(modalContent);
        
        // Show modal
        const modal = new bootstrap.Modal(document.getElementById('assetsModal'));
        modal.show();
      }
    });
    
    // View vehicle handler
    $(document).on("click", ".view-vehicle", function() {
      const vehicleId = $(this).data("id");
      // Redirect to vehicle details page if available
      // window.location.href = `/admin/vehicle/details/${vehicleId}`;
      toastr.info('Vehicle details page not implemented yet');
    });
    
    // Edit vehicle handler
    $(document).on("click", ".edit-vehicle", function() {
      const vehicleId = $(this).data("id");
      // Redirect to vehicle edit page if available
      // window.location.href = `/admin/vehicle/edit/${vehicleId}`;
      toastr.info('Vehicle edit page not implemented yet');
    });
  });
</script>

<%- footer %>