<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Session;

class bewertungen extends Model
{
    use HasFactory;

    function bewerten(int $ersteller, int $gericht, int $sterne, string $bemerkung){
        if($ersteller != session("benutzerid",0)||$sterne <0||$sterne>4||strlen($bemerkung)<4||strlen($bemerkung)>100){
            return 0;
        }

        $sql = "INSERT INTO bewertungen (ersteller_id,gericht_id,bemerkung,sterne,hervorgehoben) VALUES (".mysqli_real_escape_string($ersteller). ",". mysqli_real_escape_string($gericht).",\"". mysqli_real_escape_string($bemerkung)."\",".mysqli_real_escape_string($sterne).",0);";

        DB::insert($sql);

        return 1;
    }

    function bewertungen(){
        $sql_bewertungen = "SELECT bewertungen.gericht_id, bewertungen.id, bewertungen.sterne, bewertungen.bemerkung, bewertungen.hervorgehoben FROM bewertungen ORDER BY bewertungen.erstellungsdatum LIMIT 30";
        $result_sql_bewertungen = DB::select($sql_bewertungen);

        $result = [];

        foreach ($result_sql_bewertungen as $row) {
            $sql = "SELECT gericht.name FROM gericht WHERE gericht.id=". $row->gericht_id;
            array_push($result,[DB::select($sql),$row->sterne,$row->bemerkung,$row->id,$row->hervorgehoben]);
        }

        return $result;
    }

    function meine_bewertungen(int $id){
        $sql_bewertungen = "SELECT bewertungen.gericht_id, bewertungen.id ,bewertungen.sterne, bewertungen.bemerkung FROM bewertungen WHERE bewertungen.ersteller_id =". $id." ORDER BY bewertungen.erstellungsdatum";
        $result_sql_bewertungen = DB::select($sql_bewertungen);

        $result = [];

        foreach ($result_sql_bewertungen as $row) {
            $sql = "SELECT gericht.name FROM gericht WHERE gericht.id=" . $row->gericht_id;
            array_push($result, [DB::select($sql), $row->sterne, $row->bemerkung,$row->id]);
        }

            return $result;

    }

    function loschen(int $id){
        $sql_bewertungen = "SELECT bewertungen.ersteller_id FROM bewertungen WHERE bewertungen.id =". $id;
        $result_sql_bewertungen = DB::select($sql_bewertungen);

        if($result_sql_bewertungen == null){
            return 0;
        }

        if($result_sql_bewertungen[0]->ersteller_id != session("benutzer_id",0)){
            return 0;
        }

        $sql_bewertungen = "DELETE FROM bewertungen WHERE bewertungen.id = ".$id;
        DB::delete($sql_bewertungen);

        return 1;
    }

    function hervorheben(int $id){
        $benutzer = new benutzer();
        if($benutzer->isAdmin(session("benutzer_id",0))!=1){
            return 0;
        }

        $sql = "UPDATE bewertungen SET hervorgehoben =1 WHERE id =" .$id;
        DB::update($sql);

        return 1;

    }

    function dehervorheben(int $id){
        $benutzer = new benutzer();
        if($benutzer->isAdmin(session("benutzer_id",0))!=1){
            return 0;
        }

        $sql = "UPDATE bewertungen SET hervorgehoben =0 WHERE id =" .$id;
        DB::update($sql);

        return 1;

    }

    function hervorgehobene_bewertungen(){
        $sql_bewertungen = "SELECT bewertungen.gericht_id, bewertungen.id, bewertungen.sterne, bewertungen.bemerkung, bewertungen.hervorgehoben FROM bewertungen WHERE bewertungen.hervorgehoben = 1 ORDER BY bewertungen.erstellungsdatum LIMIT 30";
        $result_sql_bewertungen = DB::select($sql_bewertungen);

        $result = [];

        foreach ($result_sql_bewertungen as $row) {
            $sql = "SELECT gericht.name FROM gericht WHERE gericht.id=". $row->gericht_id;
            array_push($result,[DB::select($sql),$row->sterne,$row->bemerkung,$row->id,$row->hervorgehoben]);
        }

        return $result;

    }

}
