134 lines
3.5 KiB
Go
134 lines
3.5 KiB
Go
package request
|
|
|
|
import (
|
|
"furtuna-be/internal/common/mycontext"
|
|
"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"`
|
|
SiteID *int64 `json:"site_id"`
|
|
RoleID role.Role `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,
|
|
SiteID: u.SiteID,
|
|
}
|
|
}
|
|
|
|
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"`
|
|
SiteID int64 `form:"site_id" json:"site_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(ctx mycontext.Context) entity.UserSearch {
|
|
partnerID := p.PartnerID
|
|
siteID := p.SiteID
|
|
|
|
if !ctx.IsAdmin() {
|
|
partnerID = *ctx.GetPartnerID()
|
|
}
|
|
|
|
if ctx.GetSiteID() != nil {
|
|
siteID = *ctx.GetSiteID()
|
|
}
|
|
|
|
return entity.UserSearch{
|
|
Search: p.Search,
|
|
Name: p.Name,
|
|
RoleID: p.RoleID,
|
|
PartnerID: partnerID,
|
|
SiteID: siteID,
|
|
Limit: p.Limit,
|
|
Offset: p.Offset,
|
|
}
|
|
}
|
|
type CustomerParam 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"`
|
|
SiteID int64 `form:"site_id" json:"site_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 *CustomerParam) ToEntity(ctx mycontext.Context) entity.CustomerSearch {
|
|
partnerID := p.PartnerID
|
|
siteID := p.SiteID
|
|
|
|
if !ctx.IsAdmin() {
|
|
partnerID = *ctx.GetPartnerID()
|
|
}
|
|
|
|
if ctx.GetSiteID() != nil {
|
|
siteID = *ctx.GetSiteID()
|
|
}
|
|
|
|
return entity.CustomerSearch{
|
|
Search: p.Search,
|
|
Name: p.Name,
|
|
RoleID: p.RoleID,
|
|
PartnerID: partnerID,
|
|
SiteID: siteID,
|
|
Limit: p.Limit,
|
|
Offset: p.Offset,
|
|
}
|
|
}
|
|
|
|
type UserRegister struct {
|
|
Name string `json:"name" validate:"required" binding:"required"`
|
|
Email string `json:"email" validate:"required" binding:"required"`
|
|
PhoneNumber string `json:"phone_number" validate:"required" binding:"required"`
|
|
Password string `json:"password" validate:"required" binding:"required"`
|
|
}
|
|
|
|
func (e *UserRegister) Validate() error {
|
|
validate := validator.New()
|
|
if err := validate.Struct(e); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (u *UserRegister) ToEntity() *entity.User {
|
|
return &entity.User{
|
|
Name: u.Name,
|
|
Email: u.Email,
|
|
PhoneNumber: u.PhoneNumber,
|
|
Password: u.Password,
|
|
RoleID: role.Customer,
|
|
UserType: "CUSTOMER",
|
|
}
|
|
}
|