2024-03-05 19:15:53 +00:00
|
|
|
package request
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"go-humas-be/app/database/entity"
|
|
|
|
|
"go-humas-be/utils/paginator"
|
2024-03-31 11:59:32 +00:00
|
|
|
"strconv"
|
2024-03-05 19:15:53 +00:00
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type UsersGeneric interface {
|
|
|
|
|
ToEntity()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type UsersQueryRequest struct {
|
2024-03-31 11:59:32 +00:00
|
|
|
Username *string `json:"username"`
|
|
|
|
|
Email *string `json:"email"`
|
|
|
|
|
Fullname *string `json:"fullname"`
|
|
|
|
|
PhoneNumber *string `json:"phoneNumber"`
|
|
|
|
|
IdentityNumber *string `json:"identityNumber"`
|
|
|
|
|
UserRoleId *int `json:"userRoleId"`
|
|
|
|
|
StatusId *int `json:"statusId"`
|
|
|
|
|
Pagination *paginator.Pagination `json:"pagination"`
|
2024-03-05 19:15:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type UsersCreateRequest struct {
|
2024-03-31 11:59:32 +00:00
|
|
|
Username string `json:"username" validate:"required,lowercase"`
|
|
|
|
|
Email string `json:"email" validate:"required,email"`
|
|
|
|
|
Fullname string `json:"fullname" validate:"required"`
|
|
|
|
|
Address string `json:"address" validate:"required"`
|
|
|
|
|
PhoneNumber string `json:"phoneNumber" validate:"required"`
|
|
|
|
|
WorkType string `json:"workType" validate:"required"`
|
|
|
|
|
GenderType string `json:"genderType" validate:"required"`
|
|
|
|
|
IdentityType string `json:"identityType" validate:"required"`
|
|
|
|
|
IdentityNumber string `json:"identityNumber" validate:"required"`
|
|
|
|
|
DateOfBirth string `json:"dateOfBirth" validate:"required"`
|
|
|
|
|
LastEducation string `json:"lastEducation" validate:"required"`
|
|
|
|
|
UserRoleId int `json:"userRoleId" validate:"required"`
|
|
|
|
|
UserLevelsId int `json:"userLevelsId" validate:"required"`
|
|
|
|
|
KeycloakId *string `json:"keycloakId"`
|
|
|
|
|
StatusId *int `json:"statusId"`
|
|
|
|
|
CreatedById *int `json:"createdById"`
|
|
|
|
|
ProfilePicturePath *string `json:"profilePicturePath"`
|
|
|
|
|
IsActive *bool `json:"isActive"`
|
2024-03-05 19:15:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (req UsersCreateRequest) ToEntity() *entity.Users {
|
|
|
|
|
return &entity.Users{
|
|
|
|
|
Username: req.Username,
|
|
|
|
|
Email: req.Email,
|
|
|
|
|
Fullname: req.Fullname,
|
|
|
|
|
Address: req.Address,
|
|
|
|
|
PhoneNumber: req.PhoneNumber,
|
|
|
|
|
WorkType: req.WorkType,
|
|
|
|
|
GenderType: req.GenderType,
|
|
|
|
|
IdentityType: req.IdentityType,
|
|
|
|
|
IdentityNumber: req.IdentityNumber,
|
|
|
|
|
DateOfBirth: req.DateOfBirth,
|
|
|
|
|
LastEducation: req.LastEducation,
|
|
|
|
|
KeycloakId: req.KeycloakId,
|
|
|
|
|
UserRoleId: req.UserRoleId,
|
|
|
|
|
StatusId: req.StatusId,
|
|
|
|
|
UserLevelsId: req.UserLevelsId,
|
|
|
|
|
CreatedById: req.CreatedById,
|
|
|
|
|
ProfilePicturePath: req.ProfilePicturePath,
|
|
|
|
|
IsActive: req.IsActive,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type UsersUpdateRequest struct {
|
2024-03-31 11:59:32 +00:00
|
|
|
Username string `json:"username" validate:"required,lowercase"`
|
|
|
|
|
Email string `json:"email" validate:"required,email"`
|
|
|
|
|
Fullname string `json:"fullname" validate:"required"`
|
|
|
|
|
Address string `json:"address" validate:"required"`
|
|
|
|
|
PhoneNumber string `json:"phoneNumber" validate:"required"`
|
|
|
|
|
WorkType string `json:"workType" validate:"required"`
|
|
|
|
|
GenderType string `json:"genderType" validate:"required"`
|
|
|
|
|
IdentityType string `json:"identityType" validate:"required"`
|
|
|
|
|
IdentityNumber string `json:"identityNumber" validate:"required"`
|
|
|
|
|
DateOfBirth string `json:"dateOfBirth" validate:"required"`
|
|
|
|
|
LastEducation string `json:"lastEducation" validate:"required"`
|
|
|
|
|
UserRoleId int `json:"userRoleId" validate:"required"`
|
|
|
|
|
UserLevelsId int `json:"userLevelsId" validate:"required"`
|
|
|
|
|
ProfilePicturePath *string `json:"profile_picture_path"`
|
|
|
|
|
StatusId *int `json:"status_id"`
|
2024-03-05 19:15:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (req UsersUpdateRequest) ToEntity() *entity.Users {
|
|
|
|
|
return &entity.Users{
|
|
|
|
|
Username: req.Username,
|
|
|
|
|
Email: req.Email,
|
|
|
|
|
Fullname: req.Fullname,
|
|
|
|
|
Address: req.Address,
|
|
|
|
|
PhoneNumber: req.PhoneNumber,
|
|
|
|
|
WorkType: req.WorkType,
|
|
|
|
|
GenderType: req.GenderType,
|
|
|
|
|
IdentityType: req.IdentityType,
|
|
|
|
|
IdentityNumber: req.IdentityNumber,
|
|
|
|
|
DateOfBirth: req.DateOfBirth,
|
|
|
|
|
LastEducation: req.LastEducation,
|
|
|
|
|
UserRoleId: req.UserRoleId,
|
|
|
|
|
StatusId: req.StatusId,
|
|
|
|
|
UserLevelsId: req.UserLevelsId,
|
|
|
|
|
ProfilePicturePath: req.ProfilePicturePath,
|
2024-03-31 11:59:32 +00:00
|
|
|
UpdatedAt: time.Now(),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type UsersQueryRequestContext struct {
|
|
|
|
|
Username string `json:"username"`
|
|
|
|
|
Email string `json:"email"`
|
|
|
|
|
Fullname string `json:"fullname"`
|
|
|
|
|
Address string `json:"address"`
|
|
|
|
|
PhoneNumber string `json:"phoneNumber"`
|
|
|
|
|
IdentityNumber string `json:"identityNumber"`
|
|
|
|
|
UserRoleId string `json:"userRoleId"`
|
|
|
|
|
StatusId string `json:"statusId"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (req UsersQueryRequestContext) ToParamRequest() UsersQueryRequest {
|
|
|
|
|
var request UsersQueryRequest
|
|
|
|
|
|
|
|
|
|
if username := req.Username; username != "" {
|
|
|
|
|
request.Username = &username
|
|
|
|
|
}
|
|
|
|
|
if email := req.Email; email != "" {
|
|
|
|
|
request.Email = &email
|
|
|
|
|
}
|
|
|
|
|
if fullname := req.Fullname; fullname != "" {
|
|
|
|
|
request.Fullname = &fullname
|
|
|
|
|
}
|
|
|
|
|
if phoneNumber := req.PhoneNumber; phoneNumber != "" {
|
|
|
|
|
request.PhoneNumber = &phoneNumber
|
2024-03-05 19:15:53 +00:00
|
|
|
}
|
2024-03-31 11:59:32 +00:00
|
|
|
if identityNumber := req.IdentityNumber; identityNumber != "" {
|
|
|
|
|
request.IdentityNumber = &identityNumber
|
|
|
|
|
}
|
|
|
|
|
if userRoleIdStr := req.UserRoleId; userRoleIdStr != "" {
|
|
|
|
|
userRoleId, err := strconv.Atoi(userRoleIdStr)
|
|
|
|
|
if err == nil {
|
|
|
|
|
request.UserRoleId = &userRoleId
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if statusIdStr := req.StatusId; statusIdStr != "" {
|
|
|
|
|
statusId, err := strconv.Atoi(statusIdStr)
|
|
|
|
|
if err == nil {
|
|
|
|
|
request.StatusId = &statusId
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return request
|
2024-03-05 19:15:53 +00:00
|
|
|
}
|