<!-- Realisatsiooni aluseks on võetud:
PHP Object Oriented CRUD Example with Bootstrap
Kasutatud 6.04.2016
https://www.codeofaninja.com/2014/06/php-object-oriented-crud-example-oop.html
-->

<?php
/*
======================
Kategooria klass
======================
*/
class Kategooria{
    
    private $conn;
    private $tabel = "kategooriad";
    
    public $id;
    public $nimi;
    
    public function __construct($db)
    {
        $this->conn = $db;
    }
    
    function read()
    {
        // Kõikide kategooriate lugemine, järjestamine nime alusel
        $query = "SELECT id, nimi FROM " . $this->tabel . " ORDER BY nimi";
        
        $stmt = $this->conn->prepare($query);
        $stmt->execute();
        
        return $stmt;
    }
    
    function readName()
    {
        // Kategooria nime lugemine ID alusel
        $query = "SELECT nimi FROM " . $this->tabel . " WHERE id = ? limit 0,1";
        
        $stmt = $this->conn->prepare($query);
        $stmt->bindParam(1, $this->id);
        $stmt->execute();
        
        $row = $stmt->fetch(PDO::FETCH_ASSOC);
        
        $this->nimi = $row['nimi'];
    }
    
    function readAll($page, $from_record_num, $records_per_page)
    {
        // Kõikide kategooriate lugemine lehekülgede nummerdusega
        $query = "SELECT nimi FROM " . $this->tabel . " ORDER BY nimi ASC LIMIT {$from_record_num}, {$records_per_page}";
        
        $stmt = $this->conn->prepare($query);
        
        $stmt->execute();
        
        return $stmt;
    }
    
    function create()
    {
        // Uue kategooria lisamine
        $query = "INSERT INTO " . $this->tabel . " SET nimi= ?";
        
        $stmt       = $this->conn->prepare($query);
        $this->nimi = htmlspecialchars(strip_tags($this->nimi));
        $stmt->bindParam(1, $this->nimi);
        
        if ($stmt->execute()) {
            return true;
        } else {
            return false;
        }
    }
    
    function delete()
    {
        // Kategooria kustutamine andmebaasist
        $query = "DELETE FROM " . $this->tabel . " WHERE id = ?";
        
        $stmt = $this->conn->prepare($query);
        $stmt->bindParam(1, $this->id);
        
        if ($result = $stmt->execute()) {
            return true;
        } else {
            return false;
        }
    }
    
    function update()
    {
        // Kategooria uuendamine
        $query = "UPDATE " . $this->tabel . " SET nimi = :nimi WHERE id = :id";
        
        $stmt = $this->conn->prepare($query);
        
        $this->nimi = htmlspecialchars(strip_tags($this->nimi));
        $this->id   = htmlspecialchars(strip_tags($this->id));
        
        $stmt->bindParam(':nimi', $this->nimi);
        $stmt->bindParam(':id', $this->id);
        
        if ($stmt->execute()) {
            return true;
        } else {
            return false;
        }
    }
    
    public function esemeteArv()
    {
        // Aktiivsete esemete arvu lugemine kategooriate kaupa. Kasutusel portaali avalehel kategooria taga
        // olevas badges
        $query = "SELECT id FROM oksjonid WHERE kategooria_id =? AND algusaeg < now() AND lopuaeg > now()";
        
        $stmt = $this->conn->prepare($query);
        $stmt->bindParam(1, $this->id);
        $stmt->execute();
        
        $num = $stmt->rowCount();
        return $num;
    }
    
    
}