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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
111
$resultData['archive'] = $this->smarty-
>fetch('work/getSmsArchiveTable.tpl');
exit(json_encode($resultData));
}
protected function sendSms($clientId,$clientPhone,$smsText){
require_once 'sms.ru/sms.ru.php';
$smsru = new SMSRU('7850d916-ead5-a464-49c0-7568c8845c0b');
$data = new stdClass();
$data->to = '7'.$clientPhone;
$data->text = $smsText;
$sms = $smsru->send_one($data);
if ($sms->status == "OK") {
$this->executeQuery("INSERT INTO smsArchive
(clientId,clientPhone,smsID,smsContext,author,sendDate,statusDescription)
VALUES
('".$clientId."','".$clientPhone."','".$sms-
>sms_id."','".$smsText."','".$_SESSION['logined']['login']."','".date('Y-m-d H:i:s')."','".$sms-
>status_code."')");
return array('status' => 'OK', 'message' => 'Смска успешно
улетела)');
}else{
return array('status' => 'ERROR', 'message' => "Текст ошибки:
$sms->status_text.");
}
}
protected function getTiketDetailsModal($tiketID){
$tiketData = $this->getArrFromTableBYQuery("
SELECT cl.id as
clntID,cl.firstname,cl.middlename,cl.surname,cl.phone,cl.secondphone,cl.email,cl.creditCard
Num,st.id as id_statuses, tSt.id as id_tiketState, is_notified,
tk.id as
tktID,tk.id_typesofequipment,tk.actnum,tk.hiddenstatus,tk.productname,tk.productseries,tk.co
mpleteness,tk.faultdescription,tk.exteriorview,
tk.tktcomment,tk.admissiondate,tk.miniPrice,mng.synonym,tk.master,tk.priority,tk.priceRang
e, tk.invoiceForPayment, tk.actOfWorks, tk.commodityCheck
FROM clients as cl join tikets as tk on tk.id_clients = cl.id
join typesofequipment as tq on tk.id_typesofequipment = tq.id
join statuses as st on tk.id_statuses = st.id
join tiketsStates as tSt on tk.id_tiketState = tSt.id
join managers as mng on tk.tiketCreator = mng.id
WHERE tk.actnum = '".$tiketID."'
")[0];
$dataRow = array();
$dataRow['refs'] = array();
$dataRow['tiket'] = $tiketData;
$json = json_decode(file_get_contents('config.json'), true);
foreach ($json as $confKey => $confArr) {
112
foreach ($tiketData as $bufKey => $bufVal) {
if(!in_array($bufKey, $dataRow['refs']) &&
$confArr['columns'][$bufKey]['colType'] == 'select' && !isset($dataRow['refs'][$bufKey])){
$dataRow['refs'][$bufKey] = $this->getArrFromTableBYQuery("SELECT
".$confArr['columns'][$bufKey]['selectColumns']." FROM
".$confArr['columns'][$bufKey]['relatedTable']);
}
}
}
$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 = '". $tiketData['clntID']."'";
$dataRow['tiketHistory'] = $this->getArrFromTableBYQuery($query);
$query = "SELECT
st.id,st.stageimages,st.stagename,st.stagedescription,st.hidstagedescription,st.stagedate,st.stag
ePrice, mg.synonym as stageauthor, visibility
FROM stages as st join managers as mg on st.stageauthor = mg.id
WHERE id_tikets = '". $tiketData['tktID']."' ORDER BY st.stagedate ASC";
$dataRow['steps'] = $this->getArrFromTableBYQuery($query);
$this->smarty->assign('tiketInfo', $dataRow);
$this->smarty->assign('config', $json);
$this->smarty->assign('logined', $_SESSION['logined']);
$stepTitleItemsTable = $this->getArrFromTableBYQuery("SELECT grp.id AS grpId,
grp.groupName, tpl.id AS tplId, tpl.tplName, tpl.tplDescription, tpl.tplParent
FROM tiketTplGroups AS grp JOIN tiketTplData AS
tpl ON grp.id = tplParent
WHERE grp.target = 'StepsTitles'");
$this->smarty->assign('stepTitleItemsTable', $this-
>getSortedTiketTpls($stepTitleItemsTable));
$stepDescrItemsTable = $this->getArrFromTableBYQuery("SELECT grp.id AS
grpId, grp.groupName, tpl.id AS tplId, tpl.tplName, tpl.tplDescription, tpl.tplParent
FROM tiketTplGroups AS grp JOIN tiketTplData AS
tpl ON grp.id = tplParent
WHERE grp.target = 'StepsDescriptions'");
$tiketMonitoring = $this->getArrFromTableBYQuery("SELECT DISTINCT
mng.synonym, tmm.eventDate, master1.synonym AS oldMaster, master2.synonym AS
newMaster
FROM tktMastersMonitoring AS tmm
JOIN tikets AS tkt ON tkt.id = tmm.tiketId
JOIN managers AS mng ON tmm.authorId =
mng.id
JOIN managers AS master1 ON tmm.oldMaster =
master1.id
JOIN managers AS master2 ON tmm.newMaster =
master2.id
WHERE tkt.id = ".$tiketData['tktID']);
113
$this->smarty->assign('stepDescrItemsTable', $this-
>getSortedTiketTpls($stepDescrItemsTable));
$this->smarty->assign('tiketMonitoring', $tiketMonitoring);
$this->smarty->assign('masters', $this->getArrFromTableBYQuery("SELECT id,
synonym FROM managers WHERE rights <> 'noAccess'"));
$this->smarty->display('work/modals/tiketPreviewModal.tpl');
exit();
}
public function form_obr(){
if($_SESSION['logined']['status'] == FALSE){
header("Location:
http://".$_SERVER['HTTP_HOST'].'/logIn/');
}
if($_POST['expressEditor']){
if($_POST['name'] == 'id_statuses'){
$this->executeQuery("INSERT INTO
tktStatusMonitoring(tiketId,eventDate,oldStatus,newStatus,authorId)
VALUES('".$this-
>con->real_escape_string($_POST['id'])."','".date('Y-m-d H:i:s')."','".$this->con-
>real_escape_string($_POST['old_val'])."','".$this->con-
>real_escape_string($_POST['new_val'])."','".$_SESSION['logined']['id']."')");
}
if($_POST['name'] == 'master'){
$this->executeQuery("INSERT INTO
tktMastersMonitoring(tiketId,eventDate,oldMaster,newMaster,authorId)
VALUES('".$this-
>con->real_escape_string($_POST['id'])."','".date('Y-m-d H:i:s')."','".$this->con-
>real_escape_string($_POST['old_val'])."','".$this->con-
>real_escape_string($_POST['new_val'])."','".$_SESSION['logined']['id']."')");
}
exit(json_encode(array('message' => $this-
>editItemValue($this->con->real_escape_string($_POST['parent']),$this->con-
>real_escape_string($_POST['name']),$this->con-
>real_escape_string(strip_tags($_POST['new_val'])),$this->con-
>real_escape_string($_POST['id'])))));
}
if($_POST['expressDeleter']){
exit(json_encode(array('message' => $this-
>deleteItem($_POST['parent'],$_POST['id']))));
}
if($_POST['addNewStage']){
$this->addNewStage();
}
if($_POST['addNewTask']){
$this->addNewTask();
}
if($_POST['addNewTaskToTasks']){
$this->addNewTaskToTasks();
}
114
if($_POST['getClientContentById']){
$this->getClientContentById($_POST['clientID']);
}
if($_POST['getSmsArchive']){
$this->getClienSmsArchive($_POST['clientID']);
}
if($_POST['sendSms']){
exit(json_encode($this-
>sendSms($_POST['clientID'],$_POST['clientPhone'],$this->con-
>real_escape_string($_POST['smsText']))));
}
if($_POST['checkPhone']){
if($this->checkNumBeforeAdd("SELECT id FROM clients
WHERE phone = '".$this->con->real_escape_string($_POST['clientPhone'])."'") == true){
$result = array('checkResult' => "ok");
$this->logMe('Клиента с номером
'.$_POST['clientPhone']." нет в базе, идем добавлять.",'debug','log');
}else{
$result = array('checkResult' => "This number is already
in the database.");
}
exit(json_encode($result));
}
if($_POST['action'] == "getTiketDetailModal"){
$this->getTiketDetailsModal($_POST["tiketID"]);
}
}
}
?>
Класс «workspace.php»
<?php
class workspace extends core{
public $json = false;
public function form_obr(){
if($_POST['ImgExpressEditor']){
exit(json_encode(array('message' => $this-
>editItemValue($_POST['parent'],$_POST['name'],serialize($_POST['new_val']),$_POST['id'
]))));
}
}
protected function getTikets($tktsTypes='default'){
$query = "
SELECT cl.id as
clntID,cl.firstname,cl.middlename,cl.surname,cl.phone,cl.secondphone,cl.email,cl.creditCard
Num,st.id as id_statuses, tSt.id as id_tiketState, is_notified,
115
tk.id as
tktID,tk.id_typesofequipment,tk.actnum,tk.hiddenstatus,tk.productname,tk.productseries,tk.co
mpleteness,tk.faultdescription,tk.exteriorview,
tk.tktcomment,tk.admissiondate,tk.miniPrice,tk.master,mng.synonym,tk.priority,tk.priceRang
e, tk.invoiceForPayment, tk.actOfWorks, tk.commodityCheck
FROM clients as cl join tikets as tk on tk.id_clients = cl.id
join typesofequipment as tq on
tk.id_typesofequipment = tq.id
join statuses as st on tk.id_statuses =
st.id
join tiketsStates as tSt on
tk.id_tiketState = tSt.id
join managers as mng on
tk.tiketCreator = mng.id
";
if($tktsTypes == 'archive'){
$query .= " WHERE st.statuscode = 'archive'";
}elseif($tktsTypes == 'completed'){
$query .= " WHERE st.statuscode = 'completed'";
}elseif($tktsTypes == 'bolt'){
$query .= " WHERE st.statuscode = 'bolt'";
}else{
$query .= " WHERE st.statuscode = 'during'";
}
$result = mysqli_query($this->con,$query);
if(!$result){
$this->logMe("&#10;&#9;&#9;Ошибка в:
'".__FUNCTION__."'.&#10;&#9;&#9;Инициатор:".$query.".&#10;&#9;&#9;Текст:
".mysqli_error($this->con)."&#10; ","error" ,'log');
return FALSE;
}
$dataRow = array();
$dataRow['refs'] = array();
for($i = 0; $i < mysqli_num_rows($result); $i++){
$buf = mysqli_fetch_array($result,MYSQLI_ASSOC);
$dataRow['data'][$i]['tiket'] = $buf;
foreach ($this->json as $confKey => $confArr) {
foreach ($buf as $bufKey => $bufVal) {
if(!in_array($bufKey, $dataRow['refs']) &&
$confArr['columns'][$bufKey]['colType'] == 'select' && !isset($dataRow['refs'][$bufKey])){
$dataRow['refs'][$bufKey] = $this->getArrFromTableBYQuery("SELECT
".$confArr['columns'][$bufKey]['selectColumns']." FROM
".$confArr['columns'][$bufKey]['relatedTable']);
}
}
}
$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 = '".$buf['clntID']."'";
$dataRow['tiketHistory'][$buf['tktID']] = $this->getArrFromTableBYQuery($query);
Источник: https://baza.diplomsite.ru/previewfile/2063