279 lines
7.9 KiB
PHP
Executable File
279 lines
7.9 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Foundation\Auth\User as Authenticatable;
|
|
|
|
class Users extends Authenticatable
|
|
{
|
|
protected $table = "t_users";
|
|
const ROLE_SU = 1; // unused
|
|
const ROLE_SUPERADMIN = 7;
|
|
const ROLE_ADMIN = 2;
|
|
const ROLE_VENDOR = 8;
|
|
const ROLE_CHECKER = 9;
|
|
const ROLE_USER = 3; // unused
|
|
const ROLE_CLIENT_ADMIN = 4;
|
|
const ROLE_VENDOR_DRIVER = 12;
|
|
const ROLE_CLIENT_STAFF = 5; // unused
|
|
const ROLE_CLIENT_USER = 6; // unused
|
|
const ROLE_SPECIAL_TRACKING = 10;
|
|
const ROLE_FINANCE = 11;
|
|
|
|
const STATUS_ACTIVE = 1;
|
|
const STATUS_NOT_ACTIVE = 2;
|
|
const STATUS_SUSPEND = 3;
|
|
|
|
const CHK_TYPE_PICKUP = 1;
|
|
const CHK_TYPE_DROP = 2;
|
|
const CHK_TYPE_ALL = 3;
|
|
|
|
const IS_TRACK_VHC_NO = 0;
|
|
const IS_TRACK_VHC_YES = 1;
|
|
const IS_TRACK_VHC_DEFAULT = 2;
|
|
|
|
const IS_VDR_BCNG_NO = 0;
|
|
const IS_VDR_BCNG_YES = 1;
|
|
|
|
const DEFAULT_UID = 1; // swanusa account
|
|
|
|
const DEFAULT_PHONE_CODE = 62;
|
|
|
|
const defaultSelected = "
|
|
u.*
|
|
,c.c_name AS client_group_name
|
|
,c.id AS client_group_id
|
|
-- ,r.name as role_name
|
|
,rl.id AS role_id
|
|
,rl.name AS role_name
|
|
";
|
|
|
|
public static function listUsers($filter = [])
|
|
{
|
|
$select_select = "";
|
|
$join_join = "";
|
|
$where_where = "";
|
|
$other_other = "";
|
|
$params = [];
|
|
|
|
if (isset($filter["role"])) {
|
|
$where_where .= " AND u.role = ?";
|
|
$params[] = $filter["role"];
|
|
}
|
|
if (isset($filter["id"])) {
|
|
$where_where .= " AND u.id = ?";
|
|
$params[] = $filter["id"];
|
|
}
|
|
|
|
if (isset($filter["status"])) {
|
|
$where_where .= " AND u.status = ?";
|
|
$params[] = $filter["status"];
|
|
}
|
|
|
|
if (isset($filter["company"])) {
|
|
$where_where .= " AND c.id = ?";
|
|
$params[] = $filter["company"];
|
|
}
|
|
|
|
if (isset($filter["group_by_client_pt_id"])) {
|
|
$other_other .= " GROUP BY c.id";
|
|
}
|
|
|
|
return DB::select(
|
|
" SELECT " .
|
|
Users::defaultSelected .
|
|
"
|
|
$select_select
|
|
FROM t_users AS u
|
|
LEFT JOIN t_clients AS c ON u.client_group_id = c.id
|
|
-- LEFT JOIN t_users_roles AS r ON u.role = r.id
|
|
LEFT JOIN model_has_roles AS mhr ON mhr.model_id = u.id
|
|
LEFT JOIN roles as rl ON rl.id = mhr.role_id
|
|
$join_join
|
|
WHERE u.dlt is null
|
|
$where_where
|
|
$other_other
|
|
;",
|
|
$params
|
|
);
|
|
}
|
|
|
|
public static function listUsersByRole($role)
|
|
{
|
|
return DB::select(
|
|
"SELECT
|
|
" .
|
|
Users::defaultSelected .
|
|
"
|
|
FROM t_users AS u
|
|
LEFT JOIN t_clients AS c ON u.client_group_id = c.id
|
|
-- LEFT JOIN t_users_roles AS r ON u.role = r.id
|
|
LEFT JOIN model_has_roles AS mhr ON mhr.model_id = u.id
|
|
LEFT JOIN roles as rl ON rl.id = mhr.role_id
|
|
WHERE u.dlt is null
|
|
AND u.role = ? ;",
|
|
[$role]
|
|
);
|
|
}
|
|
|
|
public static function getUsers()
|
|
{
|
|
return DB::select("SELECT * FROM t_users WHERE dlt is null;");
|
|
}
|
|
|
|
public static function getUsersActiveByRole($role)
|
|
{
|
|
return DB::select(
|
|
"SELECT * FROM t_users WHERE dlt is null AND status = " . Users::STATUS_ACTIVE . " AND role = ?;",
|
|
[$role]
|
|
);
|
|
}
|
|
|
|
public static function getUserById($uid)
|
|
{
|
|
return DB::select("SELECT * FROM t_users WHERE dlt is null AND id = ? LIMIT 1;", [$uid]);
|
|
}
|
|
|
|
public static function showUserById($uid)
|
|
{
|
|
return DB::select(
|
|
"SELECT
|
|
" .
|
|
Users::defaultSelected .
|
|
"
|
|
FROM t_users AS u
|
|
LEFT JOIN t_clients AS c ON u.client_group_id = c.id
|
|
-- LEFT JOIN t_users_roles AS r ON u.role = r.id
|
|
LEFT JOIN model_has_roles AS mhr ON mhr.model_id = u.id
|
|
LEFT JOIN roles as rl ON rl.id = mhr.role_id
|
|
WHERE u.dlt is null
|
|
AND u.id = ?
|
|
LIMIT 1;",
|
|
[$uid]
|
|
);
|
|
}
|
|
|
|
public static function getUserByEmail($email)
|
|
{
|
|
return DB::select("SELECT * FROM t_users WHERE dlt is null AND email = ? LIMIT 2;", [$email]);
|
|
}
|
|
|
|
public static function getUserByPhone($phone)
|
|
{
|
|
return DB::select("SELECT * FROM t_users WHERE dlt is null AND phone = ? LIMIT 2;", [$phone]);
|
|
}
|
|
|
|
public static function getUserByClientId($cid)
|
|
{
|
|
return DB::select("SELECT * FROM t_users WHERE dlt is null AND client_id = ? LIMIT 1;", [$cid]);
|
|
}
|
|
|
|
public static function getUserByGroupClientId($cid)
|
|
{
|
|
return DB::select("SELECT * FROM t_users WHERE dlt is null AND client_group_id = ? LIMIT 1;", [$cid]);
|
|
}
|
|
|
|
public static function likeName($name, $role = 0)
|
|
{
|
|
$params = ["%" . $name . "%", "%" . $name . "%"];
|
|
$where = "";
|
|
|
|
if ($role !== 0) {
|
|
$where .= " AND role = ?";
|
|
$params[] = $role;
|
|
}
|
|
|
|
return DB::select(
|
|
"SELECT * FROM t_users WHERE dlt is null AND (first_name LIKE ? OR last_name LIKE ?) $where;",
|
|
$params
|
|
);
|
|
}
|
|
|
|
public static function addUser($data)
|
|
{
|
|
$uid = DB::table("t_users")->insertGetId($data);
|
|
return $uid;
|
|
}
|
|
|
|
public static function updateUser($uid, $data)
|
|
{
|
|
return DB::table("t_users")
|
|
->where("id", $uid)
|
|
->update($data);
|
|
}
|
|
|
|
public static function updateUsersByGroupClientId($cid, $data)
|
|
{
|
|
return DB::table("t_users")
|
|
->where("client_group_id", $cid)
|
|
->update($data);
|
|
}
|
|
|
|
public static function deleteUser($uid, $data)
|
|
{
|
|
return DB::table("t_users")
|
|
->where("id", $uid)
|
|
->delete();
|
|
}
|
|
|
|
public static function arrStatus()
|
|
{
|
|
return [Users::STATUS_ACTIVE, Users::STATUS_NOT_ACTIVE];
|
|
}
|
|
|
|
public static function arrRoles()
|
|
{
|
|
return [
|
|
Users::ROLE_SU,
|
|
Users::ROLE_SUPERADMIN,
|
|
Users::ROLE_ADMIN,
|
|
Users::ROLE_FINANCE,
|
|
Users::ROLE_VENDOR,
|
|
Users::ROLE_CHECKER,
|
|
Users::ROLE_USER,
|
|
Users::ROLE_CLIENT_ADMIN,
|
|
Users::ROLE_CLIENT_STAFF,
|
|
Users::ROLE_CLIENT_USER,
|
|
Users::ROLE_SPECIAL_TRACKING,
|
|
];
|
|
}
|
|
|
|
public static function listRoles($currentRole)
|
|
{
|
|
if ($currentRole == Users::ROLE_SUPERADMIN) {
|
|
return DB::select(
|
|
"SELECT * FROM t_users_roles WHERE dlt is null AND status = 1 AND id IN (?,?,?,?,?,?);",
|
|
[
|
|
// Users::ROLE_SUPERADMIN,
|
|
Users::ROLE_ADMIN,
|
|
Users::ROLE_FINANCE,
|
|
Users::ROLE_VENDOR,
|
|
Users::ROLE_CHECKER,
|
|
Users::ROLE_CLIENT_ADMIN,
|
|
Users::ROLE_SPECIAL_TRACKING,
|
|
]
|
|
);
|
|
} elseif ($currentRole == Users::ROLE_ADMIN) {
|
|
return DB::select(
|
|
"SELECT * FROM t_users_roles WHERE dlt is null AND status = 1 AND id IN (?,?,?,?,?,?);",
|
|
[
|
|
Users::ROLE_ADMIN,
|
|
Users::ROLE_FINANCE,
|
|
Users::ROLE_VENDOR,
|
|
Users::ROLE_CHECKER,
|
|
Users::ROLE_CLIENT_ADMIN,
|
|
Users::ROLE_SPECIAL_TRACKING,
|
|
]
|
|
);
|
|
} elseif ($currentRole == Users::ROLE_CLIENT_ADMIN) {
|
|
// return DB::select("SELECT * FROM t_users_roles WHERE dlt is null AND id IN (?,?);", [
|
|
// Users::ROLE_CLIENT_STAFF,
|
|
// Users::ROLE_CLIENT_USER,
|
|
// ]);
|
|
}
|
|
return [];
|
|
}
|
|
}
|