Дипломная работа: Автоматизация процесса взаимодействия с клиентами (CRM) в компьютерном сервисе ООО "Спектра"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
106
foreach ($_GET['order'] as $clmnsKey => $clmnsVal) {
$colName = $_GET['columns'][$clmnsVal['column']]['data'];
if($clmnsKey != count($_GET['order'])-1){
$query .= $colName." ".$clmnsVal['dir'].", ";
}else{
$query .= $colName." ".$clmnsVal['dir']." ";
}
}
$query .= "LIMIT ".$_GET['start'].",".$_GET['length'];
$resArr['data'] = array();
foreach ($this->con->query($query) as $key => $value) {
$resArr['data'][] = $value;
}
$fulData = $this->con->query($fullDataQuery);
$rows = $fulData->fetchAll();
$resArr["recordsFiltered"] = count($rows);
$resArr["recordsTotal"] = count($rows);
$resArr["draw"] = intval($_GET['draw']);
print(json_encode($resArr));
exit();
}
}
?>
Вспомогательный класс «contentEditor.php»
<?php
class contentEditor extends core{
public function getSortedTiketTpls($defaultList){
$arr_tpls = array();
foreach ($defaultList as $key => $value) {
if(empty($arr_tpls[$value['tplParent']])) {
$arr_tpls[$value['tplParent']] = array();
}
$arr_tpls[$value['tplParent']]['groupName'] = $value['groupName'];
$arr_tpls[$value['tplParent']]['groupId'] = $value['grpId'];
$arr_tpls[$value['tplParent']]['tplData'][$value['tplId']]['tplId'] = $value['tplId'];
$arr_tpls[$value['tplParent']]['tplData'][$value['tplId']]['tplName'] =
$value['tplName'];
$arr_tpls[$value['tplParent']]['tplData'][$value['tplId']]['tplDescription'] =
$value['tplDescription'];
$arr_tpls[$value['tplParent']]['tplData'][$value['tplId']]['tplParent'] =
$value['tplParent'];
}
return $arr_tpls;
}
protected function editItemValue($parent,$name,$newVal,$id){
if($name == 'password'){
$newVal = md5($newVal);
107
}
if($parent == 'clients' && $name == 'password'){
$newVal = $this->getPassword();
}
if($this->executeQuery("UPDATE ".$parent." SET
".$name."='".$newVal."' WHERE id = ".$id)){
return 'Значение успешно изменено.';
}else{
return 'Хозяин, у нас пробемы. Изменения не вступили в
силу.';
}
}
protected function deleteItem($parent,$id){
if($this->executeQuery("DELETE FROM ".$parent." WHERE id =
".$id)){
return 'Значение успешно удалено.';
}else{
return 'Хозяин, у нас пробемы. Изменения не вступили в
силу.';
}
}
protected function addNewStage(){
$done_files = array();
if(isset($_FILES['files']['name'])){
for ($i=0; $i < count($_FILES['files']['name']); $i++) {
$file_name = $this->cyrillic_translit($_FILES['files']['name'][$i]);
if(move_uploaded_file($_FILES['files']['tmp_name'][$i], "./img/$file_name")){
$done_files[] = $file_name;
}
}
}
if($_POST['stageType'] == 'regular') {
$query = "INSERT INTO stages(id_tikets, stageimages, stagename,
stagedescription, hidstagedescription, stagedate, stageauthor, stagePrice, visibility)
VALUES ('" . $this->con->real_escape_string($_POST['addNewStage']) . "',
'" . serialize($done_files) . "',
'" . $this->con->real_escape_string(strip_tags($_POST['stagename'])) .
"',
'" . $this->con-
>real_escape_string(strip_tags($_POST['stagedescription'])) . "',
'" . $this->con-
>real_escape_string(strip_tags($_POST['hidstagedescription'])) . "',
'" . date("Y-m-d H:i:s") . "',
'" . $_SESSION['logined']['id'] . "',
" . (int)$_POST['stagePrice'] . ",
'regular')";
}else{
108
$query = "INSERT INTO stages(id_tikets, stageimages, stagename,
stagedescription, stagedate, stagePrice, stageauthor, visibility)
VALUES ('" . $this->con->real_escape_string($_POST['addNewStage']) . "',
'" . serialize($done_files) . "',
'" . $this->con->real_escape_string(strip_tags($_POST['stagename'])) .
"',
'" . $this->con-
>real_escape_string(strip_tags($_POST['stagedescription'])) . "',
'" . date("Y-m-d H:i:s") . "',
" . (int)$_POST['stagePrice'] . ",
'" . $_SESSION['logined']['id'] . "',
'system')";
}
if($this->executeQuery($query)){
$this->executeQuery("INSERT INTO
tktStagesMonitoring(stageId) VALUES (".mysqli_insert_id($this->con).")");
$query = "SELECT
st.id,st.stageimages,st.stagename,st.stagedescription,st.hidstagedescription,
st.stagedate, mg.synonym as stageauthor, stagePrice, visibility
FROM stages as st join managers as mg on st.stageauthor = mg.id
WHERE id_tikets = '".$_POST['addNewStage']."' ORDER BY st.stagedate
ASC";
$dataRow['steps'] = $this->getArrFromTableBYQuery($query);
$this->smarty->assign('steps', $dataRow['steps']);
$this->smarty->assign('logined', $_SESSION['logined']);
exit($this->smarty->display('work/stepsTable.tpl'));
}else{
exit('Не получилосъ');
}
}
protected function addNewTask(){
$taskDate = date('Y-m-d H:i:s');
$query = "
INSERT INTO toDoList(taskText, authorId, taskDate, target)
VALUES ('".$this->con-
>real_escape_string($_POST['taskText'])."','".$_SESSION['logined']['id']."','".$taskDate."','".$
this->con->real_escape_string($_POST['addNewTask'])."')";
if($this->executeQuery($query)){
$query = "SELECT
tdl.id,tdl.taskText,tdl.authorId,tdl.taskDate,tdl.target,mg.synonym as taskAuthor
FROM toDoList as tdl join managers as mg on tdl.authorID =
mg.id
WHERE tdl.target = '".$_POST['addNewTask']."' ORDER BY
tdl.taskDate ASC";
$dataRow['steps'] = $this->getArrFromTableBYQuery($query);
$this->smarty->assign('toDoListArr', $this-
>getArrFromTableBYQuery($query));
$this->smarty->assign('logined', $_SESSION['logined']);
exit($this->smarty->display('work/toDoListTable.tpl'));
109
}else{
exit('Не получилосъ');
}
}
protected function addNewTaskToTasks(){
$taskDate = date('Y-m-d H:i:s');
$query = "
INSERT INTO tasksList(taskText, authorId, taskDate, target)
VALUES ('".$this->con-
>real_escape_string($_POST['taskText'])."','".$_SESSION['logined']['id']."','".$taskDate."','".$
this->con->real_escape_string($_POST['addNewTaskToTasks'])."')";
if($this->executeQuery($query)){
$query = "SELECT
tdl.id,tdl.taskText,tdl.authorId,tdl.taskDate,tdl.target,mg.synonym as taskAuthor
FROM tasksList as tdl join managers as mg on tdl.authorID =
mg.id
WHERE tdl.target = '".$_POST['addNewTaskToTasks']."'
ORDER BY tdl.taskDate ASC";
$dataRow['steps'] = $this->getArrFromTableBYQuery($query);
$this->smarty->assign('tasksListArr', $this-
>getArrFromTableBYQuery($query));
$this->smarty->assign('logined', $_SESSION['logined']);
exit($this->smarty->display('work/tasksListTable.tpl'));
}else{
exit('Не получилосъ');
}
}
protected function getClientContentById($id){
$client = $this->getArrFromTableBYQuery("
SELECT
cl.id,cl.surname,cl.firstname,cl.middlename,cl.email,cl.phone,cl.secondphone,
cl.password,cl.creditCardNum,cl.creditCardCode,cl.crdtCrdIssuanceDate,cl.birthday,
cl.gender,cl.haveChilds_14old,cl.haveCar,cl.havePets,cl.adress,cl.hiddenInfo, cls.id as
clientStatus
FROM clients as cl
join clientStatuses as cls on
cl.clientStatus = cls.id
WHERE cl.id=".$id);
$json = json_decode(file_get_contents('config.json'), true);
$clJson = $json['clients'];
unset($json);
foreach ($clJson['columns'] as $jsnKey => $jsnVal){
if($jsnVal['colType'] == 'select'){
$client['refs'][$jsnKey] = $this-
>getArrFromTableBYQuery("SELECT ".$jsnVal['selectColumns']." FROM
".$jsnVal['relatedTable']);
110
}
}
$this->smarty->assign('client', $client);
$this->smarty->assign('clientsConfig', $clJson);
$query = "SELECT tk.id as tktId, st.statuscode,tk.actnum FROM tikets
AS tk JOIN statuses AS st ON tk.id_statuses = st.id WHERE id_clients = '".$client[0]['id']."'";
$tiketHistory = $this->getArrFromTableBYQuery($query);
$this->smarty->assign('tiketHistory', $tiketHistory);
$this->smarty->assign('logined', $_SESSION['logined']);
exit($this->smarty->display('work/getUserFullInfo.tpl'));
}
protected function getClienSmsArchive($id){
$clientSms = $this->getArrFromTableBYQuery("
SELECT
arch.id,arch.clientPhone,arch.smsID,arch.smsContext,arch.author,arch.sendDate,arch.statusD
escription
FROM smsArchive AS arch
WHERE arch.clientId = ".$id);
$account = $this->getArrFromTableBYQuery("
SELECT clnt.password,clnt.phone
FROM clients AS clnt
WHERE clnt.id = ".$id);
$json = json_decode(file_get_contents('config.json'), true);
$statusJson = $json['smsStatuses'];
unset($json);
foreach ($clientSms as $clientSmsKey => $clientSmsArr){
if($clientSmsArr['statusDescription'] != '103'){
$temp =
file_get_contents('https://sms.ru/sms/status?api_id=7850d916-ead5-a464-49c0-
7568c8845c0b&sms_id='.$clientSmsArr["smsID"].'&json=1');
$json = json_decode($temp, true);
if($json['status'] == "OK"){
$this->executeQuery("UPDATE smsArchive
SET statusDescription ='".$json['sms'][$clientSmsArr["smsID"]]['status_code']."' WHERE id
= ".$clientSmsArr['id']);
$clientSms[$clientSmsKey]['statusDescription']
= $statusJson[$json['sms'][$clientSmsArr["smsID"]]['status_code']];
unset($json);
}
}else{
$clientSms[$clientSmsKey]['statusDescription'] =
$statusJson[$clientSmsArr['statusDescription']];
}
}
$this->smarty->assign('clientSms', $clientSms);
$resultData['login'] = $account[0]['phone'];
$resultData['passw'] = $account[0]['password'];
Источник: https://baza.diplomsite.ru/previewfile/2063