package request import ( "go-humas-be/app/database/entity" "go-humas-be/utils/paginator" "time" ) type UsersGeneric interface { ToEntity() } type UsersQueryRequest struct { 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:"phone_number" validate:"required"` WorkType string `json:"work_type" validate:"required"` GenderType string `json:"gender_type" validate:"required"` IdentityType string `json:"identity_type" validate:"required"` IdentityNumber string `json:"identity_number" validate:"required"` DateOfBirth string `json:"date_of_birth" validate:"required"` LastEducation string `json:"last_education" validate:"required"` KeycloakId string `json:"keycloak_id" validate:"required"` UserRoleId int `json:"user_role_id" validate:"required"` StatusId int `json:"status_id" validate:"required"` UserLevelsId int `json:"user_levels_id" validate:"required"` CreatedById int `json:"created_by_id" validate:"required"` ProfilePicturePath string `json:"profile_picture_path" validate:"required"` IsActive bool `json:"is_active" validate:"required"` Pagination *paginator.Pagination `json:"pagination"` } type UsersCreateRequest struct { 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:"phone_number" validate:"required"` WorkType string `json:"work_type" validate:"required"` GenderType string `json:"gender_type" validate:"required"` IdentityType string `json:"identity_type" validate:"required"` IdentityNumber string `json:"identity_number" validate:"required"` DateOfBirth string `json:"date_of_birth" validate:"required"` LastEducation string `json:"last_education" validate:"required"` KeycloakId string `json:"keycloak_id" validate:"required"` UserRoleId int `json:"user_role_id" validate:"required"` StatusId int `json:"status_id" validate:"required"` UserLevelsId int `json:"user_levels_id" validate:"required"` CreatedById int `json:"created_by_id" validate:"required"` ProfilePicturePath string `json:"profile_picture_path" validate:"required"` IsActive bool `json:"is_active" validate:"required"` } 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 { ID uint `json:"id" validate:"required"` 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:"phone_number" validate:"required"` WorkType string `json:"work_type" validate:"required"` GenderType string `json:"gender_type" validate:"required"` IdentityType string `json:"identity_type" validate:"required"` IdentityNumber string `json:"identity_number" validate:"required"` DateOfBirth string `json:"date_of_birth" validate:"required"` LastEducation string `json:"last_education" validate:"required"` KeycloakId string `json:"keycloak_id" validate:"required"` UserRoleId int `json:"user_role_id" validate:"required"` StatusId int `json:"status_id" validate:"required"` UserLevelsId int `json:"user_levels_id" validate:"required"` CreatedById int `json:"created_by_id" validate:"required"` ProfilePicturePath string `json:"profile_picture_path" validate:"required"` IsActive bool `json:"is_active" validate:"required"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } func (req UsersUpdateRequest) ToEntity() *entity.Users { return &entity.Users{ ID: req.ID, 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, CreatedAt: req.CreatedAt, UpdatedAt: req.UpdatedAt, } }