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

317 lines
14 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 AdminHotelFeaturesController extends ModuleAdminController
{
public function __construct()
{
$this->bootstrap = true;
$this->table = 'htl_features';
$this->className = 'HotelFeatures';
$this->identifier = 'id';
$this->toolbar_title = $this->l('Manage Hotel Features');
parent::__construct();
$this->display = 'view';
}
public function initToolbar()
{
parent::initToolbar();
$this->page_header_toolbar_btn['addfeatures'] = array(
'href' => self::$currentIndex.'&add'.$this->table.'&token='.$this->token,
'desc' => $this->l('Add new Features'),
'imgclass' => 'new'
);
$this->page_header_toolbar_btn['new'] = array(
'href' => $this->context->link->getAdminLink('AdminAssignHotelFeatures'),
'desc' => $this->l('Assign Features To Hotel'),
);
}
public function renderView()
{
$objHotelFeatures = new HotelFeatures();
$featuresList = $objHotelFeatures->HotelAllCommonFeaturesArray();
$this->context->smarty->assign('features_list', $featuresList);
return parent::renderView();
}
public function renderForm()
{
$smartyVars = array();
//lang vars
$languages = Language::getLanguages(false);
$currentLangId = Configuration::get('PS_LANG_DEFAULT');
$currentLang = Language::getLanguage((int) $currentLangId);
$smartyVars['languages'] = $languages;
$smartyVars['currentLang'] = $currentLang;
$smartyVars['ps_img_dir'] = _PS_IMG_.'l/';
if ($id = Tools::getValue('id')) {
$smartyVars['edit'] = 1;
if (Validate::isLoadedObject($objFeatures = new HotelFeatures($id))) {
$featureInfo = (array) $objFeatures;
if ($childFeatures = $objFeatures->getChildFeaturesByParentFeatureId($id)) {
$featureInfo['child_features'] = array();
foreach ($childFeatures as $value) {
$objChildFeatures = new HotelFeatures($value['id']);
$featureInfo['child_features'][] = (array) $objChildFeatures;
}
}
$smartyVars['featureInfo'] = $featureInfo;
}
}
$this->context->smarty->assign($smartyVars);
Media::addJsDef(
array(
'currentLang' => $currentLang,
'languages' => $languages,
'img_dir_l' => _PS_IMG_.'l/',
)
);
$this->fields_form = array(
'submit' => array(
'title' => $this->l('Save')
)
);
return parent::renderForm();
}
public function postProcess()
{
if (Tools::isSubmit('submitHtlFeatures') || Tools::isSubmit('submitHtlFeaturesAndStay')) {
$parentFeatureId = Tools::getValue('id');
$pos = Tools::getValue('position');
$defaultLangId = Configuration::get('PS_LANG_DEFAULT');
$objDefaultLanguage = Language::getLanguage((int) $defaultLangId);
$languages = Language::getLanguages(false);
if (empty($pos) || !Validate::isUnsignedInt($pos)) {
$this->errors[] = $this->l('Position is Invalid.');
}
if (!trim(Tools::getValue('parent_ftr_name_'.$defaultLangId))) {
$this->errors[] = $this->l('Parent feature name is required at least in ').
$objDefaultLanguage['name'];
} elseif (!Validate::isGenericName(Tools::getValue('parent_ftr_name_'.$defaultLangId))) {
$this->errors[] = $this->l('Parent feature name is invalid.');
} else {
foreach ($languages as $lang) {
// validate non required fields
if (trim(Tools::getValue('parent_ftr_name_'.$lang['id_lang']))) {
if (!Validate::isGenericName(Tools::getValue('parent_ftr_name_'.$lang['id_lang']))) {
$this->errors[] = $this->l('Invalid parent feature name in ').$lang['name'];
}
}
}
}
if ($childFeaturesDefLang = Tools::getValue('child_features_'.$defaultLangId)) {
foreach ($childFeaturesDefLang as $kChild => $childftr) {
if (!trim($childftr)) {
$this->errors[] = $this->l('Child features name is required at least in ').
$objDefaultLanguage['name'];
} elseif (!Validate::isGenericName($childftr)) {
$this->errors[] = $this->l('Child features name is invalid : ').$childftr;
} else {
foreach ($languages as $lang) {
if ($childFtrLang = Tools::getValue('child_features_'.$lang['id_lang'])) {
if (!Validate::isGenericName($childFtrLang[$kChild])) {
$this->errors[] = $this->l('Invalid child feature name in ').$lang['name'].
' : '.$childFtrLang[$kChild];
}
}
}
}
}
if (!count($this->errors)) {
}
} else {
$this->errors[] = $this->l('Please add atleast one Child features.');
}
foreach ($languages as $lang) {
if (!trim(Tools::getValue('parent_ftr_name_'.$lang['id_lang']))) {
$objHotelFeatures->name[$lang['id_lang']] = Tools::getValue(
'parent_ftr_name_'.$defaultLangId
);
} else {
$objHotelFeatures->name[$lang['id_lang']] = Tools::getValue(
'parent_ftr_name_'.$lang['id_lang']
);
}
}
if (!count($this->errors)) {
if (isset($parentFeatureId) && $parentFeatureId) {
$objHotelFeatures = new HotelFeatures($parentFeatureId);
$childFeatureIds = Tools::getValue('child_feature_id');
foreach ($languages as $lang) {
if (!trim(Tools::getValue('parent_ftr_name_'.$lang['id_lang']))) {
$objHotelFeatures->name[$lang['id_lang']] = Tools::getValue(
'parent_ftr_name_'.$defaultLangId
);
} else {
$objHotelFeatures->name[$lang['id_lang']] = Tools::getValue(
'parent_ftr_name_'.$lang['id_lang']
);
}
}
$objHotelFeatures->active = 1;
$objHotelFeatures->position = $pos;
$objHotelFeatures->parent_feature_id = 0;
$objHotelFeatures->save();
if ($childFeaturesDefLang) {
// get previous child features of the parent feature
if ($childFeaturesInfo = $objHotelFeatures->getChildFeaturesByParentFeatureId(
$parentFeatureId
)) {
$prevChildIds = array();
foreach ($childFeaturesInfo as $row) {
$prevChildIds[] = $row['id'];
}
}
$usedFeatures = array();
foreach ($childFeaturesDefLang as $key => $childftr) {
$objHotelFeatures = new HotelFeatures();
// We will only create new child features other wise edit the previous child feature
if ($prevChildIds
&& isset($childFeatureIds[$key])
&& in_array($childFeatureIds[$key], $prevChildIds)
) {
$objHotelFeatures = new HotelFeatures($childFeatureIds[$key]);
// enter child feature id in the used child feature
$usedFeatures[] = $childFeatureIds[$key];
}
foreach ($languages as $lang) {
if (!trim(Tools::getValue('child_features_'.$lang['id_lang'])[$key])) {
$objHotelFeatures->name[$lang['id_lang']] = $childftr;
} else {
$objHotelFeatures->name[$lang['id_lang']] = Tools::getValue(
'child_features_'.$lang['id_lang']
)[$key];
}
}
$objHotelFeatures->active = 1;
$objHotelFeatures->parent_feature_id = $parentFeatureId;
$objHotelFeatures->save();
}
// delete the child features which are not used now
$notUsedChilds = array_diff($prevChildIds, $usedFeatures);
if ($notUsedChilds = array_diff($prevChildIds, $usedFeatures)) {
foreach ($notUsedChilds as $value) {
if ($value) {
$objHotelFeatures = new HotelFeatures($value);
$objHotelFeatures->delete();
}
}
}
if (Tools::isSubmit('submitHtlFeaturesAndStay')) {
Tools::redirectAdmin(
self::$currentIndex.'&id='.(int) $parentFeatureId.'&update'.$this->table.
'&conf=4&token='.$this->token
);
} else {
Tools::redirectAdmin(self::$currentIndex.'&conf=4&token='.$this->token);
}
} else {
$this->errors[] = $this->l('Some error has been occurred while saving features.');
}
} else {
$objHotelFeatures = new HotelFeatures();
foreach ($languages as $lang) {
if (!trim(Tools::getValue('parent_ftr_name_'.$lang['id_lang']))) {
$objHotelFeatures->name[$lang['id_lang']] = Tools::getValue(
'parent_ftr_name_'.$defaultLangId
);
} else {
$objHotelFeatures->name[$lang['id_lang']] = Tools::getValue(
'parent_ftr_name_'.$lang['id_lang']
);
}
}
$objHotelFeatures->active = 1;
$objHotelFeatures->position = $pos;
$objHotelFeatures->parent_feature_id = 0;
$objHotelFeatures->save();
if ($parentFeatureId = $objHotelFeatures->id) {
if ($childFeaturesDefLang) {
foreach ($childFeaturesDefLang as $key => $childftr) {
$objHotelFeatures = new HotelFeatures();
foreach ($languages as $lang) {
if (!trim(Tools::getValue('child_features_'.$lang['id_lang'])[$key])) {
$objHotelFeatures->name[$lang['id_lang']] = $childftr;
} else {
$objHotelFeatures->name[$lang['id_lang']] = Tools::getValue(
'child_features_'.$lang['id_lang']
)[$key];
}
}
$objHotelFeatures->active = 1;
$objHotelFeatures->parent_feature_id = $parentFeatureId;
$objHotelFeatures->save();
}
if (Tools::isSubmit('submitHtlFeaturesAndStay')) {
Tools::redirectAdmin(
self::$currentIndex.'&id='.(int) $parentFeatureId.'&update'.$this->table.
'&conf=4&token='.$this->token
);
} else {
Tools::redirectAdmin(self::$currentIndex.'&conf=4&token='.$this->token);
}
}
} else {
$this->errors[] = $this->l('Some error has been occurred while saving features.');
}
}
}
if ($parentFeatureId) {
$this->display = 'edit';
} else {
$this->display = 'add';
}
}
parent::postProcess();
}
public function ajaxProcessDeleteFeature()
{
$idFeature = Tools::getValue('feature_id');
$objHotelFeatures = new HotelFeatures();
if ($objHotelFeatures->deleteHotelFeatures($idFeature)) {
die('success');
} else {
echo 0;
}
}
public function setMedia()
{
parent::setMedia();
$this->addJs(_MODULE_DIR_.'hotelreservationsystem/views/js/HotelReservationAdmin.js');
$this->addCSS(_MODULE_DIR_.'hotelreservationsystem/views/css/HotelReservationAdmin.css');
}
}