| Current Path : /home/helpink/www/components/com_jbusinessdirectory/models/ |
| Current File : /home/helpink/www/components/com_jbusinessdirectory/models/billingdetails.php |
<?php
/**
* @package J-BusinessDirectory
*
* @author CMSJunkie http://www.cmsjunkie.com/
* @copyright Copyright (C) 2007 - 2022 CMSJunkie. All rights reserved.
* @license https://www.gnu.org/licenses/agpl-3.0.en.html
*/
defined('_JEXEC') or die('Restricted access');
use Joomla\Utilities\ArrayHelper;
jimport('joomla.application.component.modeladmin');
/**
* Billing Details Model
*
*/
class JBusinessDirectoryModelBillingDetails extends JModelAdmin {
/**
* @var string The prefix to use with controller messages.
* @since 1.6
*/
protected $text_prefix = 'COM_JBUSINESSDIRECTORY_COMPANY_TYPE';
/**
* Model context string.
*
* @var string
*/
protected $_context = 'com_jbusinessdirectory.billingdetails';
/**
* Method to test whether a record can be deleted.
*
* @param object A record object.
*
* @return boolean True if allowed to delete the record. Defaults to the permission set in the component.
*/
protected function canDelete($record) {
return true;
}
/**
* Method to test whether a record can be deleted.
*
* @param object A record object.
*
* @return boolean True if allowed to change the state of the record. Defaults to the permission set in the component.
*/
protected function canEditState($record) {
return true;
}
/**
* Returns a Table object, always creating it
*
* @param type The table type to instantiate
* @param string A prefix for the table class name. Optional.
* @param array Configuration array for model. Optional.
*
* @return JTable A database object
*/
public function getTable($type = 'BillingDetails', $prefix = 'JTable', $config = array()) {
return JTable::getInstance($type, $prefix, $config);
}
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @since 1.6
*/
protected function populateState() {
$app = JFactory::getApplication('administrator');
// Load the User state.
$id = JFactory::getApplication()->input->getInt('id');
$this->setState('billingdetails.id', $id);
}
/**
* Method to get a menu item.
*
* @param integer The id of the menu item to get.
*
* @return mixed Menu item data object on success, false on failure.
*/
public function getItem($itemId = null) {
// Get a menu item row instance.
$table = $this->getTable();
$user = JBusinessUtil::getUser();
$value = $table->getBillingDetails($user->id);
$value->vat_details = strip_tags((string)$value->vat_details);
$company = $this->getCompany();
$countriesTable = $this->getTable('Country');
$value->countries = $countriesTable->getCountries();
JBusinessDirectoryTranslations::updateCountriesTranslation($value->countries);
$regionsTable = $this->getTable('Region', 'JTable');
$value->regions = $regionsTable->getRegions();
$citiesTable = $this->getTable('City', 'JTable');
$value->cities = $citiesTable->getCities();
if (empty($value->first_name)) {
$value->first_name = $user->name;
} elseif (empty($value->email)) {
$value->email = $user->email;
} elseif (empty($value->phone)) {
$value->phone = $company->phone;
} elseif (empty($value->company_name)) {
$value->company_name = $company->name;
} elseif (empty($value->address)) {
$value->address = $company->address;
} elseif (empty($value->region)) {
$value->region = $company->county;
} elseif (empty($value->city)) {
$value->city = $company->city;
} elseif (empty($value->postal_code)) {
$value->postal_code = $company->postalCode;
}
return $value;
}
/**
* Method to get the menu item form.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data (default case), false if not.
*
* @return JForm A JForm object on success, false on failure
* @since 1.6
*/
public function getForm($data = array(), $loadData = true) {
exit;
// The folder and element vars are passed when saving the form.
if (empty($data)) {
$item = $this->getItem();
// The type should already be set.
}
// Get the form.
$form = $this->loadForm('com_jbusinessdirectory.billingdetails', 'item', array('control' => 'jform', 'load_data' => $loadData), true);
if (empty($form)) {
return false;
}
return $form;
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
* @since 1.6
*/
protected function loadFormData() {
// Check the session for previously entered form data.
$data = JFactory::getApplication()->getUserState('com_jbusinessdirectory.edit.billingdetails.data', array());
if (empty($data)) {
$data = $this->getItem();
}
return $data;
}
/**
* Method to save the form data.
*
* @param array The form data.
*
* @return boolean True on success.
*/
public function save($data) {
$id = (!empty($data['id'])) ? $data['id'] : (int) $this->getState('billingdetails.id');
$id = intval($id);
$isNew = true;
if(!empty($data["vat_details"])) {
$data["vat_details"] = str_replace("\n", "<br/>", $data["vat_details"]);
$data["vat_details"] = trim($data["vat_details"]);
}
//todo - we have to investigate why the user id is empty
if(empty($data["user_id"])){
return true;
}
$data['id'] = $id;
// Get a row instance.
$table = $this->getTable();
// Load the row if saving an existing item.
if ($id > 0) {
$table->load($id);
$isNew = false;
}
// Bind the data.
if (!$table->bind($data)) {
$this->setError($table->getError());
return false;
}
// Check the data.
if (!$table->check()) {
$this->setError($table->getError());
return false;
}
// Store the data.
if (!$table->store()) {
$this->setError($table->getError());
return false;
}
$this->setState('billingdetails.id', $table->id);
// Clean the cache
$this->cleanCache();
return true;
}
/**
* Method to delete groups.
*
* @param array An array of item ids.
*
* @return boolean Returns true on success, false on failure.
*/
public function delete(&$itemIds) {
// Sanitize the ids.
$itemIds = (array) $itemIds;
ArrayHelper::toInteger($itemIds);
// Get a group row instance.
$table = $this->getTable();
// Iterate the items to delete each one.
foreach ($itemIds as $itemId) {
if (!$table->delete($itemId)) {
$this->setError($table->getError());
return false;
}
}
// Clean the cache
$this->cleanCache();
return true;
}
/**
* Get Company
*
* @return mixed
*/
public function getCompany() {
$companyId = JFactory::getApplication()->input->get("companyId");
$companiesTable = JTable::getInstance("Company", "JTable");
$company = $companiesTable->getCompany($companyId);
if (empty($company)) {
$company = new stdClass();
$company->name = '';
$company->phone = '';
$company->address = '';
$company->postalCode = '';
$company->city = '';
$company->county = '';
$company->country_name = '';
}
return $company;
}
/**
* Get full order
*
* @return null
*
* @since 5.0.1
*/
public function getOrder() {
$orderId = JFactory::getApplication()->input->get("orderId");
if (empty($orderId)) {
return null;
}
$model = JModelLegacy::getInstance('Orders', 'JBusinessDirectoryModel', array('ignore_request' => true));
$order = $model->getOrder($orderId);
if (!empty($order)) {
$companiesTable = $this->getTable("Company");
$order->company = $companiesTable->getCompany($order->company_id);
}
return $order;
}
public function updateBillingDetails($data) {
$table = $this->getTable('BillingDetails', 'JTable');
$result = $table->updateBillingDetails($data);
return $result;
}
public function getBillingDetails($userId) {
$table = $this->getTable('BillingDetails', 'JTable');
$result = $table->getBillingDetails($userId);
return $result;
}
}