D
Engineering

users

Schema collection users — store owner dengan profile, account manager, dan login logs.

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

FieldTypeDeskripsi
_idstring (UUID)Primary key
namestringNama lengkap
emailstringEmail
wastringNomor WhatsApp (format +62)
passwordstringBcrypt hash
account_manager_idstringForeign key ke admins._id
registration_sourceobjectSumber registrasi
registration_source.typestringTipe: direct, partner, affiliate, promo, trial
registration_source.link_codestringKode registration link
deleted_atDateTimeSoft delete timestamp

Relasi

RelasiTypeKe
user_storehasOneuser_stores via user_id
adminbelongsToadmins via account_manager_id
login_logshasManylogin_logs via user_id

Filter di Customer Page

Admin Dazo customer page menggunakan filter berdasarkan:

FilterLogic
typeregistration_source.type — trial, paid, partner
main_packagestore.plan
addon_packagestore.addon_plan
activitylogin_logs — active jika login dalam 7 hari
subscription_statusstore.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" } }
])