| Server IP : 202.61.199.114 / Your IP : 216.73.217.139 Web Server : nginx/1.22.1 System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64 User : web20 ( 1018) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/clients/client2/api.pacim.de/web/src/PaCIM/ |
Upload File : |
<?php
// Deny all except PaCIM App
if( !isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) || ( isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) && $_SERVER['HTTP_X_REQUESTED_WITH'] != 'com.pacim.sa' ) ) {
require_once("send_mail.php");
sendEmail(
'report@pacim.de',
'POSSIBLE ATTACK by ' . getIPAddress(),
content_mail( $_SERVER ),
TRUE
);
die('forbidden');
} /*else {
//header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
$formData = $_POST;
file_put_contents("/var/www/clients/client2/web18/web/src/PaCIM/test.txt", $formData['payment_date'] . ' ' . date('H:i:s'));
die($formData['payment_date'] . ' ' . date('H:i:s'));
}*/
require_once("includes/config.inc.php");
/**
* @var \Fusio\Engine\ConnectorInterface $connector
* @var \Fusio\Engine\ContextInterface $context
* @var \Fusio\Engine\RequestInterface $request
* @var \Fusio\Engine\Response\FactoryInterface $response
* @var \Fusio\Engine\ProcessorInterface $processor
* @var \Psr\Log\LoggerInterface $logger
* @var \Psr\SimpleCache\CacheInterface $cache
*/
use PSX\Http\Exception as StatusCode;
$connection = $connector->getConnection('PaCIM-PAS');
$formData = $_POST;
#$formData['payment_date'] = date( "Y-m-d", strtotime( $_POST['payment_date'] ));
#$formData['payment_date'] = "2022-04-05 15:45:22";
if( isset( $formData['action'] ) ) {
switch( $formData['action'] ) {
case "checkin":
$checkInControl = $connection->fetchAll('
SELECT
c.customer_id,
COUNT(b.booking_id) AS cars,
(SELECT COUNT(booking_id) FROM pacim_booking WHERE booking_checkin IS NOT NULL AND booking_invoice = b.booking_invoice) AS checked_cars,
COUNT(b.booking_id)-(SELECT COUNT(booking_id) FROM pacim_booking WHERE booking_checkin IS NOT NULL AND booking_invoice = b.booking_invoice) as unchecked_cars,
((SELECT FORMAT(SUM(payment_value), 2) AS payed FROM pacim_payments WHERE payment_invoice=d.invoice_id)/( (SELECT
FORMAT(SUM(
IF((product_id <= 2 AND (d.invoice_coupon = 2 OR invoice_pos_discount_type = 2)),
(invoice_pos_price*0.9*invoice_pos_quantity*1.19),
IF((product_id <= 2 AND (d.invoice_coupon = 1 OR invoice_pos_discount_type = 1)),
((invoice_pos_price*invoice_pos_quantity*1.19)-5),
(invoice_pos_price*invoice_pos_quantity*1.19)
))
), 0)
FROM pacim_invoice_pos
WHERE invoice_id=b.booking_invoice)/COUNT(b.booking_id)))-(SELECT COUNT(booking_id) FROM pacim_booking WHERE booking_checkin IS NOT NULL AND booking_invoice = b.booking_invoice) AS allowed_cars,
(SELECT FORMAT(SUM(payment_value), 2) AS payed FROM pacim_payments WHERE payment_invoice=d.invoice_id) AS price_payed,
(SELECT
FORMAT(SUM(
IF((product_id <= 2 AND (d.invoice_coupon = 2 OR invoice_pos_discount_type = 2)),
(invoice_pos_price*0.9*invoice_pos_quantity*1.19),
IF((product_id <= 2 AND (d.invoice_coupon = 1 OR invoice_pos_discount_type = 1)),
((invoice_pos_price*invoice_pos_quantity*1.19)-5),
(invoice_pos_price*invoice_pos_quantity*1.19)
))
), 2)
FROM pacim_invoice_pos
WHERE invoice_id=b.booking_invoice) AS price,
d.invoice_payment AS old_payment
FROM pacim_booking b
LEFT JOIN pacim_customer c ON c.customer_id = b.booking_customer
LEFT JOIN pacim_invoice d ON d.invoice_id = b.booking_invoice
LEFT JOIN pacim_events_info ei ON ei.event_title = booking_event
WHERE b.booking_invoice = (SELECT booking_invoice FROM pacim_booking WHERE booking_id=' . $formData['booking_id'] . ')
GROUP by b.booking_invoice
ORDER by b.booking_id DESC
')[0];
$checkInStatus = $connection->fetchColumn('
SELECT
booking_checkin
FROM pacim_booking
WHERE booking_id = ' . $formData['booking_id']
);
date_default_timezone_set('Europe/Berlin');
$dateTimeNow = date('Y-m-d H:i:s'); $updateMessage = false; $updateStatusShort = 'ok';
if( $checkInStatus == NULL ) {
if( $checkInControl['old_payment'] == 0 && $checkInControl['cars'] > 1 && ($checkInControl['price']-$checkInControl['price_payed']) > 0 && $checkInControl['allowed_cars'] < 0.9 ) {
$updateStatus = NULL;
$updateMessage = "Bitte erst das Kundenkonto ausgleichen!";
$updateStatusShort = "note";
} else {
$updateStatus = $dateTimeNow;
$updateStatusShort = "ok";
}
} else {
$updateStatus = NULL;
$updateStatusShort = "ok";
}
// nur in die DB schreiben, wenn Änderung Stattfindet
if( $checkInStatus !== $updateStatus ) {
$connection->update('pacim_booking', array(
'booking_checkin' => $updateStatus
), array(
'booking_id' => $formData['booking_id']
)
);
}
$updateResult = ($updateStatus === NULL ? "0000-00-00 00:00:00" : $updateStatus);
return $response->build(200, [], array(
'status' => $updateStatusShort,
'checkin' => $updateResult,
'message' => $updateMessage,
'checkin_year' => date('Y'),
'checkin_month' => date('m'),
'checkin_day' => date('d'),
'date_format' => date('d.m.Y', strtotime( $updateResult ) ) . ' um ' . date('H:i', strtotime( $updateResult ) ) . ' Uhr'
));
break;
case "favorite":
$checkFavorite = $connection->fetchColumn('
SELECT
COUNT(view_booking)
FROM pacim_view
WHERE view_booking = ' . $formData['invoice_id']
);
if( $checkFavorite <= 0 ) {
$connection->insert('pacim_view', array(
'view_booking' => $formData['invoice_id'],
'view_user' => 'nico',
'view_datetime' => date('Y-m-d H:i:s')
)
);
$favoriteStatus = 1;
} else {
$connection->delete('pacim_view', array(
'view_booking' => $formData['invoice_id']
)
);
$favoriteStatus = 0;
}
return $response->build(200, [], array(
'status' => 'ok',
'favorite' => $favoriteStatus
));
break;
case "editor":
$connection->update('pacim_' . $formData['module'], array(
$formData['module'] . '_' . $formData['key'] => $formData['content']
), array(
$formData['module'] . '_id' => $formData['id']
)
);
return $response->build(200, [], array(
'status' => 'ok',
$formData['key'] => $formData['content']
));
break;
case "payment":
$connection->insert('pacim_payments', array(
'payment_invoice' => $formData['payment_invoice'],
'payment_type' => $formData['payment_type'],
'payment_value' => $formData['payment_value'],
'payment_notice' => $formData['payment_notice'],
'payment_date' => $formData['payment_date'],
)
);
// Coupon, falls eingegeben
if( $formData['invoice_coupon'] ) {
$connection->update('pacim_invoice', array(
'invoice_coupon' => $formData['invoice_coupon']
), array(
'invoice_id' => $formData['payment_invoice']
)
);
}
$paymentControl = $connection->fetchAll('
SELECT
d.invoice_no,
c.customer_id,
COUNT(b.booking_id) AS cars,
(SELECT COUNT(booking_id) FROM pacim_booking WHERE booking_checkin IS NOT NULL AND booking_invoice = b.booking_invoice) AS checked_cars,
COUNT(b.booking_id)-(SELECT COUNT(booking_id) FROM pacim_booking WHERE booking_checkin IS NOT NULL AND booking_invoice = b.booking_invoice) as unchecked_cars,
((SELECT FORMAT(SUM(payment_value), 2) AS payed FROM pacim_payments WHERE payment_invoice=d.invoice_id)/( (SELECT
FORMAT(SUM(
IF((product_id <= 2 AND (d.invoice_coupon = 2 OR invoice_pos_discount_type = 2)),
(invoice_pos_price*0.9*invoice_pos_quantity*1.19),
IF((product_id <= 2 AND (d.invoice_coupon = 1 OR invoice_pos_discount_type = 1)),
((invoice_pos_price*invoice_pos_quantity*1.19)-5),
(invoice_pos_price*invoice_pos_quantity*1.19)
))
), 0)
FROM pacim_invoice_pos
WHERE invoice_id=b.booking_invoice)/COUNT(b.booking_id)))-(SELECT COUNT(booking_id) FROM pacim_booking WHERE booking_checkin IS NOT NULL AND booking_invoice = b.booking_invoice) AS allowed_cars,
(SELECT FORMAT(SUM(payment_value), 2) AS payed FROM pacim_payments WHERE payment_invoice=d.invoice_id) AS price_payed,
(SELECT
FORMAT(SUM(
IF((product_id <= 2 AND (d.invoice_coupon = 2 OR invoice_pos_discount_type = 2)),
(invoice_pos_price*0.9*invoice_pos_quantity*1.19),
IF((product_id <= 2 AND (d.invoice_coupon = 1 OR invoice_pos_discount_type = 1)),
((invoice_pos_price*invoice_pos_quantity*1.19)-5),
(invoice_pos_price*invoice_pos_quantity*1.19)
))
), 2)
FROM pacim_invoice_pos
WHERE invoice_id=b.booking_invoice) AS price,
d.invoice_payment AS old_payment
FROM pacim_booking b
LEFT JOIN pacim_customer c ON c.customer_id = b.booking_customer
LEFT JOIN pacim_invoice d ON d.invoice_id = b.booking_invoice
LEFT JOIN pacim_events_info ei ON ei.event_title = booking_event
WHERE b.booking_invoice = "' . $formData['payment_invoice'] . '"
GROUP by b.booking_invoice
ORDER by b.booking_id DESC
')[0];
if( ( $paymentControl['price']-$paymentControl['price_payed'] ) <= 0 ) {
// Zahlungsart und -Datum
$arrUpdatePayment['invoice_payment'] = $formData['payment_type'];
$arrUpdatePayment['invoice_paydate'] = $formData['payment_date'] . ' ' . date('H:i:s');
// Rechnungsnummer automatisch vergeben, falls es diese noch nicht gibt
if( $paymentControl['invoice_no'] == '' ) {
// Nächste Re-Nr. beziehen
$lastInvNo = $connection->fetchColumn("
SELECT
CAST(REGEXP_REPLACE(invoice_no, '[a-zA-Z]+', '') AS INT)+1 as re_no
FROM pacim_invoice
WHERE invoice_no LIKE 'PAS%' AND invoice_status != 3
ORDER by CAST(REGEXP_REPLACE(invoice_no, '[a-zA-Z]+', '') AS INT) DESC
");
// Rechnungs-Nr. und Datum
$arrUpdatePayment['invoice_no'] = 'PAS' . $lastInvNo;
$arrUpdatePayment['invoice_date'] = $formData['payment_date'];
}
// Zahlung markieren
$connection->update('pacim_invoice', $arrUpdatePayment, array(
'invoice_id' => $formData['payment_invoice']
)
);
}
return $response->build(200, [], array(
'status' => 'ok'
));
break;
default:
return $response->build(200, [], array(
'status' => 'error'
));
break;
}
} else {
return $response->build(200, [], array(
'status' => 'error'
));
}