<?php

namespace Blog\Model;

use PDOException;

class GutscheinModel extends Database {

    public function getGutscheine() {
        $pdo = $this->linkDB();
        $sql = "SELECT * FROM gutschein ORDER BY gültigkeit DESC;";
        try {
            $sth = $pdo->prepare($sql);
            $sth->execute();
            return $sth->fetchAll(\PDO::FETCH_ASSOC);
        } catch (PDOException $e) {
            new \Blog\Library\ErrorMsg("Fehler beim Lesen der Gutscheine.", $e);
            die;
        }
    }

    public function getGutschein($id) {
        $pdo = $this->linkDB();
        $sql = "SELECT * FROM gutschein WHERE gutscheinid = :id;";
        $params = [":id" => $id];
        try {
            $sth = $pdo->prepare($sql);
            $sth->execute($params);
            return $sth->fetch(\PDO::FETCH_ASSOC);
        } catch (PDOException $e) {
            new \Blog\Library\ErrorMsg("Fehler beim Lesen des Gutscheins.", $e);
            die;
        }
    }

    public function createGutschein($data) {
        $pdo = $this->linkDB();
        $sql = "INSERT INTO gutschein (code, rabatt, eventid, gültigkeit) VALUES (:code, :rabatt, :eventid, :gültigkeit);";
        $params = [
            ":code" => $data['code'],
            ":rabatt" => $data['rabatt'],
            ":eventid" => $data['eventid'],
            ":gültigkeit" => $data['gültigkeit']
        ];
        try {
            $sth = $pdo->prepare($sql);
            $sth->execute($params);
            return $sth;
        } catch (PDOException $e) {
            new \Blog\Library\ErrorMsg("Fehler beim Erstellen des Gutscheins.", $e);
            die;
        }
    }

    public function updateGutschein($id, $data) {
        $pdo = $this->linkDB();
        $sql = "UPDATE gutschein SET code = :code, rabatt = :rabatt, eventid = :eventid, gültigkeit = :gültigkeit WHERE gutscheinid = :id;";
        $params = [
            ":code" => $data['code'],
            ":rabatt" => $data['rabatt'],
            ":eventid" => $data['eventid'],
            ":gültigkeit" => $data['gültigkeit'],
            ":id" => $id
        ];
        try {
            $sth = $pdo->prepare($sql);
            $sth->execute($params);
        } catch (PDOException $e) {
            new \Blog\Library\ErrorMsg("Fehler beim Aktualisieren des Gutscheins.", $e);
            die;
        }
    }

    public function deleteGutschein($id) {
        $pdo = $this->linkDB();
        $sql = "DELETE FROM gutschein WHERE gutscheinid = :id;";
        $params = [":id" => $id];
        try {
            $sth = $pdo->prepare($sql);
            $sth->execute($params);
        } catch (PDOException $e) {
            new \Blog\Library\ErrorMsg("Fehler beim Löschen des Gutscheins.", $e);
            die;
        }
    }
}