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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
116
if($tktsTypes != 'archive'){
$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 = '".$buf['tktID']."' ORDER
BY st.stagedate ASC";
$dataRow['data'][$i]['steps'] = $this->getArrFromTableBYQuery($query);
}
}
return $dataRow;
}
protected function tiketsTableAction(){
$fullDataQuery = "SELECT count(cl.id) as fullData 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 WHERE st.statuscode =
'".$_GET["statuscode"]."'";
$query = "
SELECT cl.id as
clntID,cl.firstname,cl.middlename,cl.surname,cl.phone,cl.secondphone,cl.email,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,tk.master,mng.synonym,tk.priority
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
";
$query .= "WHERE st.statuscode = '".$_GET["statuscode"]."' AND ";
if($_GET['managersFilterForm'][0]['value'] != '*'){
$managersFilter = "";
foreach ($_GET['managersFilterForm'] as $clmnsKey => $clmnsVal) {
$managersFilter .= ($clmnsKey != count($_GET['managersFilterForm'])-1) ? "
tk.master = '".$clmnsVal['value']."' OR " : " tk.master = '".$clmnsVal['value']."'";
}
$query .= " (".$managersFilter.") AND " ;
117
}
if(count($_GET['columns'])!=0){
$query .= " (";
foreach ($_GET['columns'] as $clmnsKey => $clmnsVal) {
if($clmnsVal['searchable'] == "true"){
if($clmnsVal['data'] == "admissiondate"){
if(preg_match("/^([0-9_\-\: ]+)/i", $_GET['search']['value'])){
$query .= ($clmnsKey != count($_GET['columns']) - 1) ? $clmnsVal['data']
. " LIKE '%" . $_GET['search']['value'] . "%' OR " : $clmnsVal['data'] . " LIKE '%" .
$_GET['search']['value'] . "%' ";
}
}else{
$query .= ($clmnsKey != count($_GET['columns'])-1) ? $clmnsVal['data']."
LIKE '%".$_GET['search']['value']."%' OR " : $clmnsVal['data']." LIKE
'%".$_GET['search']['value']."%' ";
}
}
}
if(trim(substr($query, -3)) == "OR"){
$query = substr_replace($query, '', -3);
}
$query .= ") ";
}
$query .= " ORDER BY ";
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();
$resArr['helper']['equipments'] = $this->getArrFromTableBYQuery("SELECT
id,equipmentname FROM typesofequipment");
$resArr['helper']['masters'] = $this->getArrFromTableBYQuery("SELECT id, synonym
FROM managers WHERE rights <> 'noAccess'");
$resArr['helper']['tktStates'] = $this->getArrFromTableBYQuery("SELECT id, tktState
FROM tiketsStates");
$resArr['helper']['tktStatuses'] = $this->getArrFromTableBYQuery("SELECT id,
statusname FROM statuses");
foreach (mysqli_query($this->con,$query) as $key => $value) {
$resArr['data'][] = $value;
}
$fulData = mysqli_query($this->con,$fullDataQuery);
$buf = mysqli_fetch_array($fulData,MYSQLI_ASSOC);
$resArr["recordsFiltered"] = $buf['fullData'];
$resArr["recordsTotal"] = $buf['fullData'];
$resArr["draw"] = intval($_GET['draw']);
118
return $resArr;
}
public function get_page(){
if($_SESSION['logined']['status'] == FALSE){
header("Location: http://".$_SERVER['HTTP_HOST'].'/logIn/');
}
if($_GET['dataAction'] == 'processTikets'){
print_r(json_encode($this->tiketsTableAction()));
exit();
}
if(in_array($_SESSION['logined']['rights'], array('intern','internModerator'))){
$this->getInternContent();
exit;
}
if((isset($_GET['param_1']) && ($_GET['param_1'] == 'archive')) &&
in_array($_SESSION['logined']['rights'], array('admin','manager'))){
$this->smarty->assign('title', "Выдано - рабочая зона");
$this->smarty->display('header.tpl');
$this->smarty->assign('logined', $_SESSION['logined']);
$this->smarty->display('work/navbar.tpl');
$this->json = json_decode(file_get_contents('config.json'), true);
$this->smarty->assign('config', $this->json);
$clients = $this->getArrFromTableBYQuery("
SELECT
cl.id,cl.surname,cl.firstname,cl.middlename,cl.email,cl.phone,cl.password,cls.id as
clientStatus
FROM clients as cl
join clientStatuses as cls on cl.clientStatus = cls.id");
$this->smarty->assign('clients', $clients);
$this->smarty->assign('equipments', $this->getArrFromTableBYQuery("SELECT
id,equipmentname FROM typesofequipment"));
$this->smarty->assign('toDoListArr', $this->getArrFromTableBYQuery("
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 = 'archive' ORDER BY tdl.taskDate ASC"));
$this->smarty->assign('tasksListArr', $this->getArrFromTableBYQuery("
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 = 'archive' ORDER BY tdl.taskDate
ASC"));
$this->smarty->assign('theTikets', $this->getTikets('archive'));
$this->smarty->display('work/workspace_archive.tpl');
$this->smarty->display('work/footer.tpl');
}elseif(isset($_GET['param_1']) && $_GET['param_1'] == 'completed'){
119
$typeFlag = $_GET['param_1'];
$this->smarty->assign('title', "Готовые к выдаче заказы - рабочая зона");
$this->smarty->display('header.tpl');
$this->smarty->assign('logined', $_SESSION['logined']);
$this->smarty->assign('typeFlag', $typeFlag);
$this->smarty->display('work/navbar.tpl');
$this->json = json_decode(file_get_contents('config.json'), true);
$this->smarty->assign('config', $this->json);
$this->smarty->assign('clients', $this->getArrFromTableBYQuery("SELECT
id,surname,firstname,middlename,email,phone,secondphone,password FROM clients"));
$this->smarty->assign('equipments', $this->getArrFromTableBYQuery("SELECT
id,equipmentname FROM typesofequipment"));
$this->smarty->assign('toDoListArr', $this->getArrFromTableBYQuery("
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 = 'completed' ORDER BY tdl.taskDate ASC"));
$this->smarty->assign('tasksListArr', $this->getArrFromTableBYQuery("
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 = 'completed' ORDER BY tdl.taskDate
ASC"));
$this->smarty->display('work/workspace_completed.tpl');
$this->smarty->display('work/footer.tpl');
}elseif(isset($_GET['param_1']) && $_GET['param_1'] == 'bolt'){
$this->smarty->assign('title', "Болты и ждуны - рабочая зона");
$this->smarty->display('header.tpl');
$this->smarty->assign('logined', $_SESSION['logined']);
$this->smarty->display('work/navbar.tpl');
$this->json = json_decode(file_get_contents('config.json'), true);
$this->smarty->assign('config', $this->json);
$this->smarty->display('work/workspace_waiting+bolt.tpl');
$this->smarty->display('work/footer.tpl');
}else{
$this->smarty->assign('title', "Рабочая зона");
$this->smarty->display('header.tpl');
$this->smarty->assign('logined', $_SESSION['logined']);
$this->smarty->display('work/navbar.tpl');
$this->json = json_decode(file_get_contents('config.json'), true);
$this->smarty->assign('config', $this->json);
$this->smarty->assign('masters', $this->getArrFromTableBYQuery("SELECT mng.id,
mng.synonym, mng.rights FROM managers as mng WHERE mng.rights <> 'noAccess'"));
if(in_array($_SESSION['logined']['rights'], array('admin','manager'))){
$this->smarty->assign('newUserPassword', $this->getPassword());
$clients['data'] = $this->getArrFromTableBYQuery("
120
SELECT
cl.id,cl.surname,cl.firstname,cl.middlename,cl.email,cl.phone,cl.password,cls.id as
clientStatus
FROM clients as cl
join clientStatuses as cls on cl.clientStatus = cls.id");
foreach ($this->json['clients']['columns'] as $jsnKey => $jsnVal){
if(!isset($clients['refs'][$jsnKey]) && $jsnVal['colType'] == 'select'){
$clients['refs'][$jsnKey] = $this->getArrFromTableBYQuery("SELECT
".$jsnVal['selectColumns']." FROM ".$jsnVal['relatedTable']);
}
}
$this->smarty->assign('clients', $clients);
unset($clients);
$this->smarty->assign('smsTemlates', $this->getArrFromTableBYQuery("SELECT
id,templateText FROM smsTemplates"));
}elseif(in_array($_SESSION['logined']['rights'], array('remontnik'))){
$this->smarty->assign('clients', $this->getArrFromTableBYQuery("SELECT
id,surname,firstname,middlename,email,phone,secondphone,password FROM clients"));
}elseif(in_array($_SESSION['logined']['rights'], array('moderator'))){
$this->smarty->assign('newUserPassword', $this->getPassword());
$clients['data'] = $this->getArrFromTableBYQuery("
SELECT
cl.id,cl.surname,cl.firstname,cl.middlename,cl.email,cl.phone,cl.password,cls.id as
clientStatus
FROM clients as cl
join clientStatuses as cls on cl.clientStatus = cls.id");
foreach ($this->json['clients']['columns'] as $jsnKey => $jsnVal){
if(!isset($clients['refs'][$jsnKey]) && $jsnVal['colType'] == 'select'){
$clients['refs'][$jsnKey] = $this->getArrFromTableBYQuery("SELECT
".$jsnVal['selectColumns']." FROM ".$jsnVal['relatedTable']);
}
}
$this->smarty->assign('clients', $clients);
unset($clients);
}
$this->smarty->assign('toDoListArr', $this->getArrFromTableBYQuery("
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 = 'main' ORDER BY tdl.taskDate ASC"));
$this->smarty->assign('tasksListArr', $this->getArrFromTableBYQuery("
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 = 'main' ORDER BY tdl.taskDate ASC"));
121
$this->smarty->assign('theTikets', $this->getTikets('default'));
$this->smarty->display('work/workspace.tpl');
$this->smarty->display('work/footer.tpl');
}
}
public function getInternContent(){
if(isset($_GET['param_1']) && $_GET['param_1'] == 'bolt'){
$this->smarty->assign('title', "Болты и ждуны - рабочая зона");
$this->smarty->display('header.tpl');
$this->smarty->assign('logined', $_SESSION['logined']);
$this->smarty->display('work/navbar.tpl');
$this->json = json_decode(file_get_contents('config.json'), true);
$this->smarty->assign('config', $this->json);
$this->smarty->display('work/workspace_waiting+bolt.tpl');
$this->smarty->display('work/footer.tpl');
}else{
$this->smarty->assign('title', "Рабочая зона");
$this->smarty->display('header.tpl');
$this->smarty->assign('logined', $_SESSION['logined']);
$this->smarty->display('work/navbar.tpl');
$this->json = json_decode(file_get_contents('config.json'), true);
$this->smarty->assign('config', $this->json);
$this->smarty->assign('masters', $this->getArrFromTableBYQuery("SELECT mng.id,
mng.synonym, mng.rights FROM managers as mng WHERE mng.rights <> 'noAccess'"));
$this->smarty->assign('newUserPassword', $this->getPassword());
$clients['data'] = $this->getArrFromTableBYQuery("
SELECT
cl.id,cl.surname,cl.firstname,cl.middlename,cl.email,cl.phone,cl.password,cls.id as
clientStatus
FROM clients as cl
join clientStatuses as cls on cl.clientStatus = cls.id");
foreach ($this->json['clients']['columns'] as $jsnKey => $jsnVal){
if(!isset($clients['refs'][$jsnKey]) && $jsnVal['colType'] == 'select'){
$clients['refs'][$jsnKey] = $this->getArrFromTableBYQuery("SELECT
".$jsnVal['selectColumns']." FROM ".$jsnVal['relatedTable']);
}
}
$this->smarty->assign('clients', $clients);
unset($clients);
$this->smarty->assign('toDoListArr', $this->getArrFromTableBYQuery("
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 = 'main' ORDER BY tdl.taskDate ASC"));
$this->smarty->assign('tasksListArr', $this->getArrFromTableBYQuery("
SELECT
tdl.id,tdl.taskText,tdl.authorId,tdl.taskDate,tdl.target,mg.synonym as taskAuthor
122
FROM tasksList as tdl join managers as mg on tdl.authorID =
mg.id
WHERE tdl.target = 'main' ORDER BY tdl.taskDate ASC"));
$this->smarty->assign('theTikets', $this->getTikets('default'));
$this->smarty->display('work/workspace.tpl');
$this->smarty->display('work/footer.tpl');
}
}
}
?>
Скрипт JS.
function fixUserByPhone(id){
$.ajax({
url: '/create/',
type: 'POST',
data: {
userDataFinder: 'Get user info',
id: id
},
beforeSend: function(){
$('#loader').fadeIn();
},
success: function(data){
res = $.parseJSON(data);
$.each(res,function(key,value){
if(key == 'clientStatus'){
$('#' + key + '_new').attr('value', (value == "0") ? "Не проверен" : (value == "1") ?
"Молодец" : "Нe молодец");
$('#' + key + '_new').attr("style", (value == "0") ? "background-color:#fff
!important; padding-left: 5px;padding-right: 5px;" : (value == "1") ? "background-
color:rgb(13,255,0) !important; padding-left: 5px;padding-right: 5px;" : "background-
color:rgb(216, 0, 40) !important; color: #fff; padding-left: 5px;padding-right: 5px;");
}else if(key == 'creditCardNum'){
$('#haveIlliCard_new').attr('value', (value == "") ? "Нет карты" : value);
$('#haveIlliCard_new').attr("style", (value == "") ? "background-color:rgb(216, 0,
40) !important; color: #fff; padding-left: 5px;padding-right: 5px;" : "background-
color:rgb(13,255,0) !important;padding-left: 5px;padding-right: 5px;");
}else if(key!='id'){
$('#'+key+'_new').attr('value',value);
}else{
$("select#clientFinder").val(value);
$("#clientFinder").trigger("liszt:updated");
$("#clientFinder").trigger("chosen:updated");
$("select#clientFinder").val(value);
}
123
});
},
error: function(data){
res = $.parseJSON(data);
},
complete: function(){
$('#loader').delay(500).fadeOut();
}
});
}
function dateTimeToTiketDate(theDate){
var timestamp = new Date(Date.parse(theDate));
var date = new Date();
var restDate = '';
var monthNames = ["Января", "Февраля", "Марта", "Апреля", "Мая", "Июня",
"Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря"
];
date.setTime(timestamp);
restDate += date.getDay();
restDate += ' '+monthNames[date.getMonth()];
restDate += ' '+date.getFullYear()+'г.';
return restDate;
}
function getTableColColor(valData){
switch(valData) {
case '1':
return 'background-color: #20c600 !important';
case '3':
return 'background-color: #38761d !important';
case '4':
return 'background-color: #0075c6 !important';
case '6':
return 'background-color: #939393 !important';
case '8':
return 'background-color: #ef0000 !important';
case '9':
return 'background-color: #90c9d6 !important';
case '10':
return 'background-color: #ffb900 !important';
case '11':
return 'background-color: #f7630c !important';
case '14':
return 'background-color: #e2008c !important';
case '15':
return 'background-color: #c22000 !important';
case '16':
return 'background-color: #f7630c !important';
124
case '17':
return 'background-color: #ef0000 !important';
case '18':
return 'background-color: #20c600 !important';
case '19':
return 'background-color: #38761d !important';
case '20':
return 'background-color: #f7630c !important';
}
}
function getClientTableRowColor(valData){
switch(valData) {
case '0':
return 'background-color:rgb(255, 255, 255) !important';
case '1':
return 'background-color:rgb(13,255,0) !important';
case '2':
return 'background-color:rgb(216, 0, 40) !important';
}
}
$(document).ready(function(){
$("input[name=stagePrice]").on('keyup', function(){
console.log('awdawd');
$(this).siblings('select[name=serviceTypeId]').removeAttr('required');
if($(this).val() > 0){
$(this).siblings('select[name=serviceTypeId]').attr('required', 'required');
}
});
$(document).on("submit", ".addNewStage, .addSystemStage", function (e){
e.preventDefault();
e.stopPropagation();
var data = new FormData();
var thisForm = $(this);
var formData = thisForm.serializeArray();
var formButton = $(document).find(thisForm.find("button[type='submit']")[0]);
formData.push({'name': formButton.attr('name'), 'value': formButton.val()});
$.each(formData, function(i, datas){
data.append(datas.name, datas.value);
});
var formFileInput = $($(this).find("input[type='file']")[0].files);
console.log(formFileInput);
var ins = formFileInput.length;
if(ins != 0){
for (var x = 0; x < ins; x++) {
data.append("files[]", formFileInput[x]);
}
}
125
$.ajax({
url: '/contentEditor/',
type: 'POST',
data : data,
cache : false,
dataType : 'html',
processData : false,
contentType : false,
beforeSend: function(){
$('#loader').fadeIn();
},
success: function(data){
if(data != 'Не получилосъ'){
$("#"+$(document).find(thisForm).attr('stpsTblID')).empty();
$("#"+$(document).find(thisForm).attr('stpsTblID')).append(data);
$(document).find('.prev').empty();
$(document).find(thisForm)[0].reset();
$("select[name=serviceTypeId]").removeAttr('required');
}else{
console.log('Хз, что могло пойти не так. Но что-то пошло не так. ');
}
},
error: function(data){
console.log(data);
},
complete: function(){
$('#loader').delay(500).fadeOut();
}
});
return false;
});
$(document).on("submit", ".addPayment", function (e){
e.preventDefault();
e.stopPropagation();
let thisForm = $(this);
$.ajax({
url: '/contentEditor/',
type: 'POST',
data : thisForm.serializeArray(),
cache : false,
dataType : 'html',
processData : false,
contentType : false,
beforeSend: function(){
$('#loader').fadeIn();
},
success: function(data){
if(data !== 'Не получилосъ'){

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)