Files
prestashop/modules/psshipping/controllers/front/GelProximityNotificationHandler.php
2026-04-09 18:31:51 +02:00

99 lines
3.4 KiB
PHP

<?php
/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License version 3.0
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
*/
use PrestaShop\Module\Psshipping\Domain\GelProximity\Models\PickupPoint;
class psshippingGelProximityNotificationHandlerModuleFrontController extends \ModuleFrontController
{
protected $validActions = ['setPickUpPointForCurrentCart'];
public function init()
{
$this->ajax = true;
$this->content_only = true;
$this->controller_type = 'module';
}
private function respondAndDie($message, $data, $response_code = 500)
{
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Content-Type: application/json');
http_response_code($response_code);
$response = [
'status' => $response_code,
'message' => $message,
'data' => $data,
];
echo json_encode($response, JSON_UNESCAPED_SLASHES);
exit;
}
public function setPickUpPointForCurrentCart()
{
$payload = Tools::getValue('payload');
/** @var array{
* pickupPointId: int,
* networkCode: string,
* code: string,
* address: string,
* description: string|null,
* city: string,
* zipCode: string,
* department: string|null,
* country: string
* } $pickupPoint */
$pickupPoint = json_decode($payload, true);
$pickupPoint = PickupPoint::fromArray($pickupPoint);
$pickupPoint->injectIntoCookies($this->context);
$template = $this->context->smarty->createTemplate(_PS_MODULE_DIR_ . 'psshipping/views/templates/hook/pickUpPointDetails.tpl');
$template->assign([
'btnText' => $this->trans('Change pick-up point', [], 'Modules.Psshipping.Admin'),
'detailsTitle' => $this->trans('Pick-up point selected:', [], 'Modules.Psshipping.Admin'),
'pickupPoint' => $pickupPoint->toArray(),
]);
return ['pickupsDetails' => $template->fetch()];
}
public function postProcess()
{
$action = Tools::getValue('action');
if (!in_array($action, $this->validActions, true)) {
$this->respondAndDie(
['unknown action'],
false,
400
);
} elseif ($action === 'setPickUpPointForCurrentCart') {
$this->respondAndDie(
false,
$this->setPickUpPointForCurrentCart(),
200
);
}
}
}