init
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Api;
|
||||
|
||||
use CodeIgniter\Database\RawSql;
|
||||
use CodeIgniter\Model;
|
||||
|
||||
class AdLeadModel extends Model
|
||||
{
|
||||
protected $facebook, $google, $kakao, $zenith;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->facebook = \Config\Database::connect('facebook');
|
||||
$this->google = \Config\Database::connect('google');
|
||||
$this->kakao = \Config\Database::connect('kakao');
|
||||
$this->zenith = \Config\Database::connect();
|
||||
}
|
||||
|
||||
public function getBizFormUserResponse()
|
||||
{
|
||||
$sql = "SELECT ur.*, mc.code, mc.name, mc.id
|
||||
FROM mm_creative AS mc
|
||||
JOIN mm_bizform_user_response AS ur ON mc.id = ur.creative_id
|
||||
WHERE ur.send_time IS NULL
|
||||
ORDER BY ur.create_time ASC";
|
||||
|
||||
$result = $this->kakao->query($sql);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getFBAdLead()
|
||||
{
|
||||
$sql = "SELECT * FROM fb_ad AS ad
|
||||
JOIN fb_ad_lead as LE on ad.ad_id = LE.ad_id
|
||||
WHERE LE.created_time >= '2018-05-03 10:20:00' and ad.ad_name REGEXP '#[0-9]+' and (LE.send_time IS NULL)
|
||||
ORDER BY LE.created_time ";
|
||||
|
||||
$result = $this->facebook->query($sql)->getResultArray();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getGoogleAdLead()
|
||||
{
|
||||
}
|
||||
|
||||
public function insertEventLeadFacebook($row)
|
||||
{
|
||||
$is_added = false;
|
||||
$age = (integer)$row['age'] ?? (integer)0;
|
||||
$sql = "SELECT * FROM event_leads WHERE event_seq = '{$row['event_seq']}' AND site='{$row['site']}' AND name='{$row['name']}' AND gender='{$row['gender']}' AND age='{$age}' AND phone=enc_data('{$row['phone']}') AND add1='{$row['add1']}' AND add2='{$row['add2']}' AND add3='{$row['add3']}' AND add4='{$row['add4']}' AND add5='{$row['add5']}' AND addr='{$row['addr']}' AND lead_id='{$row['id']}'";
|
||||
$result = $this->zenith->query($sql);
|
||||
$is_added = count($result->getResultArray());
|
||||
if (!$is_added) {
|
||||
$row['name'] = $this->zenith->escape($row['name']);
|
||||
$sql = "INSERT INTO event_leads SET event_seq = '{$row['event_seq']}', site='{$row['site']}', name={$row['name']}, gender='{$row['gender']}', age='{$age}', phone=ENC_DATA('{$row['phone']}'), add1='{$row['add1']}', add2='{$row['add2']}', add3='{$row['add3']}', add4='{$row['add4']}', add5='{$row['add5']}', addr='{$row['addr']}', reg_date='{$row['reg_date']}', is_deleted=0, lead_id='{$row['id']}', status=0, is_encryption=1, reg_timestamp=UNIX_TIMESTAMP(NOW())";
|
||||
$result = $this->zenith->query($sql);
|
||||
if ($result) {
|
||||
$sql = "UPDATE fb_ad_lead SET send_time=now() WHERE id='{$row['id']}'";
|
||||
$result = $this->facebook->query($sql);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function insertEventLeadKakao($row)
|
||||
{
|
||||
|
||||
$data = [
|
||||
'event_seq' => $row['event_seq'],
|
||||
'site' => $row['site'],
|
||||
'name' => $row['name'],
|
||||
'phone' => new RawSql("enc_data('{$row['phone']}')"),
|
||||
'gender' => $row['gender'],
|
||||
'age' => $row['age'],
|
||||
'addr' => $row['addr'],
|
||||
'email' => $row['email'],
|
||||
'agree' => 'Y',
|
||||
'add1' => $row['add1'],
|
||||
'add2' => $row['add2'],
|
||||
'add3' => $row['add3'],
|
||||
'add4' => $row['add4'],
|
||||
'add5' => $row['add5'],
|
||||
'status' => 0,
|
||||
'is_encryption' => 1,
|
||||
'lead_id' => $row['lead_id'],
|
||||
'reg_date' => date('Y-m-d H:i:s', $row['reg_timestamp']),
|
||||
'reg_timestamp' => new RawSql("UNIX_TIMESTAMP(NOW())")
|
||||
];
|
||||
$builder = $this->zenith->table('event_leads');
|
||||
$builder->set($data);
|
||||
$result = $builder->insert();
|
||||
|
||||
if ($result) {
|
||||
$builder = $this->kakao->table('mm_bizform_user_response');
|
||||
$builder->set('send_time', new RawSql('NOW()'));
|
||||
$builder->where(['encUserId'=>$row['encUserId'], 'bizFormId'=>$row['bizFormId']]);
|
||||
$builder->update();
|
||||
}
|
||||
}
|
||||
|
||||
public function insertEventLeadGoogle($row)
|
||||
{
|
||||
}
|
||||
|
||||
public function getBizformQuestion($bizformId, $itemId)
|
||||
{
|
||||
$sql = "SELECT bizform_id, id, title FROM mm_bizform_items WHERE bizform_id = '{$bizformId}' AND id = '{$itemId}'";
|
||||
$result = $this->kakao->query($sql)->getRowArray();
|
||||
if (!$result) return null;
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,342 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Api;
|
||||
|
||||
use CodeIgniter\Model;
|
||||
|
||||
class CompanyModel extends Model
|
||||
{
|
||||
protected $zenith, $facebook, $google, $kakao;
|
||||
protected $allowedFields = [
|
||||
'type',
|
||||
'name',
|
||||
'nickname',
|
||||
'status',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'deleted_at',
|
||||
];
|
||||
protected $validationRules = [
|
||||
'name' => 'required',
|
||||
];
|
||||
protected $validationMessages = [
|
||||
'name' => [
|
||||
'required' => '이름은 필수 입력사항입니다.',
|
||||
],
|
||||
];
|
||||
protected $skipValidation = false;
|
||||
protected $cleanValidationRules = true;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->zenith = \Config\Database::connect();
|
||||
$this->facebook = \Config\Database::connect('facebook');
|
||||
$this->google = \Config\Database::connect('google');
|
||||
$this->kakao = \Config\Database::connect('kakao');
|
||||
}
|
||||
|
||||
public function getCompanies($data)
|
||||
{
|
||||
$srch = $data['searchData'];
|
||||
$builder = $this->zenith->table('companies AS c');
|
||||
$builder->select('c.*, ci.company_parent_id as p_id, parent_c.name as p_name');
|
||||
$builder->join('companies_idx AS ci', 'c.id = ci.company_id', 'left');
|
||||
$builder->join('companies AS parent_c', 'parent_c.id = ci.company_parent_id', 'left');
|
||||
$builder->where('c.status !=', 0);
|
||||
if(isset($srch['sdate']) && isset($srch['edate'])){
|
||||
$builder->where('c.created_at >=', $srch['sdate']);
|
||||
$builder->where('c.created_at <=', date('Y-m-d', strtotime($srch['edate'].' + 1day')));
|
||||
}
|
||||
|
||||
if(!empty($srch['stx'])){
|
||||
$builder->groupStart();
|
||||
$builder->like('c.type', $srch['stx']);
|
||||
$builder->orLike('c.name', $srch['stx']);
|
||||
$builder->orLike('c.nickname', $srch['stx']);
|
||||
$builder->orLike('parent_c.name', $srch['stx']);
|
||||
$builder->groupEnd();
|
||||
}
|
||||
$builder->groupBy('c.id');
|
||||
// limit 적용하지 않은 쿼리
|
||||
$builderNoLimit = clone $builder;
|
||||
|
||||
// limit 적용한 쿼리
|
||||
|
||||
$orderBy = [];
|
||||
if(!empty($data['order'])) {
|
||||
foreach($data['order'] as $row) {
|
||||
$col = $data['columns'][$row['column']]['data'];
|
||||
if($col) $orderBy[] = "{$col} {$row['dir']}";
|
||||
}
|
||||
}
|
||||
$orderBy[] = "id DESC";
|
||||
$builder->orderBy(implode(",", $orderBy),'',true);
|
||||
|
||||
if($data['length'] > 0){
|
||||
$builder->limit($data['length'], $data['start']);
|
||||
}
|
||||
|
||||
$result = $builder->get()->getResultArray();
|
||||
$resultNoLimit = $builderNoLimit->countAllResults();
|
||||
|
||||
return [
|
||||
'data' => $result,
|
||||
'allCount' => $resultNoLimit
|
||||
];
|
||||
}
|
||||
|
||||
public function getCompany($id)
|
||||
{
|
||||
$builder = $this->zenith->table('companies AS c');
|
||||
$builder->select('c.*, GROUP_CONCAT(DISTINCT u.username) as username, ci.company_parent_id as p_id, parent_c.name as p_name');
|
||||
$builder->join('companies_users as cu', 'c.id = cu.company_id', 'left');
|
||||
$builder->join('users as u', 'cu.user_id = u.id', 'left');
|
||||
$builder->join('companies_idx as ci', 'c.id = ci.company_id', 'left');
|
||||
$builder->join('companies as parent_c', 'ci.company_parent_id = parent_c.id', 'left');
|
||||
$builder->where('c.id', $id);
|
||||
$builder->where('c.status !=', 0);
|
||||
$result = $builder->get()->getRowArray();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getSearchCompanies($stx = NULL)
|
||||
{
|
||||
$builder = $this->zenith->table('companies');
|
||||
$builder->select('id, name');
|
||||
$builder->where('status !=', 0);
|
||||
if(!empty($stx)){
|
||||
$builder->like('name', $stx);
|
||||
}
|
||||
|
||||
$result = $builder->get()->getResultArray();
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getSearchAgencies($stx = NULL)
|
||||
{
|
||||
$builder = $this->zenith->table('companies');
|
||||
$builder->select('id, name');
|
||||
$builder->where('type', '광고대행사');
|
||||
$builder->where('status !=', 0);
|
||||
if(!empty($stx)){
|
||||
$builder->like('name', $stx);
|
||||
}
|
||||
|
||||
$result = $builder->get()->getResultArray();
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getAgencyByName($p_name)
|
||||
{
|
||||
if(empty($p_name)){
|
||||
return false;
|
||||
}
|
||||
$builder = $this->zenith->table('companies');
|
||||
$builder->select('id, name');
|
||||
$builder->where('type', '광고대행사');
|
||||
$builder->where('status !=', 0);
|
||||
$builder->where('name', $p_name);
|
||||
|
||||
$result = $builder->get()->getRowArray();
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getCompanyByName($p_name)
|
||||
{
|
||||
$builder = $this->zenith->table('companies');
|
||||
$builder->select('id, name');
|
||||
$builder->where('status !=', 0);
|
||||
if(!empty($p_name)){
|
||||
$builder->where('name', $p_name);
|
||||
}
|
||||
|
||||
$result = $builder->get()->getRowArray();
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getCompaniesByName($names)
|
||||
{
|
||||
$builder = $this->zenith->table('companies');
|
||||
$builder->select('id');
|
||||
$builder->where('status !=', 0);
|
||||
$builder->whereIn('name', $names);
|
||||
|
||||
$result = $builder->get()->getResultArray();
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function createCompany($data, $agency)
|
||||
{
|
||||
$this->zenith->transStart();
|
||||
$builder_1 = $this->zenith->table('companies');
|
||||
$builder_1->set('type', $data['type']);
|
||||
$builder_1->set('name', $data['name']);
|
||||
$builder_1->set('nickname', auth()->user()->nickname ?? '');
|
||||
$builder_1->set('status', 1);
|
||||
$result_1 = $builder_1->insert();
|
||||
if(!empty($agency)){
|
||||
$insertId = $this->zenith->insertID();
|
||||
$builder_2 = $this->zenith->table('companies_idx');
|
||||
$newRecord = [
|
||||
'company_id' => $insertId,
|
||||
'company_parent_id' => $agency['id']
|
||||
];
|
||||
$builder_2->insert($newRecord);
|
||||
}
|
||||
|
||||
$result = $this->zenith->transComplete();
|
||||
|
||||
// sql error 구문이 찍히지 않아서 select
|
||||
if($result===false){
|
||||
$builder = $this->zenith->table('companies');
|
||||
$builder->select('name');
|
||||
$builder->set('name', $data['name']);
|
||||
$cnt = $builder->get()->getNumRows();
|
||||
if($cnt>0) $result = "duplicate";
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function setCompany($data, $agency)
|
||||
{
|
||||
$this->zenith->transStart();
|
||||
$builder_1 = $this->zenith->table('companies');
|
||||
$builder_1->set('name', $data['name']);
|
||||
$builder_1->where('id', $data['id']);
|
||||
$builder_1->update();
|
||||
|
||||
$builder_2 = $this->zenith->table('companies_idx');
|
||||
$builder_2->where('company_id', $data['id']);
|
||||
$result = $builder_2->get()->getResult();
|
||||
|
||||
if(!empty($agency)){
|
||||
if (empty($result)) {
|
||||
$newRecord = [
|
||||
'company_id' => $data['id'],
|
||||
'company_parent_id' => $agency['id']
|
||||
];
|
||||
$result_2 = $builder_2->insert($newRecord);
|
||||
} else {
|
||||
$builder_2->set('company_parent_id', $agency['id']);
|
||||
$builder_2->where('company_id', $data['id']);
|
||||
$result_2 = $builder_2->update();
|
||||
}
|
||||
}
|
||||
$result = $this->zenith->transComplete();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function deleteCompany($data)
|
||||
{
|
||||
$this->zenith->transStart();
|
||||
$builder = $this->zenith->table('companies');
|
||||
$builder->where('id', $data['id']);
|
||||
$builder->delete();
|
||||
|
||||
$builder = $this->zenith->table('company_adaccounts');
|
||||
$builder->where('company_id', $data['id']);
|
||||
$builder->delete();
|
||||
$result = $this->zenith->transComplete();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getSearchAdAccounts($stx = NULL)
|
||||
{
|
||||
if(!$this->facebook->tableExists('fb_ad_account') || !$this->google->tableExists('aw_ad_account') || !$this->kakao->tableExists('mm_ad_account')){
|
||||
return false;
|
||||
}
|
||||
|
||||
$facebookBuilder = $this->facebook->table('fb_ad_account');
|
||||
$kakaoBuilder = $this->kakao->table('mm_ad_account');
|
||||
$googleBuilder = $this->google->table('aw_ad_account');
|
||||
|
||||
$facebookBuilder->select('"facebook" AS media, name, ad_account_id AS account_id, status AS status');
|
||||
$facebookBuilder->like('name', $stx);
|
||||
$facebookResult = $facebookBuilder->get()->getResultArray();
|
||||
|
||||
$kakaoBuilder->select('"kakao" AS media, name, id AS account_id, config AS status');
|
||||
$kakaoBuilder->like('name', $stx);
|
||||
$kakaoResult = $kakaoBuilder->get()->getResultArray();
|
||||
|
||||
$googleBuilder->select('"google" AS media, name, , customerId AS account_id, status AS status');
|
||||
$googleBuilder->like('name', $stx);
|
||||
$googleResult = $googleBuilder->get()->getResultArray();
|
||||
|
||||
$mergedResults = array_merge($facebookResult, $kakaoResult, $googleResult);
|
||||
|
||||
return $mergedResults;
|
||||
}
|
||||
|
||||
public function getCompanyAdAccounts($data)
|
||||
{
|
||||
if(!$this->facebook->tableExists('fb_ad_account') || !$this->google->tableExists('aw_ad_account') || !$this->kakao->tableExists('mm_ad_account')){
|
||||
return false;
|
||||
}
|
||||
|
||||
$zenithBuilder = $this->zenith->table('company_adaccounts AS ca');
|
||||
|
||||
$facebookBuilder = clone $zenithBuilder;
|
||||
$facebookBuilder->join('z_facebook.fb_ad_account AS fa', 'ca.ad_account_id = fa.ad_account_id');
|
||||
$facebookBuilder->select('ca.ad_account_id AS accountId, "facebook" AS media, fa.name AS name, fa.status AS status');
|
||||
$facebookBuilder->where('ca.company_id', $data['company_id']);
|
||||
$facebookResult = $facebookBuilder->get()->getResultArray();
|
||||
|
||||
$kakaoBuilder = clone $zenithBuilder;
|
||||
$kakaoBuilder->join('z_moment.mm_ad_account AS ma', 'ca.ad_account_id = ma.id');
|
||||
$kakaoBuilder->select('ca.ad_account_id AS accountId, "kakao" AS media, ma.name AS name, ma.config AS status');
|
||||
$kakaoBuilder->where('ca.company_id', $data['company_id']);
|
||||
$kakaoResult = $kakaoBuilder->get()->getResultArray();
|
||||
|
||||
$googleBuilder = clone $zenithBuilder;
|
||||
$googleBuilder->join('z_adwords.aw_ad_account AS awa', 'ca.ad_account_id = awa.customerId');
|
||||
$googleBuilder->select('ca.ad_account_id AS accountId, "google" AS media, awa.name AS name, awa.status AS status');
|
||||
$googleBuilder->where('ca.company_id', $data['company_id']);
|
||||
$googleResult = $googleBuilder->get()->getResultArray();
|
||||
|
||||
$mergedResults = array_merge($facebookResult, $kakaoResult, $googleResult);
|
||||
return $mergedResults;
|
||||
}
|
||||
|
||||
public function getCompanyAdAccount($data)
|
||||
{
|
||||
$builder = $this->zenith->table('company_adaccounts');
|
||||
$builder->where('company_id', $data['company_id']);
|
||||
$builder->where('ad_account_id', $data['ad_account_id']);
|
||||
$builder->where('media', $data['media']);
|
||||
$result = $builder->get()->getResult();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function setCompanyAdAccount($data)
|
||||
{
|
||||
$this->zenith->transStart();
|
||||
$builder = $this->zenith->table('company_adaccounts');
|
||||
$newRecord = [
|
||||
'company_id' => $data['company_id'],
|
||||
'ad_account_id' => $data['ad_account_id'],
|
||||
'media' => $data['media']
|
||||
];
|
||||
$builder->insert($newRecord);
|
||||
$result = $this->zenith->transComplete();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function exceptCompanyAdAccount($data)
|
||||
{
|
||||
$this->zenith->transStart();
|
||||
$builder = $this->zenith->table('company_adaccounts');
|
||||
$builder->where('company_id', $data['company_id']);
|
||||
$builder->where('ad_account_id', $data['ad_account_id']);
|
||||
$builder->where('media', $data['media']);
|
||||
$builder->delete();
|
||||
$result = $this->zenith->transComplete();
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Api;
|
||||
|
||||
use CodeIgniter\Shield\Models\UserIdentityModel as ShieldUserIdentityModelModel;
|
||||
|
||||
class IdentityModel extends ShieldUserIdentityModelModel
|
||||
{
|
||||
protected $allowedFields = [
|
||||
'user_id',
|
||||
'type',
|
||||
'name',
|
||||
'secret',
|
||||
'secret2',
|
||||
'expires',
|
||||
'extra',
|
||||
'force_reset',
|
||||
'password_changed_at',
|
||||
'last_used_at',
|
||||
];
|
||||
|
||||
public function setPasswordChangedAt($id, $date)
|
||||
{
|
||||
$this->db->transStart();
|
||||
$builder = $this->db->table('auth_identities');
|
||||
$builder->set('password_changed_at', $date);
|
||||
$builder->where('user_id', $id);
|
||||
$builder->where('type', 'email_password');
|
||||
$builder->update();
|
||||
$result = $this->db->transComplete();
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,247 @@
|
||||
<?php
|
||||
namespace App\Models\Api;
|
||||
|
||||
use App\Models\BaseModel;
|
||||
use CodeIgniter\Shield\Models\UserModel as ShieldUserModel;
|
||||
|
||||
class UserModel extends ShieldUserModel
|
||||
{
|
||||
protected $table = 'users';
|
||||
protected $primaryKey = 'id';
|
||||
|
||||
protected $useTimestaps = true;
|
||||
protected $createdField = 'created_at';
|
||||
protected $updatedField = 'updated_at';
|
||||
protected $deletedField = 'deleted_at';
|
||||
|
||||
protected $allowedFields = [
|
||||
'username',
|
||||
'active',
|
||||
'last_active',
|
||||
'deleted_at',
|
||||
];
|
||||
|
||||
// Validation
|
||||
protected $validationRules = [
|
||||
'username' => 'required',
|
||||
'groups' => 'required',
|
||||
'permission' => 'required',
|
||||
];
|
||||
protected $validationMessages = [
|
||||
'username' => [
|
||||
'required' => '이름은 필수 입력사항입니다.',
|
||||
],
|
||||
'groups' => [
|
||||
'required' => '그룹은 필수 선택사항입니다.',
|
||||
],
|
||||
'permission' => [
|
||||
'required' => '세부 권한은 필수 선택사항입니다.',
|
||||
],
|
||||
];
|
||||
protected $skipValidation = false;
|
||||
protected $cleanValidationRules = true;
|
||||
|
||||
public function getUsers($data)
|
||||
{
|
||||
$srch = $data['searchData'];
|
||||
$builder = $this->db->table('users AS u');
|
||||
$builder->select('c.name AS belong, u.id AS user_id, u.username, u.nickname, ai.secret AS email, u.active as active, GROUP_CONCAT(DISTINCT agu.group) as `groups`, u.created_at');
|
||||
$builder->join('companies_users as cu', 'u.id = cu.user_id', 'left');
|
||||
$builder->join('companies as c', 'c.id = cu.company_id', 'left');
|
||||
$builder->join('auth_identities as ai', 'u.id = ai.user_id', 'left');
|
||||
$builder->join('auth_groups_users as agu', 'u.id = agu.user_id', 'left');
|
||||
$builder->where('u.deleted_at =', NULL);
|
||||
if(isset($srch['sdate']) && isset($srch['edate'])){
|
||||
$builder->where('u.created_at >=', $srch['sdate']);
|
||||
$builder->where('u.created_at <=', date('Y-m-d', strtotime($srch['edate'].' + 1day')));
|
||||
}
|
||||
|
||||
if(!empty($srch['stx'])){
|
||||
$builder->groupStart();
|
||||
$builder->like('u.username', $srch['stx']);
|
||||
$builder->orLike('c.name', $srch['stx']);
|
||||
$builder->orLike('u.nickname', $srch['stx']);
|
||||
$builder->orLike('ai.secret', $srch['stx']);
|
||||
$builder->groupEnd();
|
||||
}
|
||||
$builder->groupBy('u.id');
|
||||
// limit 적용하지 않은 쿼리
|
||||
$builderNoLimit = clone $builder;
|
||||
|
||||
// limit 적용한 쿼리
|
||||
|
||||
$orderBy = [];
|
||||
if(!empty($data['order'])) {
|
||||
foreach($data['order'] as $row) {
|
||||
$col = $data['columns'][$row['column']]['data'];
|
||||
if($col) $orderBy[] = "{$col} {$row['dir']}";
|
||||
}
|
||||
}
|
||||
$orderBy[] = "created_at DESC";
|
||||
$builder->orderBy(implode(",", $orderBy),'',true);
|
||||
|
||||
if($data['length'] > 0){
|
||||
$builder->limit($data['length'], $data['start']);
|
||||
}
|
||||
|
||||
$result = $builder->get()->getResultArray();
|
||||
$resultNoLimit = $builderNoLimit->countAllResults();
|
||||
|
||||
return [
|
||||
'data' => $result,
|
||||
'allCount' => $resultNoLimit
|
||||
];
|
||||
}
|
||||
|
||||
public function getUser($data)
|
||||
{
|
||||
$builder = $this->db->table('users AS u');
|
||||
$builder->select('cu.company_id AS company_id, c.name AS belong, u.id AS user_id, u.username, u.nickname, up.division, up.team, up.position, ai.secret AS email, u.active, GROUP_CONCAT(DISTINCT agu.group) AS `groups`, GROUP_CONCAT(DISTINCT apu.permission) AS permissions, u.created_at');
|
||||
$builder->join('companies_users as cu', 'u.id = cu.user_id', 'left');
|
||||
$builder->join('companies as c', 'c.id = cu.company_id', 'left');
|
||||
$builder->join('auth_identities as ai', 'u.id = ai.user_id', 'left');
|
||||
$builder->join('auth_groups_users as agu', 'u.id = agu.user_id', 'left');
|
||||
$builder->join('auth_permissions_users as apu', 'u.id = apu.user_id', 'left');
|
||||
$builder->join('users_department AS up', 'u.id = up.user_id', 'left');
|
||||
$builder->where('u.id', $data['user_id']);
|
||||
$result = $builder->get()->getRowArray();
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getSearchUsers($data)
|
||||
{
|
||||
$builder = $this->db->table('users');
|
||||
$builder->select('id, username, nickname');
|
||||
if(!empty($data['stx'])){
|
||||
$builder->like('username', $data['stx']);
|
||||
$builder->orLike('nickname', $data['stx']);
|
||||
$builder->limit(10);
|
||||
}
|
||||
$result = $builder->get()->getResultArray();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getBelongUsers($companyId)
|
||||
{
|
||||
$builder = $this->db->table('users AS u');
|
||||
$builder->select('u.id, u.username, u.nickname, u.created_at');
|
||||
$builder->join('companies_users as cu', 'u.id = cu.user_id', 'left');
|
||||
$builder->where('cu.company_id', $companyId);
|
||||
$result = $builder->get()->getResultArray();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getBelongUser($data)
|
||||
{
|
||||
$builder = $this->db->table('companies_users');
|
||||
$builder->select('company_id, user_id');
|
||||
$builder->where('user_id', $data['user_id']);
|
||||
$builder->where('company_id', $data['company_id']);
|
||||
$result = $builder->get()->getResult();
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function setUser($data)
|
||||
{
|
||||
$user = $this->findById($data['user_id']);
|
||||
$this->db->transStart();
|
||||
if(isset($data['active'])){
|
||||
$builder_1 = $this->db->table('users');
|
||||
$builder_1->set('active', $data['active']);
|
||||
$builder_1->where('id', $data['user_id']);
|
||||
$builder_1->update();
|
||||
}
|
||||
|
||||
if(!empty($data['company_id'])){
|
||||
$builder_2 = $this->db->table('companies_users');
|
||||
$builder_2->where('company_id', $data['company_id']);
|
||||
$builder_2->where('user_id', $data['user_id']);
|
||||
$result = $builder_2->get()->getResult();
|
||||
|
||||
if(empty($result)){
|
||||
$newRecord = [
|
||||
'company_id' => $data['company_id'],
|
||||
'user_id' => $data['user_id']
|
||||
];
|
||||
$builder_2->insert($newRecord);
|
||||
}
|
||||
$builder_2->set('company_id', $data['company_id']);
|
||||
$builder_2->where('company_id', $data['company_id']);
|
||||
$builder_2->where('user_id', $data['user_id']);
|
||||
$builder_2->update();
|
||||
}
|
||||
|
||||
if(empty($data['company_name'])){
|
||||
$builder_2 = $this->db->table('companies_users');
|
||||
$builder_2->where('user_id', $data['user_id']);
|
||||
$builder_2->delete();
|
||||
}
|
||||
|
||||
|
||||
if(!empty($data['group'])){
|
||||
if ($user->inGroup('superadmin')) {
|
||||
array_push($data['group'], 'superadmin');
|
||||
}
|
||||
$user->syncGroups(...$data['group']);
|
||||
}else{
|
||||
$groups = array_values($user->getGroups());
|
||||
if ($user->inGroup('superadmin')) {
|
||||
$user->removeGroup('admin', 'developer', 'user', 'agency', 'advertiser', 'guest');
|
||||
}else{
|
||||
$user->removeGroup(...$groups);
|
||||
}
|
||||
}
|
||||
|
||||
if(!empty($data['permission'])){
|
||||
$user->syncPermissions(...$data['permission']);
|
||||
}else{
|
||||
$permissions = array_values($user->getPermissions());
|
||||
$user->removePermission(...$permissions);
|
||||
}
|
||||
|
||||
$result = $this->db->transComplete();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function setBelongUser($data)
|
||||
{
|
||||
$this->db->transStart();
|
||||
$builder = $this->db->table('companies_users');
|
||||
$newRecord = [
|
||||
'company_id' => $data['company_id'],
|
||||
'user_id' => $data['user_id'],
|
||||
];
|
||||
$builder->insert($newRecord);
|
||||
$result = $this->db->transComplete();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function exceptBelongUser($data)
|
||||
{
|
||||
$this->db->transStart();
|
||||
$builder = $this->db->table('companies_users');
|
||||
$builder->where('user_id', $data['user_id']);
|
||||
$builder->where('company_id', $data['company_id']);
|
||||
$builder->delete();
|
||||
$result = $this->db->transComplete();
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getUserByName($name)
|
||||
{
|
||||
$builder = $this->db->table('users AS u');
|
||||
$builder->select('u.id, u.username, u.nickname, ai.secret as email, u.created_at');
|
||||
$builder->join('auth_identities as ai', 'u.id = ai.user_id', 'left');
|
||||
$builder->join('auth_groups_users as agu', 'u.id = agu.user_id', 'left');
|
||||
$builder->where('u.nickname', $name);
|
||||
$builder->where('ai.type', 'email_password');
|
||||
$builder->where('agu.`group`', 'user');
|
||||
$result = $builder->get()->getRowArray();
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user