ordersprinter/webapp/php/customers.php

701 lines
26 KiB
PHP

<?php
// Datenbank-Verbindungsparameter
require_once ('dbutils.php');
require_once ('commonutils.php');
require_once ('admin.php');
require_once ('reports.php');
require_once ('utilities/pdfexport.php');
require_once ('utilities/Emailer.php');
require_once ('3rdparty/phpexcel/classes/PHPExcel.php');
class Customers {
private static $rights = array(
"createNewCustomer" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"deleteCustomer" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"changeCustomer" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"getCustomers" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"createNewGroup" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"getGroups" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"changeGroup" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"deleteGroup" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"getVacations" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"newVacation" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"delVacation" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"getCustomersForReserv" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("reservation")),
"getBills" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"pay" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"unpay" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"printbill" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"payallbills" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"printallbills" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"emailGroup" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"exportLog" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers")),
"getPaymentsForGuest" => array("loggedin" => 1, "isadmin" => 0, "rights" => array("customers"))
);
public static $CANCEL = 0;
public static $PAY = 1;
private static function checkRights($command) {
if(session_id() == '') {
session_start();
}
if (!array_key_exists($command, self::$rights)) {
echo json_encode(array("status" => "ERROR", "code" => ERROR_COMMAND_NOT_FOUND, "msg" => ERROR_COMMAND_NOT_FOUND_MSG));
return false;
}
$cmdRights = self::$rights[$command];
if ($cmdRights["loggedin"] == 1) {
if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
echo json_encode(array("status" => "ERROR", "code" => ERROR_NOT_AUTHOTRIZED, "msg" => ERROR_NOT_AUTHOTRIZED_MSG));
return false;
}
}
if ($cmdRights["isadmin"] == 1) {
if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
echo json_encode(array("status" => "ERROR", "code" => ERROR_NOT_AUTHOTRIZED, "msg" => ERROR_NOT_AUTHOTRIZED_MSG));
return false;
} else {
if ($_SESSION['is_admin'] == 0) {
echo json_encode(array("status" => "ERROR", "code" => ERROR_COMMAND_NOT_ADMIN, "msg" => ERROR_COMMAND_NOT_ADMIN_MSG));
return false;
}
}
}
if (!is_null($cmdRights["rights"])) {
foreach($cmdRights["rights"] as $aRight) {
if ($aRight == 'customers') {
if ($_SESSION['right_customers'] == 1) {
return true;
}
}
if ($aRight == 'reservation') {
if ($_SESSION['right_reservation'] == 1) {
return true;
}
}
}
echo json_encode(array("status" => "ERROR", "code" => ERROR_NOT_AUTHOTRIZED, "msg" => ERROR_NOT_AUTHOTRIZED_MSG));
return false;
}
return true;
}
function __construct() {
//
}
function handleCommand($command) {
if (!self::checkRights($command)) {
return false;
}
$pdo = DbUtils::openDbAndReturnPdoStatic();
if ($command == 'createNewCustomer') {
echo json_encode($this->createNewCustomer($pdo,$_POST['name'],$_POST['email'],$_POST['addr'],$_POST['remark'],$_POST['phone'],$_POST['mobil'],$_POST['www'],$_POST['hello'],$_POST['regards'],$_POST['checkin'],$_POST['checkout'],$_POST['room']));
} else if ($command == 'deleteCustomer') {
echo json_encode($this->deleteCustomer($pdo,$_POST['id']));
} else if ($command == 'changeCustomer') {
echo json_encode($this->changeCustomer($pdo,$_POST["id"],$_POST['name'],$_POST['email'],$_POST['addr'],$_POST['remark'],$_POST['phone'],$_POST['mobil'],$_POST['www'],$_POST['hello'],$_POST['regards'],$_POST["groups"]));
} else if ($command == 'getCustomers') {
echo json_encode($this->getCustomers($pdo,$_POST['search'],$_POST['date'],$_POST['onlyopenbills']));
} else if ($command == 'createNewGroup') {
echo json_encode($this->createNewGroup($pdo,$_POST['name'],$_POST['remark']));
} else if ($command == 'getGroups') {
echo json_encode($this->getGroups($pdo,$_POST['search']));
} else if ($command == 'changeGroup') {
echo json_encode($this->changeGroup($pdo,$_POST["id"],$_POST['name'],$_POST['remark']));
} else if ($command == 'deleteGroup') {
echo json_encode($this->deleteGroup($pdo,$_POST['id']));
} else if ($command == 'getCustomersForReserv') {
echo json_encode($this->getCustomersForReserv($pdo,$_POST['search']));
} else if ($command == 'getVacations') {
echo json_encode($this->getVacations($pdo,$_GET['cusid']));
} else if ($command == 'newVacation') {
echo json_encode($this->newVacation($pdo,$_POST['id'],$_POST['checkin'],$_POST['checkout'],$_POST['room'],$_POST['remark']));
} else if ($command == 'delVacation') {
echo json_encode($this->delVacation($pdo,$_POST['id']));
} else if ($command == 'getBills') {
echo json_encode($this->getBills($pdo,$_GET['cusid']));
} else if ($command == 'pay') {
echo json_encode($this->pay($pdo,$_POST['id'],$_POST['paymentid']));
} else if ($command == 'unpay') {
echo json_encode($this->unpay($pdo,$_POST['id'],$_POST["code"],$_POST["remark"]));
} else if ($command == 'printbill') {
echo json_encode($this->printBill($pdo,$_POST['id']));
} else if ($command == 'payallbills') {
echo json_encode($this->payallbills($pdo,$_POST['id'],$_POST['paymentid']));
} else if ($command == 'printallbills') {
echo json_encode($this->printallbills($pdo,$_POST['id']));
} else if ($command == 'emailGroup') {
echo json_encode($this->emailGroup($pdo,$_POST['groupid'],$_POST["subject"],$_POST["bcc"],$_POST["text"]));
} else if ($command == 'getPaymentsForGuest') {
echo json_encode($this->getPaymentsForGuest($pdo));
} else if ($command == 'exportLog') {
self::exportLog($pdo);
} else {
echo "Command not supported.";
}
}
// for internal request
private function hasCurrentUserCustomersRights() {
session_start();
if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
// no user logged in
return false;
} else {
return ($_SESSION['right_customers']);
}
}
private function createNewCustomer($pdo,$name,$email,$addr,$remark,$phone,$mobil,$www,$hello,$regards,$checkin,$checkout,$room) {
date_default_timezone_set(DbUtils::getTimeZone());
$currentTime = date('Y-m-d H:i:s');
if ($checkin == '') {
$checkin = null;
}
if ($checkout == '') {
$checkout = null;
}
if ($room == '') {
$room = null;
}
if ($hello == '') {
$hello = null;
}
if ($regards == '') {
$regards = null;
}
try {
$pdo->beginTransaction();
$sql = "SELECT count(id) as countid from %customers% WHERE name=?";
$row = CommonUtils::getRowSqlObject($pdo, $sql, array($name));
$number = $row->countid;
if ($row->countid > 0) {
$code = 1;
} else {
$code = 0;
}
$sql = "INSERT INTO %customers% (name,email,address,remark,phone,mobil,www,hello,regards,created,lastmodified) VALUES(?,?,?,?,?,?,?,?,?,?,?)";
$stmt = $pdo->prepare(DbUtils::substTableAlias($sql));
$stmt->execute(array($name,$email,$addr,$remark,$phone,$mobil,$www,$hello,$regards,$currentTime,$currentTime));
$cusid = $pdo->lastInsertId();
self::addVacationsCore($pdo,$cusid,$checkin,$checkout,$room,null);
$pdo->commit();
return array("status" => "OK","code" => $code, "value" => $number);
} catch (Exception $e) {
$pdo->rollBack();
return array("status" => "ERROR","msg" => $e->getMessage());
}
}
private static function addVacationsCore($pdo,$cusid,$checkin,$checkout,$room,$remark) {
if ($checkin == '') {
$checkin = null;
}
if ($checkout == '') {
$checkout = null;
}
if (!is_null($checkin) || !is_null($checkout)) {
$sql = "INSERT INTO %vacations% (customerid,checkin,checkout,room,remark) VALUES(?,?,?,?,?)";
CommonUtils::execSql($pdo, $sql, array($cusid,$checkin,$checkout,$room,$remark));
}
}
private function createNewGroup($pdo,$name,$remark) {
date_default_timezone_set(DbUtils::getTimeZone());
$currentTime = date('Y-m-d H:i:s');
try {
$sql = "SELECT count(id) as countid from %groups% WHERE name=?";
$row = CommonUtils::getRowSqlObject($pdo, $sql, array($name));
if ($row->countid > 0) {
return array("status" => "ERROR","msg" => "Group name already exists","code" => 1);
}
$sql = "INSERT INTO %groups% (name,remark,created) VALUES(?,?,?)";
CommonUtils::execSql($pdo, $sql, array($name,$remark,$currentTime));
return array("status" => "OK");
} catch (Exception $e) {
return array("status" => "ERROR","msg" => $e->getMessage(),"code" => 2);
}
}
private function changeCustomer($pdo,$id,$name,$email,$addr,$remark,$phone,$mobil,$www,$hello,$regards,$groups) {
date_default_timezone_set(DbUtils::getTimeZone());
$currentTime = date('Y-m-d H:i:s');
try {
$sql = "UPDATE %customers% SET name=?,email=?,address=?, remark=?, phone=?, mobil=?, www=?,hello=?,regards=?,lastmodified=? WHERE id=?";
CommonUtils::execSql($pdo, $sql, array($name,$email,$addr,$remark,$phone,$mobil,$www,$hello,$regards,$currentTime,$id));
$sql = "DELETE FROM %groupcustomer% WHERE customerid=?";
CommonUtils::execSql($pdo, $sql, array($id));
if ($groups != '') {
foreach($groups as $aGroupId) {
$sql = "INSERT INTO %groupcustomer% (customerid,groupid) VALUES(?,?)";
CommonUtils::execSql($pdo, $sql, array($id,$aGroupId));
}
}
return array("status" => "OK");
} catch (Exception $e) {
return array("status" => "ERROR","msg" => $e->getMessage());
}
}
private function newVacation($pdo,$cusid,$checkin,$checkout,$room,$remark) {
try {
self::addVacationsCore($pdo,$cusid,$checkin,$checkout,$room,$remark);
return array("status" => "OK","cusid" => $cusid);
} catch (Exception $e) {
return array("status" => "ERROR","msg" => $e->getMessage());
}
}
private function delVacation($pdo,$id) {
try {
$pdo->beginTransaction();
$sql = "SELECT count(id) as countid FROM %vacations% WHERE id=?";
$row = CommonUtils::getRowSqlObject($pdo, $sql, array($id));
if ($row->countid != 1) {
$pdo->rollBack();
return array("status" => "ERROR","msg" => "Vacations entry not found");
} else {
$sql = "SELECT customerid FROM %vacations% WHERE id=?";
$row = CommonUtils::getRowSqlObject($pdo, $sql, array($id));
$cusid = $row->customerid;
$sql = "DELETE FROM %vacations% WHERE id=?";
CommonUtils::execSql($pdo, $sql, array($id));
$pdo->commit();
return array("status" => "OK","cusid" => $cusid);
}
} catch (Exception $ex) {
$pdo->rollBack();
return array("status" => "ERROR","msg" => $ex->getMessage());
}
}
private static function payOrUnpay($pdo,$id,$value,$doTransaction,$remark=null) {
try {
if ($doTransaction) {
$pdo->beginTransaction();
}
$sql = "SELECT count(id) as countid FROM %bill% WHERE id=?";
$row = CommonUtils::getRowSqlObject($pdo, $sql, array($id));
if ($row->countid != 1) {
if ($doTransaction) {
$pdo->rollBack();
}
return array("status" => "ERROR","msg" => "Bill with id=$id not found");
} else {
$sql = "SELECT intguestid FROM %bill% WHERE id=?";
$row = CommonUtils::getRowSqlObject($pdo, $sql, array($id));
$cusid = $row->intguestid;
$sql = "UPDATE %bill% SET intguestpaid=? WHERE id=?";
CommonUtils::execSql($pdo, $sql, array($value,$id));
date_default_timezone_set(DbUtils::getTimeZone());
$currentTime = date('Y-m-d H:i:s');
if(session_id() == '') {
session_start();
}
$userid = $_SESSION['userid'];
$sql = "INSERT INTO %customerlog% (date,action,customerid,userid,billid,remark) VALUES(?,?,?,?,?,?)";
$action = (is_null($value) ? self::$CANCEL : self::$PAY);
CommonUtils::execSql($pdo, $sql, array($currentTime,$action,$cusid,$userid,$id,$remark));
if ($doTransaction) {
$pdo->commit();
}
return array("status" => "OK","cusid" => $cusid);
}
} catch (Exception $ex) {
if ($doTransaction) {
$pdo->rollBack();
}
return array("status" => "ERROR","msg" => $ex->getMessage());
}
}
private function pay($pdo,$id,$paymentid) {
$paymentname = self::getPaymentName($pdo,$paymentid);
return (self::payOrUnpay($pdo, $id, 1,true,$paymentname));
}
private function unpay($pdo,$id,$code,$remark) {
$stornocode = CommonUtils::getConfigValue($pdo, 'cancelguestcode', null);
if (is_null($stornocode)) {
return array("status" => "ERROR","msg" => "Es wurde noch kein Stornocode in der Verwaltung festgelegt");
}
if ($stornocode != $code) {
return array("status" => "ERROR","msg" => "Falscher Stornocode");
}
return (self::payOrUnpay($pdo, $id, null,true,$remark));
}
private function printBill($pdo,$billid) {
if(session_id() == '') {
session_start();
}
$printer = $_SESSION['receiptprinter'];
// now get receipt info from bill table
CommonUtils::log($pdo, "PRINTQUEUE", "Insert bill with id=$billid for printer=$printer into queue for customer.");
$printInsertSql = "INSERT INTO `%printjobs%` (`id` , `content`,`type`,`printer`) VALUES ( NULL,?,?,?)";
CommonUtils::execSql($pdo, $printInsertSql, array((string)($billid),'3',$printer));
return array("status" => "OK");
}
private function printallbills($pdo,$cusid) {
$sql = "SELECT id FROM %bill% WHERE intguestid=?";
$result = CommonUtils::fetchSqlAll($pdo, $sql, array($cusid));
foreach($result as $aBill) {
$this->printBill($pdo, $aBill["id"]);
}
return array("status" => "OK");
}
private function payallbills($pdo,$cusid,$paymentid) {
try {
$pdo->beginTransaction();
$paymentname = self::getPaymentName($pdo,$paymentid);
$sql = "SELECT id FROM %bill% WHERE intguestpaid is null AND intguestid=?";
$result = CommonUtils::fetchSqlAll($pdo, $sql, array($cusid));
foreach($result as $aBill) {
$ok = self::payOrUnpay($pdo, $aBill["id"], 1,false,$paymentname);
if ($ok["status"] != "OK") {
$pdo->rollBack();
return $ok;
}
}
$pdo->commit();
return array("status" => "OK","cusid" => $cusid);
} catch (Exception $ex) {
$pdo->rollBack();
return array("status" => "ERROR","msg" => $ex->getMessage());
}
}
private function deleteCustomer($pdo,$id) {
try {
$sql = "SELECT count(id) as countid FROM %bill% WHERE intguestid=?";
$row = CommonUtils::getRowSqlObject($pdo, $sql, array($id));
if ($row->countid > 0) {
return array("status" => "ERROR","msg" => "Der Gast hat zugewiesene Rechnungen");
}
$pdo->beginTransaction();
$sql = "DELETE FROM %groupcustomer% WHERE customerid=?";
CommonUtils::execSql($pdo, $sql, array($id));
$sql = "DELETE FROM %vacations% WHERE customerid=?";
CommonUtils::execSql($pdo, $sql, array($id));
$sql = "DELETE FROM %customers% WHERE id=?";
CommonUtils::execSql($pdo, $sql, array($id));
$pdo->commit();
return array("status" => "OK");
} catch (Exception $e) {
$pdo->rollBack();
return array("status" => "ERROR","msg" => $e->getMessage());
}
}
private function getCustomersForReserv($pdo,$search) {
if ($search == '') {
return array("status" => "OK","msg" => array());
}
$s = '%' . $search . '%';
try {
$allcustomers = array();
$sql = "SELECT id,name,email,address,remark,phone,mobil FROM %customers% WHERE (name like ?) OR (mobil like ?) OR (phone like ?) ORDER BY name";
$result = CommonUtils::fetchSqlAll($pdo, $sql, array($s,$s,$s));
foreach($result as $aCustomer) {
$id = $aCustomer["id"];
$name = $aCustomer["name"];
$email = $aCustomer["email"];
$phone = $aCustomer["phone"];
$mobil = $aCustomer["mobil"];
$finalPhone = "";
$summary = $aCustomer["name"];
if ($phone != "") {
$summary .= " - " . $phone;
$finalPhone = $phone;
}
if ($mobil != "") {
$summary .= " - " . $mobil;
$finalPhone = $mobil;
}
if ($email != "") {
$summary .= " - " . $email;
}
$allcustomers[] = array("summary" => $summary,"id" => $id,"name" => $name,"email" => $email,"phone" => $finalPhone);
}
return array("status" => "OK","msg" => $allcustomers);
} catch (Exception $ex) {
return array("status" => "ERROR","msg" => $ex->getMessage());
}
}
private static function isCustomerPresent($pdo,$cusid,$date) {
if ($date == '') {
return true;
}
$sql = "SELECT count(id) as countid FROM %vacations% WHERE customerid=? AND (checkin is not null OR checkout is not null) AND (IFNULL(checkin,'$date') <= ? AND IFNULL(checkout,'$date') >= ?)";
$row = CommonUtils::getRowSqlObject($pdo, $sql, array($cusid,$date,$date));
if ($row->countid == 0) {
return false;
} else {
return true;
}
}
private function getCustomers($pdo,$search,$date,$onlyOpenBills) {
$s = '%' . $search . '%';
try {
$allcustomers = array();
$sql = "SELECT %customers%.id as id,name,email,address,remark,phone,mobil,www,IFNULL(hello,'') as hello,IFNULL(regards,'') as regards,DATE_FORMAT(created,'%e %b %Y - %k:%i') as created,DATE_FORMAT(lastmodified,'%e %b %Y - %k:%i') as lastmodified FROM %customers% WHERE (name like ?) OR (email like ?) ORDER BY name";
$result = CommonUtils::fetchSqlAll($pdo, $sql, array($s,$s));
foreach ($result as $aCustomer) {
if (!self::isCustomerPresent($pdo,$aCustomer["id"],$date)) {
continue;
}
$sql = "SELECT groupid,name FROM %groupcustomer%,%groups% WHERE groupid=%groups%.id AND customerid=? ORDER BY name";
$assgroups = CommonUtils::fetchSqlAll($pdo, $sql, array($aCustomer["id"]));
if ($onlyOpenBills == 1) {
$sql = "SELECT count(id) as countid FROM %bill% WHERE intguestid=? AND intguestpaid is null";
$row = CommonUtils::getRowSqlObject($pdo, $sql, array($aCustomer["id"]));
if ($row->countid == 0) {
continue;
}
}
$sql = "SELECT SUM(brutto) as openbillsum FROM %bill% WHERE intguestid=? AND intguestpaid is null";
$row = CommonUtils::getRowSqlObject($pdo, $sql, array($aCustomer["id"]));
$aCust = array("id" => $aCustomer["id"],
"name" => $aCustomer["name"],
"email" => $aCustomer["email"],
"address" => $aCustomer["address"],
"remark" => $aCustomer["remark"],
"phone" => $aCustomer["phone"],
"mobil" => $aCustomer["mobil"],
"www" => $aCustomer["www"],
"hello" => $aCustomer["hello"],
"regards" => $aCustomer["regards"],
"created" => $aCustomer["created"],
"lastmodified" => $aCustomer["lastmodified"],
"groups" => $assgroups,
"openbillsum" => $row->openbillsum
);
$allcustomers[] = $aCust;
}
return array("status" => "OK","msg" => $allcustomers);
} catch (Exception $ex) {
return array("status" => "ERROR","msg" => $ex->getMessage());
}
}
private function getVacations($pdo,$cusid) {
$sql = "SELECT id,IFNULL(checkin,'') as checkin,IFNULL(checkout,'') as checkout,IFNULL(room,'') as room,IFNULL(remark,'') as remark FROM %vacations% WHERE customerid=?";
$result = CommonUtils::fetchSqlAll($pdo, $sql, array($cusid));
return array("status" => "OK","msg" => array("vacations" => $result,"cusid" => $cusid));
}
private function getBills($pdo,$cusid) {
$sql = "SELECT id,billdate,brutto,IFNULL(guestinfo,'') as guestinfo,IFNULL(intguestpaid,'0') as paid FROM %bill% WHERE intguestid=?";
$result = CommonUtils::fetchSqlAll($pdo, $sql, array($cusid));
return array("status" => "OK","msg" => array("bills" => $result,"cusid" => $cusid));
}
private function getGroups($pdo,$search) {
$s = '%' . $search . '%';
try {
$sql = "SELECT id,name,remark,DATE_FORMAT(created,'%e %b %Y - %k:%i') as created FROM %groups% WHERE name like ? ORDER BY name";
$resultFiltered = CommonUtils::fetchSqlAll($pdo, $sql, array($s));
$resultFoundGroups = array();
foreach ($resultFiltered as $aFilteredGroup) {
$groupid = $aFilteredGroup["id"];
$sql = "SELECT %customers%.name as name from %customers%,%groupcustomer% WHERE %groupcustomer%.groupid=? AND %groupcustomer%.customerid=%customers%.id ORDER by name";
$customersInGroup = CommonUtils::fetchSqlAll($pdo, $sql, array($groupid));
$resultFoundGroups[] = array(
"id" => $groupid,
"name" => $aFilteredGroup["name"],
"remark" => $aFilteredGroup["remark"],
"created" => $aFilteredGroup["created"],
"customers" => $customersInGroup);
}
$sql = "SELECT id,name FROM %groups% ORDER BY name";
$resultAll = CommonUtils::fetchSqlAll($pdo, $sql, array($s));
$result = array("filtered" => $resultFoundGroups,"all" => $resultAll);
return array("status" => "OK","msg" => $result);
} catch (Exception $ex) {
return array("status" => "ERROR","msg" => $ex->getMessage());
}
}
private function changeGroup($pdo,$id,$name,$remark) {
try {
$sql = "UPDATE %groups% SET name=?,remark=? WHERE id=?";
CommonUtils::execSql($pdo, $sql, array($name,$remark,$id));
return array("status" => "OK");
} catch (Exception $e) {
return array("status" => "ERROR","msg" => $e->getMessage());
}
}
private function deleteGroup($pdo,$id) {
try {
$sql = "DELETE FROM %groupcustomer% WHERE groupid=?";
CommonUtils::execSql($pdo, $sql, array($id));
$sql = "DELETE FROM %groups% WHERE id=?";
CommonUtils::execSql($pdo, $sql, array($id));
return array("status" => "OK");
} catch (Exception $e) {
return array("status" => "ERROR","msg" => $e->getMessage());
}
}
private function emailGroup($pdo,$grpid,$subject,$bcc,$text) {
$sql = "SELECT %customers%.name as name,IFNULL(%customers%.hello,'') as hello,IFNULL(%customers%.regards,'') as regards ,%customers%.email as email from %customers%,%groupcustomer% WHERE %groupcustomer%.groupid=? AND %groupcustomer%.customerid=%customers%.id ORDER by name";
$customersInGroup = CommonUtils::fetchSqlAll($pdo, $sql, array($grpid));
$emails = array();
foreach ($customersInGroup as $aCustomer) {
$email = $aCustomer["email"];
if (!is_null($email)) {
$email = trim($email);
if ($email != '') {
$emails[] = array("email" => $email,"hello" => $aCustomer["hello"],"regards" => $aCustomer["regards"],"name" => $aCustomer["name"]);
}
}
}
$ok = true;
foreach($emails as $anEmailEntry) {
$anEmail = $anEmailEntry["email"];
$name = $anEmailEntry["name"];
$hello = $anEmailEntry["hello"];
$regards = $anEmailEntry["regards"];
$textToSend = str_replace("{NAME}",$name,$text);
$textToSend = str_replace("{ANREDE}",$hello,$textToSend);
$textToSend = str_replace("{GRUSS}",$regards,$textToSend);
if (!Emailer::sendEmail($pdo, $textToSend, $anEmail, $subject,$bcc)) {
$ok = false;
}
}
if ($ok) {
return array("status" => "OK");
} else {
return array("status" => "ERROR","msg" => 'Not all emails could be sent');
}
}
public static function exportLog($pdo,$startDate = null, $endDate = null) {
header("Content-type: text/x-csv");
header("Content-Disposition: attachment; filename=Gastbezahlungen.csv");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
header("Expires: 0");
echo("Datum; Gast-ID; Gastname; Bon-ID; Aktion; Benutzer-ID; Benutzername; Stornobemerkung oder Zahlungsweg\n");
$sql = "SELECT %customerlog%.date as date,CASE WHEN action=0 THEN 'Bezahlung storniert' WHEN action=1 THEN 'bezahlt' ELSE 'undefiniert' END as action,";
$sql .= " %customerlog%.billid as billid,%customerlog%.remark as remark, userid, username, customerid, %user%.username as username, %customers%.name as customername ";
$sql .= " FROM %customerlog%,%user%,%customers% ";
$sql .= " WHERE (userid=%user%.id AND customerid=%customers%.id) ";
$where = '';
if (is_null($startDate) && (!is_null($endDate))) {
$where = " AND (date <= '$endDate') ";
} else if (!is_null($startDate) && (!is_null($endDate))) {
$where = " AND (date <= '$endDate') AND (date >= '$startDate') ";
}
$sql .= $where;
$result = CommonUtils::fetchSqlAll($pdo, $sql, null);
foreach($result as $aLog) {
echo $aLog["date"] . ";";
echo $aLog["customerid"] . ";";
echo self::quoteForCsv($aLog["customername"]) . ";";
echo $aLog["billid"] . ";";
echo $aLog["action"] . ";";
echo $aLog["userid"] . ";";
echo self::quoteForCsv($aLog["username"]) . ";";
echo self::quoteForCsv($aLog["remark"]) . ";";
echo "\r\n";
}
}
public static function quoteForCsv($txt) {
$txt = str_replace("\"","\"\"",$txt);
return '"' . $txt . '"';
}
private function getPaymentsForGuest($pdo) {
if(session_id() == '') {
session_start();
}
$where = " WHERE (id <> 7) AND (id <> 8)";
$lang = $_SESSION['language'];
$sql = "SELECT id,name FROM %payment% $where";
if ($lang == 1) {
$sql = "SELECT id,name_en as name FROM %payment% $where";
} else if ($lang == 2) {
$sql = "SELECT id,name_esp as name FROM %payment% $where";
}
$result = CommonUtils::fetchSqlAll($pdo, $sql, null);
return array("status" => "OK","msg" => $result);
}
private static function getPaymentName ($pdo,$paymentid) {
if(session_id() == '') {
session_start();
}
$lang = $_SESSION['language'];
$sql = "SELECT id,name FROM %payment% WHERE id=?";
if ($lang == 1) {
$sql = "SELECT id,name_en as name FROM %payment% WHERE id=?";
} else if ($lang == 2) {
$sql = "SELECT id,name_esp as name FROM %payment% WHERE id=?";
}
$row = CommonUtils::getRowSqlObject($pdo, $sql, array($paymentid));
return $row->name;
}
}