Collection: users
Menyimpan data store owner (user dazoapp yang terdaftar sebagai customer di Admin Dazo).
Struktur Dokumen
json{
"_id": "uuid-string",
"name": "John Doe",
"email": "john@example.com",
"wa": "+6281234567890",
"password": "bcrypt-hash",
"account_manager_id": "uuid-string",
"registration_source": {
"type": "partner",
"link_code": "ABC123",
"registered_at": "2026-01-01T00:00:00.000000Z"
},
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-06-25T14:30:00.000000Z",
"deleted_at": null
}
Field
| Field | Type | Deskripsi |
|---|
_id | string (UUID) | Primary key |
name | string | Nama lengkap |
email | string | Email |
wa | string | Nomor WhatsApp (format +62) |
password | string | Bcrypt hash |
account_manager_id | string | Foreign key ke admins._id |
registration_source | object | Sumber registrasi |
registration_source.type | string | Tipe: direct, partner, affiliate, promo, trial |
registration_source.link_code | string | Kode registration link |
deleted_at | DateTime | Soft delete timestamp |
Relasi
| Relasi | Type | Ke |
|---|
user_store | hasOne | user_stores via user_id |
admin | belongsTo | admins via account_manager_id |
login_logs | hasMany | login_logs via user_id |
Filter di Customer Page
Admin Dazo customer page menggunakan filter berdasarkan:
| Filter | Logic |
|---|
type | registration_source.type — trial, paid, partner |
main_package | store.plan |
addon_package | store.addon_plan |
activity | login_logs — active jika login dalam 7 hari |
subscription_status | store.expired_at — Not Subscribed / Expired / Subscribe |
Query Umum
javascript// User dengan account manager
db.users.find({ account_manager_id: { $exists: true } })
// User by registration type
db.users.find({ "registration_source.type": "partner" })
// User aktif (login 7 hari terakhir)
db.login_logs.aggregate([
{ $match: { created_at: { $gte: ISODate("2026-06-18T00:00:00Z") } } },
{ $group: { _id: "$user_id" } },
{ $lookup: { from: "users", localField: "_id", foreignField: "_id", as: "user" } }
])