fix: update users
This commit is contained in:
parent
3a8ebc6715
commit
4b814cbdc5
|
|
@ -73,8 +73,8 @@ type UsersUpdateRequest struct {
|
|||
Username string `json:"username" validate:"required,lowercase"`
|
||||
Email string `json:"email" validate:"required,email"`
|
||||
Fullname string `json:"fullname" validate:"required"`
|
||||
UserLevelId uint `json:"userLevelId" validate:"required"`
|
||||
UserRoleId uint `json:"userRoleId" validate:"required"`
|
||||
UserLevelId *uint `json:"userLevelId"`
|
||||
UserRoleId *uint `json:"userRoleId"`
|
||||
PhoneNumber *string `json:"phoneNumber"`
|
||||
Address *string `json:"address"`
|
||||
WorkType *string `json:"workType"`
|
||||
|
|
@ -88,8 +88,27 @@ type UsersUpdateRequest struct {
|
|||
StatusId *int `json:"statusId"`
|
||||
}
|
||||
|
||||
// type UsersUpdateRequest struct {
|
||||
// Username string `json:"username" validate:"required,lowercase"`
|
||||
// Email string `json:"email" validate:"required,email"`
|
||||
// Fullname string `json:"fullname" validate:"required"`
|
||||
// UserLevelId uint `json:"userLevelId" validate:"required"`
|
||||
// UserRoleId uint `json:"userRoleId" validate:"required"`
|
||||
// PhoneNumber *string `json:"phoneNumber"`
|
||||
// Address *string `json:"address"`
|
||||
// WorkType *string `json:"workType"`
|
||||
// GenderType *string `json:"genderType"`
|
||||
// IdentityType *string `json:"identityType"`
|
||||
// IdentityGroup *string `json:"identityGroup"`
|
||||
// IdentityGroupNumber *string `json:"identityGroupNumber"`
|
||||
// IdentityNumber *string `json:"identityNumber"`
|
||||
// DateOfBirth *string `json:"dateOfBirth"`
|
||||
// LastEducation *string `json:"lastEducation"`
|
||||
// StatusId *int `json:"statusId"`
|
||||
// }
|
||||
|
||||
func (req UsersUpdateRequest) ToEntity() *users.Users {
|
||||
return &users.Users{
|
||||
entity := &users.Users{
|
||||
Username: req.Username,
|
||||
Email: req.Email,
|
||||
Fullname: req.Fullname,
|
||||
|
|
@ -103,13 +122,44 @@ func (req UsersUpdateRequest) ToEntity() *users.Users {
|
|||
IdentityNumber: req.IdentityNumber,
|
||||
DateOfBirth: req.DateOfBirth,
|
||||
LastEducation: req.LastEducation,
|
||||
UserRoleId: req.UserRoleId,
|
||||
StatusId: req.StatusId,
|
||||
UserLevelId: req.UserLevelId,
|
||||
UpdatedAt: time.Now(),
|
||||
}
|
||||
|
||||
// ⬇️ HANYA SET JIKA DIKIRIM
|
||||
if req.UserLevelId != nil {
|
||||
entity.UserLevelId = *req.UserLevelId
|
||||
}
|
||||
|
||||
if req.UserRoleId != nil {
|
||||
entity.UserRoleId = *req.UserRoleId
|
||||
}
|
||||
|
||||
return entity
|
||||
}
|
||||
|
||||
// func (req UsersUpdateRequest) ToEntity() *users.Users {
|
||||
// return &users.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,
|
||||
// IdentityGroup: req.IdentityGroup,
|
||||
// IdentityGroupNumber: req.IdentityGroupNumber,
|
||||
// IdentityNumber: req.IdentityNumber,
|
||||
// DateOfBirth: req.DateOfBirth,
|
||||
// LastEducation: req.LastEducation,
|
||||
// UserRoleId: req.UserRoleId,
|
||||
// StatusId: req.StatusId,
|
||||
// UserLevelId: req.UserLevelId,
|
||||
// UpdatedAt: time.Now(),
|
||||
// }
|
||||
// }
|
||||
|
||||
type UserLogin struct {
|
||||
Username *string `json:"username"`
|
||||
Password *string `json:"password"`
|
||||
|
|
|
|||
|
|
@ -375,25 +375,80 @@ func (_i *usersService) Update(authToken string, id uint, req request.UsersUpdat
|
|||
}
|
||||
}
|
||||
|
||||
_i.Log.Info().Interface("data", req).Msg("")
|
||||
newReq := req.ToEntity()
|
||||
|
||||
findUser, err := _i.Repo.FindOne(clientId, id)
|
||||
// 1️⃣ Ambil data user lama
|
||||
existingUser, err := _i.Repo.FindOne(clientId, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = _i.Keycloak.UpdateUser(findUser.KeycloakId, req.Fullname, req.Email)
|
||||
// 2️⃣ Update Keycloak (nama & email)
|
||||
err = _i.Keycloak.UpdateUser(existingUser.KeycloakId, req.Fullname, req.Email)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Set ClientId on entity
|
||||
newReq.ClientId = clientId
|
||||
// 3️⃣ Update field yang BOLEH diubah
|
||||
existingUser.Username = req.Username
|
||||
existingUser.Email = req.Email
|
||||
existingUser.Fullname = req.Fullname
|
||||
existingUser.Address = req.Address
|
||||
existingUser.PhoneNumber = req.PhoneNumber
|
||||
existingUser.WorkType = req.WorkType
|
||||
existingUser.GenderType = req.GenderType
|
||||
existingUser.IdentityType = req.IdentityType
|
||||
existingUser.IdentityGroup = req.IdentityGroup
|
||||
existingUser.IdentityGroupNumber = req.IdentityGroupNumber
|
||||
existingUser.IdentityNumber = req.IdentityNumber
|
||||
existingUser.DateOfBirth = req.DateOfBirth
|
||||
existingUser.LastEducation = req.LastEducation
|
||||
existingUser.StatusId = req.StatusId
|
||||
existingUser.UpdatedAt = time.Now()
|
||||
|
||||
return _i.Repo.Update(clientId, id, newReq)
|
||||
// 4️⃣ Role & Level HANYA jika dikirim
|
||||
if req.UserLevelId != nil {
|
||||
existingUser.UserLevelId = *req.UserLevelId
|
||||
}
|
||||
if req.UserRoleId != nil {
|
||||
existingUser.UserRoleId = *req.UserRoleId
|
||||
}
|
||||
|
||||
// 5️⃣ Pastikan clientId tidak hilang
|
||||
existingUser.ClientId = clientId
|
||||
|
||||
// 6️⃣ Simpan
|
||||
return _i.Repo.Update(clientId, id, existingUser)
|
||||
}
|
||||
|
||||
// func (_i *usersService) Update(authToken string, id uint, req request.UsersUpdateRequest) (err error) {
|
||||
// // Extract clientId from authToken
|
||||
// var clientId *uuid.UUID
|
||||
// if authToken != "" {
|
||||
// user := utilSvc.GetUserInfo(_i.Log, _i.Repo, authToken)
|
||||
// if user != nil && user.ClientId != nil {
|
||||
// clientId = user.ClientId
|
||||
// _i.Log.Info().Interface("clientId", clientId).Msg("Extracted clientId from auth token")
|
||||
// }
|
||||
// }
|
||||
|
||||
// _i.Log.Info().Interface("data", req).Msg("")
|
||||
// newReq := req.ToEntity()
|
||||
|
||||
// findUser, err := _i.Repo.FindOne(clientId, id)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
|
||||
// err = _i.Keycloak.UpdateUser(findUser.KeycloakId, req.Fullname, req.Email)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
|
||||
// // Set ClientId on entity
|
||||
// newReq.ClientId = clientId
|
||||
|
||||
// return _i.Repo.Update(clientId, id, newReq)
|
||||
// }
|
||||
|
||||
func (_i *usersService) Delete(authToken string, id uint) error {
|
||||
// Extract clientId from authToken
|
||||
var clientId *uuid.UUID
|
||||
|
|
|
|||
|
|
@ -22127,8 +22127,6 @@ const docTemplate = `{
|
|||
"required": [
|
||||
"email",
|
||||
"fullname",
|
||||
"userLevelId",
|
||||
"userRoleId",
|
||||
"username"
|
||||
],
|
||||
"properties": {
|
||||
|
|
|
|||
|
|
@ -22116,8 +22116,6 @@
|
|||
"required": [
|
||||
"email",
|
||||
"fullname",
|
||||
"userLevelId",
|
||||
"userRoleId",
|
||||
"username"
|
||||
],
|
||||
"properties": {
|
||||
|
|
|
|||
|
|
@ -1915,8 +1915,6 @@ definitions:
|
|||
required:
|
||||
- email
|
||||
- fullname
|
||||
- userLevelId
|
||||
- userRoleId
|
||||
- username
|
||||
type: object
|
||||
response.BadRequestError:
|
||||
|
|
|
|||
Loading…
Reference in New Issue