ilk
This commit is contained in:
106
svc/queries/user_list.go
Normal file
106
svc/queries/user_list.go
Normal file
@@ -0,0 +1,106 @@
|
||||
package queries
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// ========================================================
|
||||
// 📌 GetUserList — POSTGRES FINAL (mk_dfusr)
|
||||
// ========================================================
|
||||
func GetUserList(db *sql.DB, search string) (*sql.Rows, error) {
|
||||
|
||||
baseQuery := `
|
||||
SELECT
|
||||
u.id AS id, -- 1
|
||||
u.username AS code, -- 2 (frontend uyumu için alias)
|
||||
u.is_active AS is_active, -- 3
|
||||
|
||||
-- Nebim eşleşmesi (opsiyonel)
|
||||
n.username AS nebim_username, -- 4
|
||||
n.user_group_code AS user_group_code, -- 5
|
||||
|
||||
-- Roller
|
||||
COALESCE(string_agg(DISTINCT r.code, ', '), '') AS role_names, -- 6
|
||||
|
||||
-- Departmanlar
|
||||
COALESCE(string_agg(DISTINCT d.title, ', '), '') AS department_names, -- 7
|
||||
|
||||
-- Piyasalar (ÇOKLU)
|
||||
COALESCE(string_agg(DISTINCT p.title, ', '), '') AS piyasa_names -- 8
|
||||
|
||||
FROM mk_dfusr u
|
||||
|
||||
-- ==========================
|
||||
-- 🔗 Nebim eşleşmesi
|
||||
-- ==========================
|
||||
LEFT JOIN dfusr_nebim_user un
|
||||
ON un.dfusr_id = u.id
|
||||
|
||||
LEFT JOIN mk_nebim_user n
|
||||
ON n.id = un.mk_nebim_user_id
|
||||
|
||||
-- ==========================
|
||||
-- 🔐 Roller
|
||||
-- ==========================
|
||||
LEFT JOIN dfrole_usr uru
|
||||
ON uru.dfusr_id = u.id
|
||||
|
||||
LEFT JOIN dfrole r
|
||||
ON r.id = uru.dfrole_id
|
||||
|
||||
-- ==========================
|
||||
-- 🏢 Departmanlar
|
||||
-- ==========================
|
||||
LEFT JOIN dfusr_dprt ud
|
||||
ON ud.dfusr_id = u.id
|
||||
|
||||
LEFT JOIN mk_dprt d
|
||||
ON d.id = ud.dprt_id
|
||||
|
||||
-- ==========================
|
||||
-- 🌍 Piyasalar
|
||||
-- ==========================
|
||||
LEFT JOIN dfusr_piyasa up
|
||||
ON up.dfusr_id = u.id
|
||||
|
||||
LEFT JOIN mk_sales_piy p
|
||||
ON p.code = up.piyasa_code
|
||||
|
||||
WHERE 1 = 1
|
||||
`
|
||||
|
||||
// 🔍 SEARCH FILTER
|
||||
if search != "" {
|
||||
baseQuery += `
|
||||
AND (
|
||||
u.username ILIKE $1
|
||||
OR u.email ILIKE $1
|
||||
OR n.username ILIKE $1
|
||||
OR r.code ILIKE $1
|
||||
OR d.title ILIKE $1
|
||||
OR p.title ILIKE $1
|
||||
)
|
||||
`
|
||||
}
|
||||
|
||||
// 📌 GROUP + ORDER
|
||||
baseQuery += `
|
||||
GROUP BY
|
||||
u.id,
|
||||
u.username,
|
||||
u.is_active,
|
||||
n.username,
|
||||
n.user_group_code
|
||||
|
||||
ORDER BY u.username
|
||||
`
|
||||
|
||||
// ▶ EXECUTE QUERY
|
||||
if search != "" {
|
||||
searchLike := fmt.Sprintf("%%%s%%", search)
|
||||
return db.Query(baseQuery, searchLike)
|
||||
}
|
||||
|
||||
return db.Query(baseQuery)
|
||||
}
|
||||
Reference in New Issue
Block a user