hotel_commerce/modules/hotelreservationsystem/controllers/admin/AdminAssignHotelFeatures.php
2023-06-26 13:09:26 +05:30

229 lines
8.7 KiB
PHP

<?php
/**
* 2010-2020 Webkul.
*
* NOTICE OF LICENSE
*
* All right is reserved,
* Please go through this link for complete license : https://store.webkul.com/license.html
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future. If you wish to customize this module for your
* needs please refer to https://store.webkul.com/customisation-guidelines/ for more information.
*
* @author Webkul IN <support@webkul.com>
* @copyright 2010-2020 Webkul IN
* @license https://store.webkul.com/license.html
*/
class AdminAssignHotelFeaturesController extends ModuleAdminController
{
public function __construct()
{
$this->bootstrap = true;
$this->table = 'htl_branch_features';
$this->className = 'HotelBranchFeatures';
$this->identifier = 'id';
$this->context = Context::getContext();
// START send access query information to the admin controller
$this->access_select = ' SELECT a.`id` FROM '._DB_PREFIX_.'htl_branch_features a';
$this->access_join = ' INNER JOIN '._DB_PREFIX_.'htl_branch_info hbi ON (hbi.id = a.id_hotel)';
if ($acsHtls = HotelBranchInformation::getProfileAccessedHotels($this->context->employee->id_profile, 1, 1)) {
$this->access_where = ' WHERE hbi.id IN ('.implode(',', $acsHtls).')';
}
parent::__construct();
$this->_join .= 'LEFT JOIN `'._DB_PREFIX_.'htl_branch_info` hi ON (hi.`id` = a.`id_hotel`)';
$this->_join .= 'LEFT JOIN `'._DB_PREFIX_.'htl_branch_info_lang` hil
ON (hi.`id` = hil.`id` AND hil.id_lang = '.(int)$this->context->language->id.')';
$this->_join .= 'LEFT JOIN `'._DB_PREFIX_.'address` addr ON (addr.`id_hotel` = hi.`id`)';
$this->_join .= 'LEFT JOIN `'._DB_PREFIX_.'state` s ON (s.`id_state` = addr.`id_state`)';
$this->_join .= 'LEFT JOIN `'._DB_PREFIX_.'country_lang` cl ON (cl.`id_country` = addr.`id_country`
AND cl.`id_lang` = '.(int)$this->context->language->id.')';
$this->_select .= 'addr.`city` as htl_city, hi.`id` as htl_id, hil.`hotel_name` as htl_name,
s.`name` as `state_name`, cl.`name`';
$this->_group = 'GROUP BY a.`id_hotel`';
$this->fields_list = array(
'htl_id' => array(
'title' => $this->l('Hotel ID'),
'align' => 'center',
'filter_key' => 'hi!id',
),
'htl_name' => array(
'title' => $this->l('Hotel Name'),
'align' => 'center',
'filter_key' => 'hil!hotel_name',
),
'htl_city' => array(
'title' => $this->l('City'),
'align' => 'center',
'filter_key' => 'addr!city',
),
'state_name' => array(
'title' => $this->l('State'),
'align' => 'center',
'filter_key' => 's!name',
),
'name' => array(
'title' => $this->l('Country'),
'align' => 'center',
'filter_key' => 'cl!name',
),
'date_add' => array(
'title' => $this->l('Date Added'),
'align' => 'center',
'type' => 'datetime',
'filter_key' => 'a!date_add',
)
);
$this->bulk_actions = array(
'delete' => array(
'text' => $this->l('Delete selected'),
'icon' => 'icon-trash',
'confirm' => $this->l('Delete selected items?')
)
);
}
public function initToolbar()
{
parent::initToolbar();
$this->page_header_toolbar_btn['new_feature'] = array(
'href' => $this->context->link->getAdminLink('AdminHotelFeatures'),
'desc' => $this->l('Hotel Features'),
'imgclass' => 'back'
);
$this->page_header_toolbar_btn['assignfeatures'] = array(
'href' => self::$currentIndex.'&add'.$this->table.'&token='.$this->token,
'desc' => $this->l('Assign Features'),
'imgclass' => 'new'
);
}
public function renderList()
{
$this->addRowAction('edit');
$this->addRowAction('delete');
return parent::renderList();
}
public function renderForm()
{
$smartyVars = array();
if ($this->display == 'add') {
$objHotelFeatures = new HotelFeatures();
$featuresList = $objHotelFeatures->HotelAllCommonFeaturesArray();
$objBranchInfo = new HotelBranchInformation();
$unassignedFtrsHotels = $objBranchInfo->getUnassignedFeaturesHotelIds();
// filter hotels as per accessed hotels
$unassignedFtrsHotels = HotelBranchInformation::filterDataByHotelAccess(
$unassignedFtrsHotels,
$this->context->employee->id_profile,
1
);
$smartyVars['hotels'] = $unassignedFtrsHotels;
$smartyVars['features_list'] = $featuresList;
} elseif ($this->display == 'edit') {
$id = Tools::getValue('id');
$objBranchFeatures = new HotelBranchFeatures($id);
$smartyVars['edit'] = 1;
$objHotelFeatures = new HotelFeatures();
$objBranchInfo = new HotelBranchInformation();
$features_hotel = $objBranchInfo->getFeaturesOfHotelByHotelId($objBranchFeatures->id_hotel);
$featuresList = $objHotelFeatures->HotelBranchSelectedFeaturesArray($features_hotel);
$hotels = $objBranchInfo->hotelsNameAndId();
$smartyVars['hotel_id'] = $objBranchFeatures->id_hotel;
$smartyVars['hotels'] = $hotels;
$smartyVars['features_list'] = $featuresList;
}
$this->context->smarty->assign($smartyVars);
$this->fields_form = array(
'submit' => array(
'title' => $this->l('Save')
)
);
return parent::renderForm();
}
public function processSave()
{
if ($editId = Tools::getValue('edit_hotel_id')) {
$objBranchFeatures = new HotelBranchFeatures();
$objBranchFeatures->deleteBranchFeaturesByHotelId($editId);
}
if (!$hotelFeatures = Tools::getValue('hotel_fac')) {
$this->errors[] = $this->l('Please select at least one feature to assign to a hotel.');
}
if (!$idHotel = Tools::getValue('id_hotel')) {
$this->errors[] = $this->l('Please select a hotel first.');
}
if (!count($this->errors)) {
$objHotelFeatures = new HotelBranchFeatures();
if (!$objHotelFeatures->assignFeaturesToHotel($idHotel, $hotelFeatures)) {
$this->errors[] = $this->l('Some problem occure while assigning Features to the hotel.');
}
if (empty($this->errors)) {
if (Tools::isSubmit('submitAdd'.$this->table.'AndStay')) {
Tools::redirectAdmin(
self::$currentIndex.'&id='.(int)$idHotel.'&update'.$this->table.'&conf=3&token='.$this->token
);
} else {
Tools::redirectAdmin(self::$currentIndex.'&conf=4&token='.$this->token);
}
}
} else {
$this->display = 'add';
}
}
public function processDelete()
{
if (Validate::isLoadedObject($object = $this->loadObject())) {
$object = $this->loadObject();
if ($object->id) {
$objBranchFeatures = new HotelBranchFeatures();
$objBranchFeatures->deleteBranchFeaturesByHotelId($object->id_hotel);
}
} else {
$this->errors[] = $this->l('An error occurred while deleting the object.').'<b>'.$this->table.'</b> '.
$this->l('(cannot load object)');
}
parent::processDelete();
}
protected function processBulkDelete()
{
if (is_array($this->boxes) && !empty($this->boxes)) {
foreach ($this->boxes as $key => $value) {
$objBranchFeatures = new HotelBranchFeatures($value);
$objBranchFeatures->deleteBranchFeaturesByHotelId($objBranchFeatures->id_hotel);
}
parent::processBulkDelete();
} else {
$this->errors[] = $this->l('You must select at least one element to delete.');
}
}
public function setMedia()
{
parent::setMedia();
$this->addJs(_MODULE_DIR_.'hotelreservationsystem/views/js/HotelReservationAdmin.js');
$this->addCSS(_MODULE_DIR_.'hotelreservationsystem/views/css/HotelReservationAdmin.css');
}
}