127 lines
3.5 KiB
PHP
127 lines
3.5 KiB
PHP
|
<?php
|
||
|
require_once ('dbutils.php');
|
||
|
require_once ('utilities/Emailer.php');
|
||
|
|
||
|
class Rating {
|
||
|
var $dbutils;
|
||
|
function __construct() {
|
||
|
$this->dbutils = new DbUtils();
|
||
|
}
|
||
|
|
||
|
function handleCommand($command) {
|
||
|
if (!$this->isUserAlreadyLoggedInForPhpAndMayRate()) {
|
||
|
echo json_encode(array("status" => "ERROR", "code" => ERROR_RATE_NOT_AUTHOTRIZED, "msg" => ERROR_RATE_NOT_AUTHOTRIZED_MSG));
|
||
|
} else {
|
||
|
if ($command == 'doRate') {
|
||
|
$this->doRate($_POST['service'],$_POST['kitchen'],$_POST['remark'],$_POST['contact']);
|
||
|
}
|
||
|
else {
|
||
|
echo "Kommando nicht unterstuetzt.";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
function isUserAlreadyLoggedInForPhpAndMayRate() {
|
||
|
if(session_id() == '') {
|
||
|
session_start();
|
||
|
}
|
||
|
if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
|
||
|
return false;
|
||
|
} else {
|
||
|
return ($_SESSION['right_rating']);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static function convertRatingToInt($rate) {
|
||
|
$rate = (string) $rate;
|
||
|
if (is_null($rate)) {
|
||
|
return null;
|
||
|
} else if ($rate == "0") {
|
||
|
return 0;
|
||
|
} else if ($rate == "good") {
|
||
|
return 1;
|
||
|
} else if ($rate == "ok") {
|
||
|
return 2;
|
||
|
} else if ($rate == "bad") {
|
||
|
return 3;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static function convertIntToRating($rate) {
|
||
|
if ($rate == 0) {
|
||
|
return "Keine Angabe";
|
||
|
} else if ($rate == 1) {
|
||
|
return "Gut";
|
||
|
} else if ($rate == 2) {
|
||
|
return "Na ja";
|
||
|
} else if ($rate == 3) {
|
||
|
return "Schlecht";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function doRate($service,$kitchen,$remark,$contact) {
|
||
|
date_default_timezone_set(DbUtils::getTimeZone());
|
||
|
$datetime = date('Y-m-d H:i:s');
|
||
|
|
||
|
$pdo = $this->dbutils->openDbAndReturnPdo();
|
||
|
$pdo->beginTransaction();
|
||
|
|
||
|
$service = self::convertRatingToInt($service);
|
||
|
$kitchen = self::convertRatingToInt($kitchen);
|
||
|
|
||
|
$sql = "INSERT INTO %ratings% (`id` , `date` , `service`,`kitchen`,`remark`) VALUES (NULL,?,?,?,?)";
|
||
|
$stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql));
|
||
|
$stmt->execute(array($datetime,$service,$kitchen,$remark));
|
||
|
|
||
|
$pdo->commit();
|
||
|
|
||
|
$ok = true;
|
||
|
$emailbadrating = self::getGeneralItemFromDbWithPdo($pdo, "emailbadrating");
|
||
|
if ((($service == 3) || ($kitchen == 3)) && ($emailbadrating != "")) {
|
||
|
$ok = self::emailRatingInfo($pdo, $emailbadrating, $service, $kitchen, $remark, $contact, "Schlechte Bewertung\r\n");
|
||
|
}
|
||
|
|
||
|
$emailRatingContact = self::getGeneralItemFromDbWithPdo($pdo, "emailratingcontact");
|
||
|
if (!is_null($contact) && ($contact != "") && ($emailRatingContact != "")) {
|
||
|
$ok &= self::emailRatingInfo($pdo, $emailRatingContact, $service, $kitchen, $remark, $contact, "Bewertung - Kunde wünscht Kontakt!\r\n");
|
||
|
}
|
||
|
|
||
|
if ($ok) {
|
||
|
echo json_encode(array("status" => "OK"));
|
||
|
} else {
|
||
|
echo json_encode(array("status" => "ERROR"));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private static function emailRatingInfo($pdo,$toEmail,$service,$kitchen,$remark,$contact,$topictxt) {
|
||
|
$from = self::getGeneralItemFromDbWithPdo($pdo, "email");
|
||
|
if (is_null($from) || ($from == "")) {
|
||
|
return false;
|
||
|
}
|
||
|
$emailbadrating = self::getGeneralItemFromDbWithPdo($pdo, "emailbadrating");
|
||
|
$emailratingcontact = self::getGeneralItemFromDbWithPdo($pdo, "emailratingcontact");
|
||
|
|
||
|
|
||
|
$msg = "Bewertung Service/Bedienung: " . self::convertIntToRating($service) . "\n";
|
||
|
$msg .= "Bewertung Küche: " . self::convertIntToRating($kitchen) . "\n";
|
||
|
$msg .= "Nachricht des Gastes: " . $remark . "\n";
|
||
|
$msg .= "Kontaktinformation des Gastes: " . $contact . "\n";
|
||
|
$msg = str_replace("\n", "\r\n", $msg);
|
||
|
|
||
|
return (Emailer::sendEmail($pdo, $msg, $toEmail, $topictxt));
|
||
|
}
|
||
|
|
||
|
static private function getGeneralItemFromDbWithPdo($pdo,$field) {
|
||
|
$aValue="";
|
||
|
$sql = "SELECT setting FROM %config% where name='$field'";
|
||
|
$stmt = $pdo->prepare(DbUtils::substTableAlias($sql));
|
||
|
$stmt->execute();
|
||
|
$row =$stmt->fetchObject();
|
||
|
if ($row != null) {
|
||
|
$aValue = $row->setting;
|
||
|
}
|
||
|
return $aValue;
|
||
|
}
|
||
|
}
|
||
|
?>
|