chocolatdemariage/www/modules/tntofficiel/controllers/admin/AdminTNTOfficielController.php
Preprod mutu c7ca03cf57 tnt
2017-09-19 16:48:02 +02:00

257 lines
9.2 KiB
PHP

<?php
/**
* TNT OFFICIAL MODULE FOR PRESTASHOP.
*
* @author GFI Informatique <www.gfi.fr>
* @copyright 2016-2017 GFI Informatique, 2016-2017 TNT
* @license https://opensource.org/licenses/MIT MIT License
*/
require_once _PS_MODULE_DIR_.'tntofficiel/tntofficiel.php';
require_once _PS_MODULE_DIR_.'tntofficiel/libraries/TNTOfficiel_Debug.php';
require_once _PS_MODULE_DIR_.'tntofficiel/libraries/TNTOfficiel_PasswordManager.php';
require_once _PS_MODULE_DIR_.'tntofficiel/libraries/helper/TNTOfficiel_ShipmentHelper.php';
require_once _PS_MODULE_DIR_.'tntofficiel/libraries/pdf/manifest/TNTOfficiel_ManifestPDF.php';
require_once _PS_MODULE_DIR_.'tntofficiel/libraries/pdf/manifest/TNTOfficiel_ManifestPDFGenerator.php';
require_once _PS_MODULE_DIR_.'tntofficiel/libraries/pdf/manifest/HTMLTemplateTNTOfficielManifest.php';
require_once _PS_MODULE_DIR_.'tntofficiel/libraries/pdf/manifest/TNTOfficiel_ManifestPDFCreator.php';
require_once _PS_MODULE_DIR_.'tntofficiel/libraries/exceptions/TNTOfficiel_MaxPackageWeightException.php';
// <TABNAME>Controller
class AdminTNTOfficielController extends ModuleAdminController
{
/**
* Constructor.
*/
public function __construct()
{
TNTOfficiel_Debug::log(array('msg' => '>>', 'file' => __FILE__, 'line' => __LINE__));
// _PS_MODULE_DIR_.$this->module->name.'/views/templates/admin/'
// default : 'content.tpl';
$this->template = 'AdminTNTOfficiel.tpl';
parent::__construct();
}
/**
* Add css files.
*/
public function setMedia()
{
TNTOfficiel_Debug::log(array('msg' => '>>', 'file' => __FILE__, 'line' => __LINE__));
$this->addCSS(_MODULE_DIR_.$this->module->name.'/views/css/AdminTNTOfficiel.css', 'all');
$this->addCSS(_MODULE_DIR_.$this->module->name.'/views/css/style.css');
parent::setMedia();
}
/**
* {@inheritdoc}
*/
public function createTemplate($tpl_name)
{
TNTOfficiel_Debug::log(array('msg' => '>>', 'file' => __FILE__, 'line' => __LINE__));
$this->context->smarty->assign(array(
'username' => Configuration::get('TNT_CARRIER_USERNAME'),
'account' => Configuration::get('TNT_CARRIER_ACCOUNT'),
'password' => TNTOfficiel_PasswordManager::getHash(),
'middlewareUrl' => Configuration::get('TNT_CARRIER_MIDDLEWARE_SHORT_URL'),
));
if (file_exists($this->getTemplatePath().$tpl_name) && $this->viewAccess()) {
return $this->context->smarty->createTemplate($this->getTemplatePath().$tpl_name, $this->context->smarty);
}
return parent::createTemplate($tpl_name);
}
/**
* Generate the manifest for an order (download).
*/
public function processGetManifest()
{
TNTOfficiel_Debug::log(array('msg' => '>>', 'file' => __FILE__, 'line' => __LINE__));
$objManifestPDF = new TNTOfficiel_ManifestPDFCreator();
$intOrderID = (int)Tools::getValue('id_order');
$arrOrderIDList = array($intOrderID);
$objManifestPDF->createManifest($arrOrderIDList);
// We want to be sure that displaying PDF is the last thing this controller will do.
exit;
}
/**
* Downloads an archive containing all the logs files.
* /_admin/index.php?controller=AdminTNTOfficiel&action=downloadLogs
*/
public function processDownloadLogs()
{
TNTOfficiel_Debug::log(array('msg' => '>>', 'file' => __FILE__, 'line' => __LINE__));
$strLogPath = _PS_MODULE_DIR_.TNTOfficiel::MODULE_NAME.'/'.TNTOfficiel::LOG_DIR;
$zipName = 'logs.zip';
// Remove Existing.
if (file_exists($strLogPath.$zipName)) {
unlink($strLogPath.$zipName);
}
// Create Zip file.
TNTOfficiel_Logger::getZip($strLogPath.$zipName);
// Download.
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipName);
header('Content-Length: '.filesize($strLogPath.$zipName));
// Get Content.
readfile($strLogPath.$zipName);
// We want to be sure that displaying PDF is the last thing this controller will do.
exit;
}
/**
* Add a parcel.
*
* @return array
*/
public function displayAjaxAddParcel()
{
TNTOfficiel_Debug::log(array('msg' => '>>', 'file' => __FILE__, 'line' => __LINE__));
$fltWeight = (float)Tools::getValue('weight');
$intOderID = (int)Tools::getValue('orderId');
$arrResult = array();
try {
$arrResult['parcel'] = TNTOfficiel_ParcelsHelper::getInstance()->addParcel($intOderID, $fltWeight, false);
$arrResult['result'] = true;
} catch (TNTOfficiel_MaxPackageWeightException $objException) {
$arrResult['result'] = false;
$arrResult['error'] = $objException->getMessage();
} catch (Exception $objException) {
$objFileLogger = new FileLogger();
$objFileLogger->setFilename(_PS_ROOT_DIR_.'/log/'.date('Ymd').'_tnt_exception.log');
$objFileLogger->logError($objException->getMessage());
$arrResult['result'] = false;
}
echo Tools::jsonEncode($arrResult);
return true;
}
/**
* Remove a parcel.
*
* @return array
*/
public function displayAjaxRemoveParcel()
{
TNTOfficiel_Debug::log(array('msg' => '>>', 'file' => __FILE__, 'line' => __LINE__));
$intParcelID = (int)Tools::getValue('parcelId');
$arrResult = array();
try {
$arrResult['result'] = TNTOfficiel_ParcelsHelper::getInstance()->removeParcel($intParcelID);
} catch (Exception $objException) {
$objFileLogger = new FileLogger();
$objFileLogger->setFilename(_PS_ROOT_DIR_.'/log/'.date('Ymd').'_tnt_exception.log');
$objFileLogger->logError($objException->getMessage());
$arrResult['result'] = false;
}
echo Tools::jsonEncode($arrResult);
return true;
}
/**
* Update a parcel.
*
* @return array
*/
public function displayAjaxUpdateParcel()
{
TNTOfficiel_Debug::log(array('msg' => '>>', 'file' => __FILE__, 'line' => __LINE__));
$intParcelID = (int)Tools::getValue('parcelId');
$fltWeight = (float)Tools::getValue('weight');
$intOderID = (int)Tools::getValue('orderId');
try {
$arrResult = TNTOfficiel_ParcelsHelper::getInstance()->updateParcel($intParcelID, $fltWeight, $intOderID);
} catch (TNTOfficiel_MaxPackageWeightException $objException) {
$arrResult['result'] = false;
$arrResult['error'] = $objException->getMessage();
} catch (Exception $objException) {
$objFileLogger = new FileLogger();
$objFileLogger->setFilename(_PS_ROOT_DIR_.'/log/'.date('Ymd').'_tnt_exception.log');
$objFileLogger->logError($objException->getMessage());
$arrResult['result'] = false;
}
echo Tools::jsonEncode($arrResult);
return true;
}
/**
* Checks the shipping.
*/
public function displayAjaxCheckShippingDateValid()
{
TNTOfficiel_Debug::log(array('msg' => '>>', 'file' => __FILE__, 'line' => __LINE__));
$intOrderID = (int)Tools::getValue('orderId');
$strShippingDate = pSQL(Tools::getValue('shippingDate'));
$arrPostDate = explode('/', $strShippingDate);
$strFormatedShippingDate = $arrPostDate[2].'-'.$arrPostDate[1].'-'.$arrPostDate[0];
$objTNTShipmentHelper = TNTOfficiel_ShipmentHelper::getInstance();
$arrMDWShippingDate = $objTNTShipmentHelper->checkSaveShipmentDate($intOrderID, $strFormatedShippingDate);
if (!is_array($arrMDWShippingDate)) {
echo Tools::jsonEncode(array('error' => $arrMDWShippingDate));
return false;
}
if (array_key_exists('error', $arrMDWShippingDate)) {
if ($arrMDWShippingDate['error'] == 1) {
echo Tools::jsonEncode(array('error' => $arrMDWShippingDate['message']));
return false;
} else {
$arrMDWShippingDate['shippingDate'] = $strFormatedShippingDate;
/* $tntDate['dueDate'] = ""; */
}
}
$arrTNTOrder = TNTOfficiel_OrderHelper::getInstance()->getOrderData($intOrderID);
Db::getInstance()->update(
'tntofficiel_order',
array(
'shipping_date' => pSQL($arrMDWShippingDate['shippingDate']),
'due_date' => pSQL($arrMDWShippingDate['dueDate'])
),
'id_tntofficiel_order = '.(int)$arrTNTOrder['id_tntofficiel_order']
);
if (!$arrMDWShippingDate['dueDate']) {
$arrResult = array();
} else {
$tempDate = explode('-', $arrMDWShippingDate['dueDate']);
$arrResult = array('dueDate' => $tempDate[2].'/'.$tempDate[1].'/'.$tempDate[0]);
}
if (array_key_exists('message', $arrMDWShippingDate)) {
$arrResult['mdwMessage'] = $arrMDWShippingDate['message'];
}
echo Tools::jsonEncode($arrResult);
return true;
}
}