update lpos
This commit is contained in:
parent
bab61e3570
commit
fd41c8937a
@ -55,13 +55,32 @@ try {
|
||||
}
|
||||
} elseif ($_SERVER['REQUEST_METHOD'] === 'GET') {
|
||||
if ($action === 'get_lpos') {
|
||||
$stmt = $pdo->query("
|
||||
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
|
||||
$limit = isset($_GET['limit']) ? (int)$_GET['limit'] : 20;
|
||||
$offset = ($page - 1) * $limit;
|
||||
|
||||
// Count total
|
||||
$countStmt = $pdo->query("SELECT COUNT(*) FROM pharmacy_lpos");
|
||||
$total = $countStmt->fetchColumn();
|
||||
|
||||
$stmt = $pdo->prepare("
|
||||
SELECT l.*, s.name_en as supplier_name
|
||||
FROM pharmacy_lpos l
|
||||
LEFT JOIN suppliers s ON l.supplier_id = s.id
|
||||
ORDER BY l.created_at DESC
|
||||
LIMIT :limit OFFSET :offset
|
||||
");
|
||||
echo json_encode($stmt->fetchAll());
|
||||
$stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
|
||||
echo json_encode([
|
||||
'data' => $stmt->fetchAll(PDO::FETCH_ASSOC),
|
||||
'total' => $total,
|
||||
'page' => $page,
|
||||
'limit' => $limit,
|
||||
'pages' => ceil($total / $limit)
|
||||
]);
|
||||
|
||||
} elseif ($action === 'get_lpo_details') {
|
||||
$id = $_GET['id'] ?? 0;
|
||||
@ -72,15 +91,15 @@ try {
|
||||
WHERE i.lpo_id = ?
|
||||
");
|
||||
$stmt->execute([$id]);
|
||||
echo json_encode($stmt->fetchAll());
|
||||
echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
|
||||
|
||||
} elseif ($action === 'get_suppliers') {
|
||||
$stmt = $pdo->query("SELECT id, name_en, name_ar FROM suppliers ORDER BY name_en ASC");
|
||||
echo json_encode($stmt->fetchAll());
|
||||
echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
|
||||
|
||||
} elseif ($action === 'get_drugs') {
|
||||
$stmt = $pdo->query("SELECT id, name_en, name_ar, sku, price FROM drugs ORDER BY name_en ASC");
|
||||
echo json_encode($stmt->fetchAll());
|
||||
echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
|
||||
}
|
||||
}
|
||||
|
||||
@ -90,4 +109,4 @@ try {
|
||||
}
|
||||
http_response_code(500);
|
||||
echo json_encode(['error' => $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
@ -24,6 +24,8 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- Pagination -->
|
||||
<nav id="paginationContainer" class="mt-3" aria-label="Page navigation"></nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -161,9 +163,10 @@
|
||||
<script>
|
||||
let allDrugs = [];
|
||||
let allSuppliers = [];
|
||||
let currentPage = 1;
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
loadLPOs();
|
||||
loadLPOs(1);
|
||||
fetchSuppliers();
|
||||
fetchDrugs();
|
||||
|
||||
@ -184,19 +187,26 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
});
|
||||
});
|
||||
|
||||
function loadLPOs() {
|
||||
fetch('api/pharmacy_lpo.php?action=get_lpos')
|
||||
function loadLPOs(page = 1) {
|
||||
currentPage = page;
|
||||
fetch('api/pharmacy_lpo.php?action=get_lpos&page=' + page)
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
const tbody = document.getElementById('lpoTableBody');
|
||||
const paginationContainer = document.getElementById('paginationContainer');
|
||||
tbody.innerHTML = '';
|
||||
|
||||
if (data.length === 0) {
|
||||
// Handle new response structure (paginated) vs old (array)
|
||||
const lpos = data.data || (Array.isArray(data) ? data : []);
|
||||
const totalPages = data.pages || 1;
|
||||
|
||||
if (lpos.length === 0) {
|
||||
tbody.innerHTML = '<tr><td colspan="6" class="text-center py-4 text-muted"><?php echo __('no_data_found'); ?></td></tr>';
|
||||
paginationContainer.innerHTML = '';
|
||||
return;
|
||||
}
|
||||
|
||||
data.forEach(lpo => {
|
||||
lpos.forEach(lpo => {
|
||||
const tr = document.createElement('tr');
|
||||
let statusBadge = '';
|
||||
switch(lpo.status) {
|
||||
@ -223,8 +233,60 @@ function loadLPOs() {
|
||||
`;
|
||||
tbody.appendChild(tr);
|
||||
});
|
||||
|
||||
renderPagination(currentPage, totalPages);
|
||||
})
|
||||
.catch(err => console.error(err));
|
||||
.catch(err => {
|
||||
console.error(err);
|
||||
document.getElementById('lpoTableBody').innerHTML = '<tr><td colspan="6" class="text-center text-danger">Error loading data</td></tr>';
|
||||
});
|
||||
}
|
||||
|
||||
function renderPagination(current, total) {
|
||||
const container = document.getElementById('paginationContainer');
|
||||
if (total <= 1) {
|
||||
container.innerHTML = '';
|
||||
return;
|
||||
}
|
||||
|
||||
let html = '<ul class="pagination justify-content-center">';
|
||||
|
||||
// Previous
|
||||
html += `<li class="page-item ${current <= 1 ? 'disabled' : ''}">
|
||||
<a class="page-link" href="#" onclick="event.preventDefault(); loadLPOs(${current - 1})"><?php echo __('previous'); ?></a>
|
||||
</li>`;
|
||||
|
||||
// Page Numbers (Show max 5 pages for simplicity)
|
||||
let start = Math.max(1, current - 2);
|
||||
let end = Math.min(total, start + 4);
|
||||
|
||||
if (end - start < 4) {
|
||||
start = Math.max(1, end - 4);
|
||||
}
|
||||
|
||||
if (start > 1) {
|
||||
html += `<li class="page-item"><a class="page-link" href="#" onclick="event.preventDefault(); loadLPOs(1)">1</a></li>`;
|
||||
if (start > 2) html += `<li class="page-item disabled"><span class="page-link">...</span></li>`;
|
||||
}
|
||||
|
||||
for (let i = start; i <= end; i++) {
|
||||
html += `<li class="page-item ${current === i ? 'active' : ''}">
|
||||
<a class="page-link" href="#" onclick="event.preventDefault(); loadLPOs(${i})">${i}</a>
|
||||
</li>`;
|
||||
}
|
||||
|
||||
if (end < total) {
|
||||
if (end < total - 1) html += `<li class="page-item disabled"><span class="page-link">...</span></li>`;
|
||||
html += `<li class="page-item"><a class="page-link" href="#" onclick="event.preventDefault(); loadLPOs(${total})">${total}</a></li>`;
|
||||
}
|
||||
|
||||
// Next
|
||||
html += `<li class="page-item ${current >= total ? 'disabled' : ''}">
|
||||
<a class="page-link" href="#" onclick="event.preventDefault(); loadLPOs(${current + 1})"><?php echo __('next'); ?></a>
|
||||
</li>`;
|
||||
|
||||
html += '</ul>';
|
||||
container.innerHTML = html;
|
||||
}
|
||||
|
||||
function fetchSuppliers() {
|
||||
@ -428,4 +490,4 @@ function updateStatus(id, newStatus) {
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</script>
|
||||
Loading…
x
Reference in New Issue
Block a user