* @copyright Copyright (c) 202 ecommerce 2014 * @license Commercial license * * Support */ if (!defined('_PS_VERSION_')) { die(header('HTTP/1.0 404 Not Found')); } require_once _PS_MODULE_DIR_.'totloyaltyadvanced/LoyaltyStateModuleAdvanced.php'; require_once _PS_MODULE_DIR_.'totloyaltyadvanced/models/LoyaltyAdvanced.php'; require_once _PS_MODULE_DIR_.'totloyaltyadvanced/classes/TotLoyalty.php'; class TotLoyaltyAdvancedAdminController extends ModuleAdminController { public function __construct() { $this->bootstrap = true; // add my css for cient $this->context = Context::getContext(); $this->className = 'TotLoyalty'; parent::__construct(); $this->identifier = 'id_loyalty'; $this->context->controller->addCSS(_PS_MODULE_DIR_.'totloyaltyadvanced/views/css/banner.css'); $this->addRowAction('view'); $this->show_toolbar_options = true; $this->table = 'totloyalty'; $this->_select = ' c.`firstname`, c.`lastname`, SUM(IF(a.`id_loyalty_state` = '.(int)LoyaltyStateModuleAdvanced::getValidationId().', a.points, 0)) AS conf, SUM(IF(a.`id_loyalty_state` = '.(int)LoyaltyStateModuleAdvanced::getDefaultId().', a.points, 0)) AS wait, gl.`name` AS civilite, c.`email` '; $this->_join = ' INNER JOIN `'._DB_PREFIX_.'customer` AS c ON c.`id_customer` = a.`id_customer` LEFT OUTER JOIN `'._DB_PREFIX_.'orders` AS o ON o.`id_order` = a.`id_order` '.Shop::addSqlRestriction(false, 'o').' LEFT OUTER JOIN `'._DB_PREFIX_.'gender_lang` AS gl ON gl.`id_gender` = c.`id_gender` AND gl.`id_lang` = "'.$this->context->cookie->id_lang.'" '; $this->_group = 'GROUP BY c.`id_customer`'; $this->_defaultOrderBy = 'conf'; $this->_defaultOrderWay = 'DESC'; $this->fields_list['civilite'] = array( 'title' => $this->module->l('Gender', 'TotLoyaltyAdvancedAdmin'), 'align' => 'center', ); $this->fields_list['firstname'] = array( 'title' => $this->module->l('Firstname', 'TotLoyaltyAdvancedAdmin'), 'align' => 'center', ); $this->fields_list['lastname'] = array( 'title' => $this->module->l('Lastname', 'TotLoyaltyAdvancedAdmin'), 'align' => 'center', ); $this->fields_list['email'] = array( 'title' => $this->module->l('Email', 'TotLoyaltyAdvancedAdmin'), 'align' => 'center', ); $this->fields_list['conf'] = array( 'title' => $this->module->l('confirmed', 'TotLoyaltyAdvancedAdmin'), 'align' => 'center', ); $this->fields_list['wait'] = array( 'title' => $this->module->l('pending', 'TotLoyaltyAdvancedAdmin'), 'align' => 'center', ); } public function processSave() { parent::processSave(); } public function renderView() { $loyalties = $this->getLoyaltiesById(Tools::getValue('id_loyalty')); $available_pts = 0; $valid_state = LoyaltyStateModuleAdvanced::getValidationId(); $default_state = LoyaltyStateModuleAdvanced::getDefaultId(); foreach ($loyalties as $loyalty) { if ($loyalty['id_loyalty_state'] == $valid_state) { $available_pts += (int)$loyalty['points']; } } $this->context->smarty->assign('loyalties', $loyalties); $this->context->smarty->assign('available_pts', ($available_pts > 0 ? $available_pts : 0)); $l = new Link(); $this->context->smarty->assign('valid_state', $valid_state); $this->context->smarty->assign('default_state', $default_state); $this->context->smarty->assign('linkOrder', $l->getAdminLink('AdminOrders')); $this->context->smarty->assign('linkBack', $l->getAdminLink('TotLoyaltyAdvancedAdmin')); $this->context->smarty->assign('linkEdit', $l->getAdminLink('TotLoyaltyAdvancedAdmin').'&updatetotloyalty&id_loyalty='); $this->context->smarty->assign('linkDelete', $l->getAdminLink('TotLoyaltyAdvancedAdmin').'&deletetotloyalty&id_loyalty='); $this->context->smarty->assign('linkAdd', $l->getAdminLink('TotLoyaltyAdvancedAdmin').'&addtotloyalty'); $this->context->smarty->assign('module_path', $this->module->getPathUri()); $this->template = 'Admin.tpl'; } public function renderForm() { $this->_postProcess(); if (empty($this->toolbar_title)) { $this->initToolbarTitle(); } if (Tools::getIsset('addtotloyalty') || !Tools::getIsset('updatetotloyalty')) { $legend_title = $this->module->l('Add loyalty', 'TotLoyaltyAdvancedAdmin'); } else { $legend_title = $this->module->l('Edit loyalty', 'TotLoyaltyAdvancedAdmin'); } if (Tools::isSubmit('addtotloyalty') && Tools::getValue('id_customer')) { $sql = 'SELECT firstname, lastname FROM `'._DB_PREFIX_.'customer` WHERE id_customer = '.pSQL(Tools::getValue('id_customer')); $customer = Db::getInstance()->getRow($sql); } $helper = new HelperForm(); $this->setHelperDisplay($helper); $valid = LoyaltyStateModuleAdvanced::getValidationId(); $this->fields_form = array( 'legend' => array( 'title' => $legend_title, 'image' => '/modules/totloyaltyadvanced/logo.gif', ), 'submit' => array( 'name' => 'submitAddLoyalty', 'title' => $this->module->l('Save', 'TotLoyaltyAdvancedAdmin'), 'class' => (version_compare(_PS_VERSION_, '1.6', '<') ? 'button' : 'btn btn-default pull-right'), ), 'input' => array( array( 'type' => (Tools::getIsset('addtotloyalty') || !Tools::getIsset('updatetotloyalty') ? 'text' : 'hidden'), 'label' => $this->module->l('Customer:', 'TotLoyaltyAdvancedAdmin'), 'name' => 'customer_name', 'default_value' => (Tools::getValue('id_customer') && isset($customer)) ? $customer['firstname'].' '.$customer['lastname'] : '', 'id' => 'customer_name', 'required' => true, 'autocomplete' => true, ), array( 'type' => 'text', 'label' => $this->module->l('Points:', 'TotLoyaltyAdvancedAdmin'), 'name' => 'points', 'required' => true, 'desc' => $this->module->l('You can only enter positive numbers, example : 17 or 23', 'TotLoyaltyAdvancedAdmin'), ), array( 'type' => 'hidden', 'name' => 'id_loyalty_state', 'required' => true, 'default_value' => $valid, ), array( 'type' => 'hidden', 'name' => 'id_customer', 'id' => 'id_customer', 'default_value' => Tools::getValue('id_customer') ? Tools::getValue('id_customer') : '', 'required' => true, ), ), ); $this->context->controller->addJS(_PS_JS_DIR_.'/jquery/plugins/autocomplete/jquery.autocomplete.js', 'all'); $this->context->controller->addCSS(_PS_JS_DIR_.'/jquery/plugins/autocomplete/jquery.autocomplete.css'); $this->context->smarty->assign('linkAjax', '../modules/totloyaltyadvanced/ajax/ajaxlistcustomer.php'); $this->context->smarty->assign('error_msg', $this->module->l('You can not enter a negative number', 'TotLoyaltyAdvancedAdmin')); $customer_ajax = $this->context->smarty->fetch(dirname(__FILE__).'/../../views/templates/admin/loyaltycustomerajax.tpl'); return parent::renderForm().$customer_ajax; } public function _postProcess() { if (Tools::isSubmit('deletetotloyalty')) { $l = new Link(); $sql = 'DELETE FROM `'._DB_PREFIX_.'loyalty` WHERE id_loyalty = '.pSQL(Tools::getValue('id_loyalty')); Db::getInstance()->execute($sql); } } private function getLoyaltiesById($id) { $sql = ' SELECT *, gl.name AS gender, l.`date_upd`, l.`id_loyalty_state`, l.`id_customer`, lsl.`name` AS lang_state FROM `'._DB_PREFIX_.'totloyalty` AS l INNER JOIN `'._DB_PREFIX_.'customer` AS c ON c.`id_customer` = l.`id_customer` INNER JOIN`'._DB_PREFIX_.'totloyalty_state_lang` AS lsl ON lsl.`id_loyalty_state` = l.`id_loyalty_state` AND lsl.`id_lang` = \''.(int)$this->context->cookie->id_lang.'\' LEFT OUTER JOIN `'._DB_PREFIX_.'orders` AS o ON o.`id_order` = l.`id_order` '.Shop::addSqlRestriction(false, 'o').' LEFT OUTER JOIN `'._DB_PREFIX_.'gender_lang` AS gl ON gl.`id_gender` = c.`id_gender` AND gl.`id_lang` = \''.(int)$this->context->cookie->id_lang.'\' WHERE l.`id_customer` = (SELECT `id_customer` FROM `'._DB_PREFIX_.'totloyalty` WHERE `id_loyalty` = '.(int)$id.') ORDER BY l.`date_upd` DESC '; $results = Db::getInstance()->executeS($sql); foreach ($results as $custom) { $this->id_customer = $custom['id_customer']; $this->context->smarty->assign('customer', $custom['firstname'].' '.$custom['lastname']); $this->context->smarty->assign('id_customer', $custom['id_customer']); $this->context->smarty->assign('gender', isset($custom['gender']) ? '' : ''); } return $results; } private function getCustomers() { $temp = array(); $customers = Customer::getCustomers(); foreach ($customers as $key => $value) { $temp[$key]['names'] = $value['firstname'].' '.$value['lastname']; $temp[$key]['id_customer'] = $value['id_customer']; } return $temp; } }