📂 FileMgr
📍
/
home
/
u865173473
/
domains
/
lavender-pelican-765273.hostingersite.com
/
public_html
/
models
✏️ m/public_html/models/Asset.php
⬅ Kembali
<?php class Asset { private $pdo; public function __construct($pdo) { $this->pdo = $pdo; } public function getAll($filters = []) { $sql = "SELECT a.*, c.name as category_name FROM assets a LEFT JOIN asset_categories c ON a.category_id = c.id WHERE 1=1"; $params = []; if (!empty($filters['status'])) { $sql .= " AND a.status = ?"; $params[] = $filters['status']; } if (!empty($filters['category_id'])) { $sql .= " AND a.category_id = ?"; $params[] = $filters['category_id']; } if (!empty($filters['search'])) { $sql .= " AND (a.name LIKE ? OR a.asset_code LIKE ? OR a.serial_number LIKE ?)"; $search = "%" . $filters['search'] . "%"; $params[] = $search; $params[] = $search; $params[] = $search; } $sql .= " ORDER BY a.created_at DESC"; $stmt = $this->pdo->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(); } public function getById($id) { $stmt = $this->pdo->prepare("SELECT a.*, c.name as category_name FROM assets a LEFT JOIN asset_categories c ON a.category_id = c.id WHERE a.id = ?"); $stmt->execute([$id]); return $stmt->fetch(); } public function create($data) { if (empty($data['asset_code'])) { $data['asset_code'] = 'AST-' . strtoupper(uniqid()); } $sql = "INSERT INTO assets (asset_code, name, category_id, brand, serial_number, purchase_date, warranty_end_date, status, description) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; $stmt = $this->pdo->prepare($sql); return $stmt->execute([ $data['asset_code'], $data['name'], $data['category_id'], $data['brand'], $data['serial_number'], $data['purchase_date'], $data['warranty_end_date'], $data['status'] ?? 'Available', $data['description'] ]); } public function update($id, $data) { $sql = "UPDATE assets SET name = ?, category_id = ?, brand = ?, serial_number = ?, purchase_date = ?, warranty_end_date = ?, status = ?, description = ? WHERE id = ?"; $stmt = $this->pdo->prepare($sql); $result = $stmt->execute([ $data['name'], $data['category_id'], $data['brand'], $data['serial_number'], $data['purchase_date'], $data['warranty_end_date'], $data['status'], $data['description'], $id ]); if ($result && $data['status'] !== 'Assigned' && $data['status'] !== 'Return Requested') { // If asset is no longer assigned, mark any active assignments as returned $stmt = $this->pdo->prepare("UPDATE asset_assignments SET status = 'Returned', return_date = CURRENT_DATE WHERE asset_id = ? AND status = 'Active'"); $stmt->execute([$id]); } return $result; } public function delete($id) { $stmt = $this->pdo->prepare("DELETE FROM assets WHERE id = ?"); return $stmt->execute([$id]); } public function updateStatus($id, $status) { $stmt = $this->pdo->prepare("UPDATE assets SET status = ? WHERE id = ?"); return $stmt->execute([$status, $id]); } public function getStats() { $stats = [ 'total' => 0, 'available' => 0, 'assigned' => 0, 'damaged' => 0, 'maintenance' => 0, 'return_requested' => 0 ]; $stmt = $this->pdo->query("SELECT status, COUNT(*) as count FROM assets GROUP BY status"); $results = $stmt->fetchAll(); foreach ($results as $row) { $stats['total'] += $row['count']; $key = str_replace(' ', '_', strtolower($row['status'])); if (array_key_exists($key, $stats)) { $stats[$key] = $row['count']; } } return $stats; } public function getCategories() { return $this->pdo->query("SELECT * FROM asset_categories ORDER BY name")->fetchAll(); } } ?>
💾 Simpan
Batal
⬅ public_html
2 item
Nama
Tipe
Ukuran
Diubah
Aksi
🐘
Asset.php
php
4.3 KB
2026-07-29 14:08
✏️
👁️
🔤
🗑
🐘
AssetAssignment.php
php
4.2 KB
2026-07-29 14:08
✏️
👁️
🔤
🗑
✏️ Rename
Nama Baru
Simpan
Batal