package request import ( "furtuna-be/internal/constants/role" "furtuna-be/internal/entity" "github.com/go-playground/validator/v10" ) type User struct { Name string `json:"name" validate:"required"` Email string `json:"email" validate:"required"` Password string `json:"password" validate:"required"` PartnerID *int64 `json:"partner_id"` RoleID int64 `json:"role_id" validate:"required"` NIK string `json:"nik"` UserType string `json:"user_type"` PhoneNumber string `json:"phone_number"` } func (e *User) Validate() error { validate := validator.New() if err := validate.Struct(e); err != nil { return err } return nil } func (u *User) ToEntity() *entity.User { return &entity.User{ Name: u.Name, Email: u.Email, Password: u.Password, RoleID: role.Role(u.RoleID), PartnerID: u.PartnerID, } } type UserParam struct { Search string `form:"search" json:"search" example:"admin,branch1"` Name string `form:"name" json:"name" example:"Admin 1"` RoleID int64 `form:"role_id" json:"role_id" example:"1"` PartnerID int64 `form:"partner_id" json:"partner_id" example:"1"` Limit int `form:"limit,default=10" json:"limit" example:"10"` Offset int `form:"offset,default=0" json:"offset" example:"0"` } func (p *UserParam) ToEntity() entity.UserSearch { return entity.UserSearch{ Search: p.Search, Name: p.Name, RoleID: p.RoleID, PartnerID: p.PartnerID, Limit: p.Limit, Offset: p.Offset, } }