Диплом: Автоматизация процесса взаимодействия с клиентами (CRM) на примере агенства недвижимости

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
116
list: {
type: Array
},
add: Function,
pkey: String,
checkList: Function
}
}
</script>
Leads.js
import axios from 'axios'
export default {
state: {
leads: [],
states: [],
fullInfoLead: []
},
getters: {
getLeads(state) {
return state.leads;
},
getStates(state) {
return state.states;
},
getLead(state) {
return state.fullInfoLead;
}
},
mutations: {
setLeads(state, payload) {
state.leads = payload;
},
setStates(state, payload) {
state.states = payload;
},
setLead(state,payload) {
state.fullInfoLead = payload;
},
setComment(state, payload) {
state.fullInfoLead.comments.push(payload);
},
setObject(state,payload) {
state.fullInfoLead.objects.push(payload);
}
},
117
actions: {
async getLeads({commit}) {
commit('setError', "");
await axios.get('/lead/get')
.then(response => {
commit('setLeads', response.data);
})
.catch(error => {
commit('setError', error.response.data)
throw error
})
},
async getStates({commit}) {
commit('setError', "");
await axios.get('/lead/state')
.then(response => {
commit('setStates', response.data);
})
.catch(error => {
commit('setError', error.response.data)
throw error
})
},
async addLeads({commit, dispatch}, payload) {
commit('setError', "");
await axios.post('/lead/add', payload)
.then(response => {
if (response.data.success) {
dispatch('getLeads');
console.log(response.data.success);
} else {
commit('setError', response.data)
}
})
.catch(error => {
commit('setError', error.response.data)
throw error
})
},
async getLead({commit}, payload) {
await axios.post('/lead/getFull', payload)
.then(response => {
commit('setLead', response.data);
})
.catch(error => {
commit('setError', error.response.data)
118
throw error
})
},
async addComment({commit}, payload) {
await axios.post('/lead/addComment', payload)
.then(response => {
commit('setComment', response.data);
})
.catch(error => {
commit('setError', error.response.data);
throw error
})
},
async addObjectLead({commit}, payload) {
await axios.post('/lead/addObject', payload)
.then(response => {
commit('setObject', response.data);
})
.catch(error => {
commit('setError', error.response.data);
throw error
})
},
updLead({commit}, payload) {
commit('setError', "");
axios.post('/lead/update', payload)
.then(response => {
if (response.data.success) {
console.log(response.data.success);
} else {
commit('setError', response.data)
}
})
.catch(error => {
commit('setError', error.response.data)
throw error
})
}
}
}
LeadController.php
<?php
namespace controllers;
119
use BL\LeadRepository;
use core\Controller;
class LeadController extends Controller
{
private $leadRepository;
public function __construct()
{
parent::__construct();
$this->leadRepository = new LeadRepository();
}
public function Get()
{
Send($this->leadRepository->Get());
}
public function Add()
{
Send(["success" => true, "msg" => $this->leadRepository->Add()]);
}
public function State()
{
Send($this->leadRepository->GetState());
}
public function Update()
{
Send(["success" => true, $this->leadRepository->UpdateLead()]);
}
public function GetFull()
{
$request = $this->Request();
Send($this->leadRepository->GetFull($request));
}
public function AddComment()
{
$request = $this->Request();
Send($this->leadRepository->AddComment($request));
}
public function GetAddressObject()
{
120
$request = $this->Request();
Send($this->leadRepository->GetAddressObject($request->address));
}
public function AddObject()
{
$request = $this->Request();
Send($this->leadRepository->AddObject($request));
}
}
LeadRepository.php
<?php
namespace BL;
use core\BaseRepository;
class LeadRepository extends BaseRepository
{
public function Get()
{
$filepath = __DIR__ . "/sql/leads/getLeads.sql";
return $this->db->queryRowsFile($filepath);
}
public function Add()
{
$request = json_decode(file_get_contents('php://input'));
$clientReposity = new ClientRepository();
$clientNewId = $clientReposity->Add($request);
$params = [
"client_id" => $clientNewId
];
return $this->db->insert('ro_leads', $params);
}
public function GetState()
{
$fileparh = __DIR__. "/sql/leads/getState.sql";
return $this->db->queryRowsFile($fileparh);
}
public function UpdateLead()
{
121
$request = $this->Request();
$params = [
":step_id" => $request->newStep,
":id" => $request->leadId
];
return $this->db->updateParams('ro_leads',["step_id" => ":step_id"], "id=:id", $params);
}
public function GetFull(int $id)
{
$params = [
":id" => $id
];
$sqlLead = __DIR__ . "/sql/leads/getLead.sql";
$sqlObjects = __DIR__ . "/sql/leads/getObjectsLead.sql";
$sqlComments = __DIR__ . "/sql/leads/getCommentsLead.sql";
$lead = $this->db->queryRowFile($sqlLead, $params);
$lead["objects"] = $this->db->queryRowsFile($sqlObjects, $params);
$lead["comments"] = $this->db->queryRowsFile($sqlComments, $params);
return $lead;
}
public function AddComment($commentInfo)
{
$params = [
"leads_id" => $commentInfo->leadId,
"comment_name" => $commentInfo->textComment
];
$newComment = $this->db->insert('ro_leads_comment', $params);
return $this->db->where('ro_leads_comment', "id = $newComment", true, "comment_name, creation_date");
}
public function GetAddressObject($address)
{
$params = [
":full_address" => "%$address%"
];
$sql = __DIR__ ."/sql/leads/getAddressObject.sql";
return $this->db->queryRowsFile($sql, $params);
}
public function AddObject($obj)
{
$params = [
122
"object_id" => $obj->object_id,
"leads_id" => $obj->leads_id
];
$newObject = $this->db->insert('ro_leads_object', $params);
$sql = __DIR__ ."/sql/leads/getObjectLead.sql";
return $this->db->queryRowFile($sql,[":id" => $newObject]);
}
}
getLeads.sql
select
leadId,
surname,
first_name,
patronymic,
creation_date,
countComment,
countObject,
step_id
from
ro_leads_cards_view

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

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