379 lines
14 KiB
PHP
379 lines
14 KiB
PHP
<?php
|
|
|
|
namespace App\Models\Integrate;
|
|
|
|
use CodeIgniter\Model;
|
|
use CodeIgniter\Database\RawSql;
|
|
|
|
class IntegrateModel extends Model
|
|
{
|
|
protected $zenith;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->zenith = \Config\Database::connect();
|
|
}
|
|
|
|
public function getEventLead($searchParams)
|
|
{
|
|
if (!empty($searchParams['sdate'])) {
|
|
$searchSDate = (new \DateTime($searchParams['sdate']))->format('Y-m-d');
|
|
}
|
|
if (!empty($searchParams['edate'])) {
|
|
$searchEDate = (new \DateTime($searchParams['edate']))->format('Y-m-d');
|
|
}
|
|
|
|
$builder = $this->zenith->table('event_leads as el');
|
|
$builder->select("
|
|
info.seq as info_seq,
|
|
adv.name AS advertiser,
|
|
med.media, adv.is_stop,
|
|
info.description AS description,
|
|
info.partner_company as company,
|
|
info.another_url as another_url,
|
|
dec_data(el.phone) as dec_phone,
|
|
el.seq,
|
|
el.name,
|
|
el.reg_date,
|
|
el.gender,
|
|
el.age,
|
|
el.branch,
|
|
el.addr,
|
|
el.email,
|
|
el.site,
|
|
el.add1,
|
|
el.add2,
|
|
el.add3,
|
|
el.add4,
|
|
el.add5,
|
|
el.add6,
|
|
el.status,
|
|
count(lm.leads_seq) as memo_cnt,
|
|
GROUP_CONCAT(
|
|
DISTINCT CONCAT(lm.memo,'[',lm.username,']','[',lm.reg_date,']')
|
|
ORDER BY lm.reg_date DESC
|
|
SEPARATOR '\n'
|
|
) AS memos
|
|
");
|
|
$builder->join('event_information as info', "info.seq = el.event_seq", 'left');
|
|
$builder->join('event_advertiser as adv', "info.advertiser = adv.seq AND adv.is_stop = 0", 'left');
|
|
$builder->join('event_media as med', 'info.media = med.seq', 'left');
|
|
$builder->join('event_leads_memo as lm', 'el.seq = lm.leads_seq', 'left');
|
|
|
|
if(!auth()->user()->inGroup('superadmin', 'admin', 'developer', 'user')){
|
|
$builder->join('companies_users as cu', "adv.company_seq = cu.company_id", 'left');
|
|
$builder->where('cu.user_id', auth()->user()->id);
|
|
}
|
|
|
|
$builder->where('el.is_deleted', 0);
|
|
$builder->where('el.reg_date >=', $searchSDate. " 00:00:00");
|
|
$builder->where('el.reg_date <=', $searchEDate. " 23:59:59");
|
|
|
|
$builder->groupBy(['el.seq','lm.leads_seq'], true);
|
|
$orderBy = [];
|
|
if(!empty($data['order'])) {
|
|
foreach($data['order'] as $row) {
|
|
$col = $data['columns'][$row['column']]['data'];
|
|
if($col) $orderBy[] = "{$col} {$row['dir']}";
|
|
}
|
|
}
|
|
$orderBy[] = "seq DESC";
|
|
$builder->orderBy(implode(",", $orderBy),'',true);
|
|
// echo ($builder->getCompiledSelect()); exit;
|
|
// 결과 반환
|
|
$result = $builder->get()->getResultArray();
|
|
|
|
return [
|
|
'data' => $result,
|
|
];
|
|
}
|
|
|
|
public function getEventLeadCount($data)
|
|
{
|
|
$builder = $this->zenith->table('event_leads as el');
|
|
$builder->select("
|
|
el.seq,
|
|
el.status,
|
|
adv.name as advertiser,
|
|
med.media as media,
|
|
info.description as description,
|
|
info.partner_company as company
|
|
");
|
|
$builder->join('event_information as info', "info.seq = el.event_seq", 'left');
|
|
$builder->join('event_advertiser as adv', "info.advertiser = adv.seq AND adv.is_stop = 0", 'left');
|
|
$builder->join('event_media as med', 'info.media = med.seq', 'left');
|
|
|
|
if(!auth()->user()->inGroup('superadmin', 'admin', 'developer', 'user')){
|
|
$builder->join('companies_users as cu', "adv.company_seq = cu.company_id", 'left');
|
|
$builder->where('cu.user_id', auth()->user()->id);
|
|
}
|
|
|
|
$builder->where('el.is_deleted', 0);
|
|
$builder->where('el.reg_date >=', $data['sdate']);
|
|
$builder->where('el.reg_date <=', $data['edate']);
|
|
|
|
$filteredBuilder = clone $builder;
|
|
|
|
if(!empty($data['stx'])){
|
|
$builder->groupStart();
|
|
$builder->like('adv.name', $data['stx']);
|
|
$builder->orLike('info.seq', $data['stx']);
|
|
$builder->orLike('med.media', $data['stx']);
|
|
$builder->orLike('info.description', $data['stx']);
|
|
$builder->orLike('el.name', $data['stx']);
|
|
$builder->orLike('el.branch', $data['stx']);
|
|
$builder->orLike('el.add1', $data['stx']);
|
|
$builder->orLike('el.add2', $data['stx']);
|
|
$builder->orLike('el.add3', $data['stx']);
|
|
$builder->orLike('el.add4', $data['stx']);
|
|
$builder->orLike('el.add5', $data['stx']);
|
|
$builder->groupEnd();
|
|
}
|
|
|
|
if(!empty($data['company'])){
|
|
$company = explode("|",$data['company']);
|
|
$index = array_search('리스타', $company);
|
|
if($index !== false){
|
|
$company[$index] = '';
|
|
}
|
|
$builder->whereIn('info.partner_company', $company);
|
|
}
|
|
|
|
if(!empty($data['advertiser'])){
|
|
$builder->whereIn('adv.name', explode("|",$data['advertiser']));
|
|
}
|
|
|
|
if(!empty($data['media'])){
|
|
$builder->whereIn('med.media', explode("|",$data['media']));
|
|
}
|
|
|
|
if(!empty($data['description'])){
|
|
$builder->whereIn('info.description', explode("|",$data['description']));
|
|
}
|
|
if($builder == $filteredBuilder) {
|
|
$filteredResult = $builder->get()->getResultArray();
|
|
$noFilteredResult = $filteredResult;
|
|
} else {
|
|
$filteredResult = $builder->get()->getResultArray();
|
|
$noFilteredResult = $filteredBuilder->get()->getResultArray();
|
|
}
|
|
|
|
$result = [
|
|
'filteredResult' => $filteredResult,
|
|
'noFilteredResult' => $noFilteredResult
|
|
];
|
|
|
|
return $result;
|
|
}
|
|
|
|
public function getEventLeadRow($data)
|
|
{
|
|
$builder = $this->zenith->table('event_leads as el');
|
|
$builder->select("
|
|
el.seq, el.event_seq, el.site, el.name, DEC_DATA(el.phone) as phone, el.age, el.gender, el.branch, el.addr, el.email, el.add1, el.add2, el.add3, el.add4, el.add5, el.add6, el.status, el.ip, el.reg_date,
|
|
adv.name as advertiser,
|
|
med.media as media,
|
|
info.description as description,
|
|
info.partner_company as company,
|
|
count(lm.leads_seq) as memo_cnt,
|
|
GROUP_CONCAT(
|
|
DISTINCT CONCAT(lm.memo,'[',lm.username,']','[',lm.reg_date,']')
|
|
ORDER BY lm.reg_date DESC
|
|
SEPARATOR '\n'
|
|
) AS memos
|
|
");
|
|
$builder->join('event_information as info', "info.seq = el.event_seq", 'left');
|
|
$builder->join('event_advertiser as adv', "info.advertiser = adv.seq AND adv.is_stop = 0", 'left');
|
|
$builder->join('event_media as med', 'info.media = med.seq', 'left');
|
|
$builder->join('event_leads_memo as lm', 'el.seq = lm.leads_seq', 'left');
|
|
|
|
if(!auth()->user()->inGroup('superadmin', 'admin', 'developer', 'user')){
|
|
$builder->join('companies_users as cu', "adv.company_seq = cu.company_id", 'left');
|
|
$builder->where('cu.user_id', auth()->user()->id);
|
|
}
|
|
|
|
$builder->where('el.is_deleted', 0);
|
|
$builder->where('el.reg_date >=', $data['sdate']." 00:00:00");
|
|
$builder->where('el.reg_date <=', $data['edate']." 23:59:59");
|
|
|
|
if(!empty($data['stx'])){
|
|
$builder->groupStart();
|
|
$builder->like('adv.name', $data['stx']);
|
|
$builder->orLike('info.seq', $data['stx']);
|
|
$builder->orLike('med.media', $data['stx']);
|
|
$builder->orLike('info.description', $data['stx']);
|
|
$builder->orLike('el.name', $data['stx']);
|
|
$builder->orLike('el.branch', $data['stx']);
|
|
$builder->orLike('el.add1', $data['stx']);
|
|
$builder->orLike('el.add2', $data['stx']);
|
|
$builder->orLike('el.add3', $data['stx']);
|
|
$builder->orLike('el.add4', $data['stx']);
|
|
$builder->orLike('el.add5', $data['stx']);
|
|
$builder->groupEnd();
|
|
}
|
|
|
|
if(!empty($data['company'])){
|
|
$company = explode("|",$data['company']);
|
|
$index = array_search('리스타', $company);
|
|
if($index !== false){
|
|
$company[$index] = '';
|
|
}
|
|
$builder->whereIn('info.partner_company', $company);
|
|
}
|
|
|
|
if(!empty($data['advertiser'])){
|
|
$builder->whereIn('adv.name', explode("|",$data['advertiser']));
|
|
}
|
|
|
|
if(!empty($data['media'])){
|
|
$builder->whereIn('med.media', explode("|",$data['media']));
|
|
}
|
|
|
|
if(!empty($data['description'])){
|
|
$builder->whereIn('info.description', explode("|",$data['description']));
|
|
}
|
|
$builder->groupBy(['el.seq','lm.leads_seq'], true);
|
|
$builder->orderBy('el.seq DESC',true);
|
|
|
|
// echo $builder->getCompiledSelect(); exit;
|
|
|
|
$result = $builder->get()->getResultArray();
|
|
|
|
return $result;
|
|
}
|
|
|
|
public function saveDownloadData($data)
|
|
{
|
|
$builder = $this->zenith->table('event_leads_download');
|
|
$builder->insert($data);
|
|
}
|
|
|
|
|
|
public function getStatusCount($data)
|
|
{
|
|
$builder = $this->zenith->table('event_leads as el');
|
|
$builder->select("
|
|
COUNT(CASE WHEN el.status=1 then 1 end) as 인정,
|
|
COUNT(CASE WHEN el.status=2 then 1 end) as 중복,
|
|
COUNT(CASE WHEN el.status=3 then 1 end) as 성별불량,
|
|
COUNT(CASE WHEN el.status=4 then 1 end) as 나이불량,
|
|
COUNT(CASE WHEN el.status=5 then 1 end) as 콜불량,
|
|
COUNT(CASE WHEN el.status=6 then 1 end) as 번호불량,
|
|
COUNT(CASE WHEN el.status=7 then 1 end) as 테스트,
|
|
COUNT(CASE WHEN el.status=8 then 1 end) as 이름불량,
|
|
COUNT(CASE WHEN el.status=9 then 1 end) as 지역불량,
|
|
COUNT(CASE WHEN el.status=10 then 1 end) as 업체불량,
|
|
COUNT(CASE WHEN el.status=11 then 1 end) as 미성년자,
|
|
COUNT(CASE WHEN el.status=12 then 1 end) as 본인아님,
|
|
COUNT(CASE WHEN el.status=13 then 1 end) as 쿠키중복,
|
|
COUNT(CASE WHEN el.status=99 then 1 end) as 확인");
|
|
$builder->join('event_information as info', "info.seq = el.event_seq", 'left');
|
|
$builder->join('event_advertiser as adv', "info.advertiser = adv.seq AND adv.is_stop = 0", 'left');
|
|
$builder->join('event_media as med', 'info.media = med.seq', 'left');
|
|
|
|
if(!auth()->user()->inGroup('superadmin', 'admin', 'developer', 'user')){
|
|
$builder->join('companies_users as cu', "adv.company_seq = cu.company_id", 'left');
|
|
$builder->where('cu.user_id', auth()->user()->id);
|
|
}
|
|
|
|
$builder->where('el.is_deleted', 0);
|
|
$builder->where('el.reg_date >=', $data['sdate']);
|
|
$builder->where('el.reg_date <', date('Y-m-d', strtotime($data['edate'].' +1 day')));
|
|
|
|
if(!empty($data['stx'])){
|
|
$builder->groupStart();
|
|
$builder->like('adv.name', $data['stx']);
|
|
$builder->orLike('info.seq', $data['stx']);
|
|
$builder->orLike('med.media', $data['stx']);
|
|
$builder->orLike('info.description', $data['stx']);
|
|
$builder->orLike('el.name', $data['stx']);
|
|
$builder->orLike('el.branch', $data['stx']);
|
|
$builder->orLike('el.add1', $data['stx']);
|
|
$builder->orLike('el.add2', $data['stx']);
|
|
$builder->orLike('el.add3', $data['stx']);
|
|
$builder->orLike('el.add4', $data['stx']);
|
|
$builder->orLike('el.add5', $data['stx']);
|
|
$builder->groupEnd();
|
|
}
|
|
|
|
if(!empty($data['company'])){
|
|
$company = explode("|",$data['company']);
|
|
$index = array_search('리스타', $company);
|
|
if($index !== false){
|
|
$company[$index] = '';
|
|
}
|
|
$builder->whereIn('info.partner_company', $company);
|
|
}
|
|
|
|
if(!empty($data['advertiser'])){
|
|
$builder->whereIn('adv.name', explode("|",$data['advertiser']));
|
|
}
|
|
|
|
if(!empty($data['media'])){
|
|
$builder->whereIn('med.media', explode("|",$data['media']));
|
|
}
|
|
|
|
if(!empty($data['description'])){
|
|
$builder->whereIn('info.description', explode("|",$data['description']));
|
|
}
|
|
$result = $builder->get()->getRowArray();
|
|
|
|
return $result;
|
|
}
|
|
|
|
public function getMemo($data)
|
|
{
|
|
$builder = $this->zenith->table('event_leads_memo');
|
|
$builder->select("*");
|
|
$builder->where("leads_seq", $data['seq']);
|
|
$builder->orderBy("reg_date", "desc");
|
|
$result = $builder->get()->getResultArray();
|
|
|
|
return $result;
|
|
}
|
|
|
|
public function addMemo($data) {
|
|
$builder = $this->zenith->table('event_leads');
|
|
$builder->select("event_seq");
|
|
$builder->where("seq", $data['leads_seq']);
|
|
$row = $builder->get()->getRowArray();
|
|
$data['event_seq'] = $row['event_seq'];
|
|
if(!$data['event_seq']) return null;
|
|
$data['reg_date'] = date('Y-m-d H:i:s');
|
|
$data['username'] = auth()->user()->username;
|
|
$this->zenith->transStart();
|
|
$builder = $this->zenith->table('event_leads_memo');
|
|
$builder->set('leads_seq', $data['leads_seq']);
|
|
$builder->set('event_seq', $data['event_seq']);
|
|
$builder->set('username', $data['username']);
|
|
$builder->set('memo', $data['memo']);
|
|
$builder->set('reg_date', $data['reg_date']);
|
|
$result = $builder->insert();
|
|
$insertId = $this->zenith->insertID();
|
|
$this->zenith->transComplete();
|
|
|
|
|
|
$result = [
|
|
'result' => $result,
|
|
'data' => [$data]
|
|
];
|
|
return $result;
|
|
}
|
|
|
|
public function setStatus($data) {
|
|
if(!$data['seq']) return null;
|
|
$this->zenith->transStart();
|
|
$builder = $this->zenith->table('event_leads');
|
|
$builder->set('status', $data['status']);
|
|
$builder->where('seq', $data['seq']);
|
|
$result = $builder->update();
|
|
$this->zenith->transComplete();
|
|
|
|
$result = [
|
|
'result' => $result,
|
|
'data' => $data
|
|
];
|
|
return $result;
|
|
}
|
|
}
|