89 lines
2.1 KiB
Go
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"`
|
|
}
|