Files
bssapp/svc/models/user_detail.go
2026-02-11 17:46:22 +03:00

89 lines
2.1 KiB
Go

package models
import "encoding/json"
// ======================================================
// 👤 USER DETAIL — GET RESPONSE
// UserDetail.vue formuna birebir
// ======================================================
type UserDetail struct {
ID int64 `json:"id"`
Code string `json:"code"`
IsActive bool `json:"is_active"`
FullName string `json:"full_name"`
Email string `json:"email"`
Mobile string `json:"mobile"`
Address string `json:"address"`
HasPassword bool `json:"has_password"` // 🔐 SADECE DURUM
// ===== İLİŞKİLER =====
Roles []string `json:"roles"`
Departments []DeptOption `json:"departments"`
Piyasalar []DeptOption `json:"piyasalar"`
NebimUsers []NebimOption `json:"nebim_users"`
}
// ======================================================
// ✍️ USER WRITE — PUT PAYLOAD
// ======================================================
type UserWrite struct {
Code string `json:"code"`
IsActive bool `json:"is_active"`
FullName string `json:"full_name"`
Email string `json:"email"`
Mobile string `json:"mobile"`
Address string `json:"address"`
Roles []string `json:"roles"`
Departments []DeptOption `json:"departments"`
Piyasalar []DeptOption `json:"piyasalar"`
NebimUsers []NebimOption `json:"nebim_users"`
}
// ======================================================
// 🔹 COMMON OPTION MODELS
// ======================================================
type DeptOption struct {
Code string `json:"code"`
Title string `json:"title,omitempty"`
}
// Flexible JSON decode
func (d *DeptOption) UnmarshalJSON(data []byte) error {
var raw struct {
Code any `json:"code"`
Title string `json:"title"`
}
if err := json.Unmarshal(data, &raw); err != nil {
return err
}
d.Title = raw.Title
switch v := raw.Code.(type) {
case string:
d.Code = v
case []any:
if len(v) > 0 {
if s, ok := v[0].(string); ok {
d.Code = s
}
}
default:
d.Code = ""
}
return nil
}
type NebimOption struct {
Username string `json:"username"`
UserGroupCode string `json:"user_group_code"`
}