| Current Path : /var/www/html/administrator/components/com_jssupportticket/models/ |
| Current File : /var/www/html/administrator/components/com_jssupportticket/models/department.php |
<?php
/**
* @Copyright Copyright (C) 2015 ... Ahmad Bilal
* @license GNU/GPL http://www.gnu.org/copyleft/gpl.html
* Company: Buruj Solutions
+ Contact: www.burujsolutions.com , info@burujsolutions.com
* Created on: May 22, 2015
^
+ Project: JS Tickets
^
*/
defined('_JEXEC') or die('Not Allowed');
jimport('joomla.application.component.model');
jimport('joomla.html.html');
class JSSupportticketModelDepartment extends JSSupportTicketModel {
function __construct() {
parent::__construct();
}
function getAllDepartments($searchdepartment,$limitstart,$limit){//$searchdepartment, $searchtype,$limitstart,$limit
/* $type[] = array('value'=>'' ,'text'=> JText::_('Select type'));
$type[] = array('value'=>1 ,'text'=> JText::_('Public'));
$type[] = array('value'=>0 ,'text'=> JText::_('Private'));
$lists['type'] = JHTML::_('select.genericList', $type, 'filter_type', 'class="inputbox tk_department_select" ', 'value', 'text', $searchtype);*/
$lists = array();
$db = $this->getDbo();
//For Total Record
$wherequery="";
if(isset($searchdepartment) && $searchdepartment != ''){
$searchdepartment = trim($searchdepartment);
$wherequery .= " AND dep.departmentname LIKE ".$db->quote('%'.$searchdepartment.'%');
}
/*if(isset($searchtype) && $searchtype != ''){
if(!is_numeric($searchtype)) return false;
$wherequery .= " AND dep.ispublic =".$searchtype;
}*/
$query = "SELECT COUNT(id) From `#__js_ticket_departments` AS dep WHERE dep.status <> -1 ";
$query.=$wherequery;
$db->setQuery($query);
$total =$db->loadResult();
// ,dep.ispublic
$query = "SELECT dep.id,dep.isdefault, dep.departmentname,dep.status, dep.created, dep.update,
(SELECT COUNT(staff.id) From `#__js_ticket_staff` AS staff WHERE staff.departmentid=dep.id) AS user,
(SELECT email.email From `#__js_ticket_email` AS email WHERE email.id=dep.emailid) AS outgoingemail,
(SELECT staff.username From `#__js_ticket_staff` AS staff WHERE staff.id=dep.managerid) AS manager
From`#__js_ticket_departments`AS dep WHERE dep.status <> -1";
$query.=$wherequery;
$db->setQuery($query,$limitstart,$limit);
$departments = $db->loadObjectList();
if($searchdepartment) $lists['searchdepartment'] = $searchdepartment;
$result[0] = $departments;
$result[1] = $total;
$result[2] = $lists;
return $result;
}
function getDepartmentForForm($id){
if($id) if(!is_numeric($id)) return false;
$db = $this->getDbo();
if($id){
$query = "SELECT * FROM `#__js_ticket_departments` WHERE id =".$id;
$db->setQuery($query);
$department = $db->loadObject();
}
$emailid = '';
if(isset ($department)){
$emailtemplateid = $department->emailtemplateid;
$emailid = $department->emailid;
}
// $type = array(array('value' => null, 'text' => JText::_('Type')), array('value' => 0, 'text' => JText::_('Private')), array('value' => 1, 'text' => JText::_('Public')));
$status = array(array('value' => null, 'text' => JText::_('Status')),array('value' => 0, 'text' => JText::_('Disabled')),array('value' => 1, 'text' => JText::_('Active')));
$isdefault = array(array('value' => 0, 'text' => JText::_('Not default')),array('value' => 1, 'text' => JText::_('Default')));
if(isset($department)){
$lists['isdefault'] = JHTML::_('select.genericList', $isdefault, 'isdefault', 'class="inputbox js-ticket-form-field-input" ' . '', 'value', 'text',$department->isdefault);
$lists['status'] = JHTML::_('select.genericList', $status, 'status', 'class="inputbox js-ticket-form-field-input " ' . '', 'value', 'text',$department->status);
//$lists['type'] = JHTML::_('select.genericList', $type, 'ispublic', 'class="inputbox required " ' . '', 'value', 'text',$department->ispublic);
}else{
$lists['isdefault'] = JHTML::_('select.genericList', $isdefault, 'isdefault', 'class="inputbox js-ticket-form-field-input " ' . '', 'value', 'text',0);
$lists['status'] = JHTML::_('select.genericList', $status, 'status', 'class="inputbox js-ticket-form-field-input " ' . '', 'value', 'text',1);
//$lists['type'] = JHTML::_('select.genericList', $type, 'ispublic', 'class="inputbox required " ' . '', 'value', 'text','');
}
$emaillist = $this->getJSModel('email')->getEmailList(JText::_('Select email'));
$lists['emaillist'] =JHTML::_('select.genericList', $emaillist, 'emailid', 'class="inputbox js-ticket-form-field-select required" '. '', 'value', 'text',$emailid);
if(isset($department))
$result[0] = $department;
$result[1] = $lists;
return $result;
}
function getDepartments(){
$db = $this->getDBO();
$query = "SELECT * FROM `#__js_ticket_departments` WHERE status = 1 ";//AND ispublic = 1
$db->setQuery($query);
$rows = $db->loadObjectList();
$departments = array();
$departments[] = array('value' => null, 'text' => JText::_('Select Department'));
foreach($rows as $row){
$departments[] = array('value' => $row->id, 'text' => JText::_($row->departmentname));
}
return $departments;
}
// function getDepartments($title) { // with title without title
// $db = JFactory::getDBO();
// $query = "SELECT id, departmentname FROM `#__js_ticket_departments` WHERE status = 1 ORDER BY departmentname ASC ";
// $db->setQuery($query);
// $rows = $db->loadObjectList();
// if ($db->getErrorNum()) {
// echo $db->stderr();
// return false;
// }
// $department = array();
// if ($title)
// $department[] = array('value' => JText::_(''), 'text' => $title);
// foreach ($rows as $row) {
// $department[] = array('value' => $row->id, 'text' => $row->departmentname);
// }
// return $department;
// }
function checkDepartmentSetting($id){
if(!is_numeric($id)) return false;
$db = JFactory::getDBO();
$query = "Select dep.ticketautoresponce
From `#__js_ticket_tickets` AS ticket
JOIN `#__js_ticket_departments` AS dep ON dep.id = ticket.departmentid
where ticket.id = ".$id;
$db->setQuery( $query );
$depsetting = $db->loadResult();
return $depsetting;
}
function getDepartmentEmail($id){
if(!is_numeric($id)) return false;
$db = JFactory::getDBO();
$query = "Select email.email
From `#__js_ticket_tickets` AS ticket
JOIN `#__js_ticket_departments` AS dep ON dep.id = ticket.departmentid
JOIN `#__js_ticket_email` AS email ON email.id = dep.emailid
where ticket.id = ".$id;
$db->setQuery( $query );
$emailaddress = $db->loadObject();
$email_address=$emailaddress->email;
return $email_address;
}
function getDepartmentSignature($id){
if(!is_numeric($id)) return false;
$db = JFactory::getDBO();
$query = "Select dep.departmentsignature
From `#__js_ticket_tickets` AS ticket
JOIN `#__js_ticket_departments` AS dep ON dep.id = ticket.departmentid
where ticket.id = ".$id;
$db->setQuery( $query );
$departmentsignature = $db->loadResult();
$departmentsignature = str_replace(Chr(13),'<br>', $departmentsignature);
return $departmentsignature;
}
function getDepartmentSignatureForNewTicket($id){
if(!is_numeric($id)) return false;
$db = JFactory::getDBO();
$query = "Select dep.canappendsignature,dep.departmentsignature,dep.ticketautoresponce
From `#__js_ticket_tickets` AS ticket
JOIN `#__js_ticket_departments` AS dep ON dep.id = ticket.departmentid
where ticket.id = ".$id;
$db->setQuery( $query );
$departmentsignature = $db->loadObject();
return $departmentsignature;
}
function getFormData($id) {
$db = $this->getDbo();
$email;
if (isset($id)) {
if (!is_numeric($id))
return false;
$query = "SELECT * FROM `#__js_ticket_departments` WHERE id =" . $id;
$db->setQuery($query);
$department = $db->loadObject();
}
if (isset($department)) {
$emailtemplateid = $department->emailtemplateid;
$emailid = $department->emailid;
}
$emaillist = $this->getJSModel('email')->getEmailList(JText::_('Select email'));
$lists['emaillist'] = JHTML::_('select.genericList', $emaillist, 'emailid', 'class="inputbox required" ' . '', 'value', 'text');
$result[0] = $department;
$result[2] = $lists;
return $result;
}
function storeDepartment($data) {
$user = JSSupportticketCurrentUser::getInstance();
if(!$user->getIsAdmin()){
$permission = ($data['id'] == '') ? 'Add Department' : 'Edit Department';
$per = $user->checkUserPermission($permission);
if ($per == false)
return PERMISSION_ERROR;
}
if($data['id']>0){
unset($data['created']);
}
$data['departmentsignature'] = $this->getJSModel('jssupportticket')->getHtmlInput('departmentsignature');
$row = $this->getTable('departments');
if (!$row->bind($data)) {
$this->setError($row->getError());
return SAVE_ERROR;
}
if (!$row->check()) {
$this->setError($row->getError());
return SAVE_ERROR;
}
//Make all other department not default if its default
if(isset($data['isdefault']) && $data['isdefault'] == 1){
$this->makeAllDepartmentNotDefault();
}
if (!$row->store()) {
$this->getJSModel('systemerrors')->updateSystemErrors($row->getError());
$this->setError($row->getError());
return SAVE_ERROR;
}
JSSupportticketMessage::$recordid = $row->id;
return SAVED;
}
private function makeAllDepartmentNotDefault(){
$db = JFactory::getDbo();
$query = "UPDATE `#__js_ticket_departments` SET isdefault = 0";
$db->setQuery($query);
$db->execute();
}
function deleteDepartment($id){
if(!is_numeric($id)) return false;
$user = JSSupportticketCurrentUser::getInstance();
if(!$user->getIsAdmin()){
$per = $user->checkUserPermission('Delete Department');
if ($per == false)
return PERMISSION_ERROR;
}
$db = $this->getDBO();
if($this->departmentCanDelete($id) == true){
$query = "DELETE department FROM `#__js_ticket_departments` AS department WHERE department.id = ".$id;
$db->setQuery($query);
if (!$db->execute()) {
$this->getJSModel('systemerrors')->updateSystemErrors($db->getErrorMsg());
$this->setError($db->getErrorMsg());
return DELETE_ERROR;
}
return DELETED;
}else{
return IN_USE;
}
}
function deleteDepartmentAdmin() {
$row = $this->getTable('departments');
$db = $this->getDBO();
$c_id = JFactory::getApplication()->input->get('cid', array(0), '', 'array');
foreach ($c_id as $id) {
if(is_numeric($id)){
if ($this->departmentCanDelete($id) == true) {
$query = "DELETE department
FROM `#__js_ticket_departments` AS department
WHERE department.id = " . $id;
$db->setQuery($query);
if (!$db->execute()) {
return DELETE_ERROR;
}
}else{
return DELETE_ERROR;
}
}else{
return false;
}
}
return DELETED;
}
function departmentCanDelete($id){
if(!is_numeric($id)) return false;
$db = $this->getDBO();
$query = "SELECT( (SELECT count(id) FROM `#__js_ticket_tickets` where departmentid=".$id." ) +
(SELECT count(id) FROM `#__js_ticket_acl_role_access_departments` where departmentid=".$id." ) +
(SELECT count(id) FROM `#__js_ticket_acl_user_access_departments` where departmentid=".$id." )
) AS total";
$db->setQuery($query);
$total = $db->loadResult();
if($total > 0) return false;
else return true;
}
function getDepartmentById($id) {
if (!is_numeric($id))
return false;
$db = $this->getDBO();
$query = "SELECT departmentname FROM `#__js_ticket_departments` WHERE id = " . $id;
$db->setQuery($query);
$departmentname = $db->loadResult();
return $departmentname;
}
function listDepartmentsByGroup($val) {
if ($val)
if (is_numeric($val) == false)
return false;
$db = $this->getDBO();
$query = "SELECT groupacss.departmentid AS departmentid, dep.departmentname AS departmentname
FROM `#__js_ticket_group_access_departments`AS groupacss
JOIN `#__js_ticket_departments` AS dep ON groupacss.departmentid = dep.id
WHERE groupacss.status = 1 AND groupacss.groupid = " . $val . " ORDER BY departmentname ASC";
$db->setQuery($query);
$result = $db->loadObjectList();
$required = ' required';
if (empty($result)) {
$return_value = "<input class='inputbox" . $required . "' type='text' name='departmentid' size='40' maxlength='100' />";
} else {
$return_value = "<select name='departmentid' class='inputbox" . $required . "' >\n";
$return_value .= "<option value='0'>" . JText::_('Select Department') . "</option>\n";
foreach ($result as $row) {
$return_value .= "<option value=\"$row->departmentid\" >$row->departmentname</option> \n";
}
$return_value .= "</select>\n";
}
return $return_value;
}
function getDefaultDepartmentID(){
$db = JFactory::getDbo();
$query = "SELECT id FROM `#__js_ticket_departments` WHERE isdefault = 1";
$db->setQuery($query);
$defaultid = $db->loadResult();
return $defaultid;
}
}
?>