<?php
// app/models/User.php

class User {
    private $pdo;

    public function __construct($pdo) {
        $this->pdo = $pdo;
    }

    // ==========================================
    // SECTION 1: AUTHENTICATION & CREATION
    // ==========================================

    // 1. Find user by email (REQUIRED for Login & Adding Members)
    public function findByEmail($email) {
        $stmt = $this->pdo->prepare("SELECT * FROM users WHERE email = :email LIMIT 1");
        $stmt->execute(['email' => $email]);
        return $stmt->fetch();
    }

    // 2. Login Logic
    public function login($email, $password) {
        $user = $this->findByEmail($email);
        if ($user && password_verify($password, $user['password'])) {
            $this->updateLastLogin($user['id']);
            return $user;
        }
        return false;
    }

    // 3. Create New User (REQUIRED for Registration & Adding Team)
    public function create($name, $email, $password, $role = 'creator') {
        $hash = password_hash($password, PASSWORD_BCRYPT);
        $stmt = $this->pdo->prepare("INSERT INTO users (name, email, password, role) VALUES (:name, :email, :pass, :role)");
        return $stmt->execute([
            'name' => $name, 
            'email' => $email, 
            'pass' => $hash, 
            'role' => $role
        ]);
    }

    // ==========================================
    // SECTION 2: TEAM MANAGEMENT
    // ==========================================

    // 4. Get All Users (For Team List)
    public function getAll() {
        $stmt = $this->pdo->query("SELECT * FROM users ORDER BY created_at DESC");
        return $stmt->fetchAll();
    }

    // 5. Find User by ID (For Edit Page)
    public function findById($id) {
        $stmt = $this->pdo->prepare("SELECT * FROM users WHERE id = :id");
        $stmt->execute(['id' => $id]);
        return $stmt->fetch();
    }

    // 6. Update User Details
    public function update($id, $name, $email, $role) {
        $stmt = $this->pdo->prepare("UPDATE users SET name = :name, email = :email, role = :role WHERE id = :id");
        return $stmt->execute(['name' => $name, 'email' => $email, 'role' => $role, 'id' => $id]);
    }

    // 7. Delete User
    public function delete($id) {
        $stmt = $this->pdo->prepare("DELETE FROM users WHERE id = :id");
        return $stmt->execute(['id' => $id]);
    }

    // ==========================================
    // SECTION 3: HELPERS
    // ==========================================

    private function updateLastLogin($id) {
        $stmt = $this->pdo->prepare("UPDATE users SET last_login = NOW() WHERE id = :id");
        $stmt->execute(['id' => $id]);
    }
}
?>