Files
DBWT/M6/emensamobile/app/Models/Gerichte.php
2024-01-19 18:57:43 +01:00

153 lines
4.3 KiB
PHP

<?php
namespace App\Models;
use Exception;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Session;
class Gerichte extends Model
{
protected $table = 'gericht';
protected $primaryKey = 'id';
public $incrementing = true;
use HasFactory;
function getPreisIntern(){
return $this->formatPreis($this->attributes['preisintern']);
}
function getPreisExtern(){
return $this->formatPreis($this->attributes['preisextern']);
}
private function formatPreis($unformatted){
return number_format($unformatted, 2, ',');
}
function getBildname(){
return $this->attributes['bildname'];
}
function getGerichtName(){
return $this->attributes['name'];
}
function setVegetarischAttribut($value){
if ($value == 1 || $value == 0){
$this->attributes['vegetarisch'] = $value;
return;
}
$parsed = $this->parse_wahrheitswert($value) ;
$this->attributes['vegetarisch'] = $parsed;
}
function setVeganAttribut($value){
if ($value == 1 || $value == 0){
$this->attributes['vegan'] = $value;
return;
}
$parsed = $this->parse_wahrheitswert($value) ;
$this->attributes['vegetarisch'] = $parsed;
}
private function parse_wahrheitswert($value){
$value = strtolower(str_replace(" ", "", $value));
if ($value == "yes" || $value == "ja"){
return 1;
}
elseif ($value == "no" || $value == "nein"){
return 0;
}
else{
trigger_error("Could not parse value");
}
// Wenn versucht wird das in die Datenbank zu schreiben sollte es eine Fehlermeldung geben
}
function db_gericht_select_karte()
{
try {
$sql_gerichte = "SELECT * FROM gericht ORDER BY RAND() LIMIT 5";
$result_sql_gerichte = DB::select($sql_gerichte);
$result_sql_gerichte1 = DB::select($sql_gerichte);
$verwendete_allergene_code = [];
$verwendete_allergene_string = "";
foreach ($result_sql_gerichte as $row_gerichte) {
// Abfrage der vorhandenen Allergene im aktuellen Gericht
$sql_gericht_hat_allergene = "SELECT * FROM gericht_hat_allergen WHERE gericht_id=" . $row_gerichte->id;
$result_sql_gericht_hat_allergene = DB::select($sql_gericht_hat_allergene);
$allergene = "";
foreach ($result_sql_gericht_hat_allergene as $row_allergene) {
$allergene .= $row_allergene->code . ", ";
$drin = 0;
foreach ($verwendete_allergene_code as $verwendet){
if ($verwendet == $row_allergene->code){
$drin =1;
}
}
if ($drin == 0) {
$verwendete_allergene_code[] = $row_allergene->code;
}
}
}
$sql_allergen = "SELECT code, name FROM allergen";
$result_sql_allergen = DB::select($sql_allergen);
$data = [
"allergene" => $verwendete_allergene_string,
"result_sql_allergen" => $result_sql_allergen,
"verwendete_allergene_code" => $verwendete_allergene_code,
"result_sql_gerichte" => $result_sql_gerichte1,
"allergene1" => $allergene
];
return $data;
} catch (Exception $ex) {
$data = array(
'id' => '-1',
'error' => true,
'name' => 'Datenbankfehler ' . $ex->getCode(),
'beschreibung' => $ex->getMessage());
return $data;
}
}
function db_gericht_bewertung(int $id){
$sql_gerichte = "SELECT gericht.name, gericht.bildname FROM gericht WHERE id =". $id;
$result_sql_gerichte = DB::select($sql_gerichte);
return $result_sql_gerichte;
}
function db_gericht_name(int $id){
$sql_gerichte = "SELECT gericht.name FROM gericht WHERE id =". $id;
$result_sql_gerichte = DB::select($sql_gerichte);
return $result_sql_gerichte;
}
}