Files
ibiza_sistema/models/User.php
Administrador Ibiza 5289fd4133 Primer version funcional
2025-12-29 23:37:11 -06:00

114 lines
3.6 KiB
PHP
Executable File

<?php
class User {
public static function findByUsername($username) {
$db = Database::getInstance();
return $db->fetchOne(
"SELECT * FROM users WHERE username = ? AND is_active = 1",
[$username]
);
}
public static function findById($id) {
$db = Database::getInstance();
return $db->fetchOne(
"SELECT * FROM users WHERE id = ?",
[$id]
);
}
public static function all() {
$db = Database::getInstance();
return $db->fetchAll(
"SELECT id, username, email, first_name, last_name, role, is_active, last_login, created_at
FROM users ORDER BY id"
);
}
public static function create($data) {
$db = Database::getInstance();
$db->execute(
"INSERT INTO users (username, email, password, first_name, last_name, role)
VALUES (?, ?, ?, ?, ?, ?)",
[
$data['username'],
$data['email'],
password_hash($data['password'], PASSWORD_DEFAULT),
$data['first_name'],
$data['last_name'],
$data['role']
]
);
return $db->lastInsertId();
}
public static function update($id, $data) {
$db = Database::getInstance();
$sql = "UPDATE users SET username = ?, email = ?, first_name = ?, last_name = ?, role = ?";
$params = [
$data['username'],
$data['email'],
$data['first_name'],
$data['last_name'],
$data['role']
];
if (!empty($data['password'])) {
$sql .= ", password = ?";
$params[] = password_hash($data['password'], PASSWORD_DEFAULT);
}
$sql .= " WHERE id = ?";
$params[] = $id;
// Database::execute() puede devolver el número de filas afectadas o un booleano.
// Si devuelve 0 (ninguna fila afectada) PHP lo interpreta como false.
// Queremos que sea true si la consulta se ejecuta sin errores.
$stmt = $db->execute($sql, $params);
return $stmt !== false; // Devuelve true si la ejecución fue exitosa, false si hubo un error.
}
public static function delete($id) {
$db = Database::getInstance();
return $db->execute(
"UPDATE users SET is_active = 0 WHERE id = ?",
[$id]
);
}
public static function updateProfile($id, $data) {
$db = Database::getInstance();
$stmt = $db->execute(
"UPDATE users SET email = ?, first_name = ?, last_name = ? WHERE id = ?",
[
$data['email'],
$data['first_name'],
$data['last_name'],
$id
]
);
return $stmt !== false; // Devuelve true si la ejecución fue exitosa, false si hubo un error.
}
public static function changePassword($id, $newPassword) {
$db = Database::getInstance();
$stmt = $db->execute(
"UPDATE users SET password = ? WHERE id = ?",
[
password_hash($newPassword, PASSWORD_DEFAULT),
$id
]
);
return $stmt !== false; // Devuelve true si la ejecución fue exitosa, false si hubo un error.
}
public static function verifyPassword($id, $password) {
$db = Database::getInstance();
$user = $db->fetchOne(
"SELECT password FROM users WHERE id = ?",
[$id]
);
return $user && password_verify($password, $user['password']);
}
}