diff --git a/internal/entity/auth.go b/internal/entity/auth.go index a36287f..ca34b24 100644 --- a/internal/entity/auth.go +++ b/internal/entity/auth.go @@ -71,6 +71,8 @@ func (u *UserDB) ToUser() *User { ID: u.ID, Name: u.Name, Email: u.Email, + NIK: u.NIK, + PhoneNumber: u.PhoneNumber, Status: u.Status, CreatedAt: u.CreatedAt, UpdatedAt: u.UpdatedAt, diff --git a/internal/handlers/http/user/user.go b/internal/handlers/http/user/user.go index c0c403a..8dc0753 100644 --- a/internal/handlers/http/user/user.go +++ b/internal/handlers/http/user/user.go @@ -28,6 +28,7 @@ func (h *Handler) Route(group *gin.RouterGroup, jwt gin.HandlerFunc) { route.GET("/customer/list", jwt, h.GetAllCustomer) route.GET("/:id", jwt, h.GetByID) route.PUT("/:id", jwt, h.Update) + route.PUT("/customer/:id", jwt, h.UpdateCustomer) route.DELETE("/:id", jwt, h.Delete) } @@ -146,6 +147,35 @@ func (h *Handler) Update(c *gin.Context) { Data: h.toUserResponse(updatedUser), }) } +func (h *Handler) UpdateCustomer(c *gin.Context) { + ctx := request.GetMyContext(c) + + id := c.Param("id") + + userID, err := strconv.ParseInt(id, 10, 64) + if err != nil { + response.ErrorWrapper(c, errors.ErrorBadRequest) + return + } + + var req request.User + if err := c.ShouldBindJSON(&req); err != nil { + response.ErrorWrapper(c, errors.ErrorBadRequest) + return + } + + updatedUser, err := h.service.Update(ctx, userID, req.ToEntity()) + if err != nil { + response.ErrorWrapper(c, err) + return + } + + c.JSON(http.StatusOK, response.BaseResponse{ + Success: true, + Status: http.StatusOK, + Data: h.toUserResponse(updatedUser), + }) +} // GetAll retrieves a list of users. // @Summary Get a list of users @@ -289,6 +319,8 @@ func (h *Handler) toUserResponse(resp *entity.User) response.User { ID: resp.ID, Name: resp.Name, Email: resp.Email, + PhoneNumber: resp.PhoneNumber, + NIK: resp.NIK, Status: string(resp.Status), RoleID: int64(resp.RoleID), RoleName: resp.RoleName, diff --git a/internal/handlers/response/user.go b/internal/handlers/response/user.go index ec7de67..2462367 100644 --- a/internal/handlers/response/user.go +++ b/internal/handlers/response/user.go @@ -6,6 +6,8 @@ type User struct { ID int64 `json:"id"` Name string `json:"name"` Email string `json:"email"` + PhoneNumber string `json:"phone_number"` + NIK string `json:"nik"` Status string `json:"status"` RoleID int64 `json:"role_id"` RoleName string `json:"role_name"` diff --git a/internal/repository/users/user.go b/internal/repository/users/user.go index 88dfce3..f618bc8 100644 --- a/internal/repository/users/user.go +++ b/internal/repository/users/user.go @@ -176,7 +176,7 @@ func (b *UserRepository) GetUserByID(ctx context.Context, id int64) (*entity.Use var user *entity.UserDB query := b.db.Table("users"). - Select("users.id, users.email, users.password , users.name, users.status, users.created_at, users.updated_at, ur.role_id, r.role_name, ur.partner_id, b.name as partner_name"). + Select("users.id, users.email,users.phone_number,users.nik, users.password , users.name, users.status, users.created_at, users.updated_at, ur.role_id, r.role_name, ur.partner_id, b.name as partner_name"). Joins("LEFT JOIN user_roles ur ON users.id = ur.user_id"). Joins("LEFT JOIN roles r ON ur.role_id = r.role_id"). Joins("LEFT JOIN partners b ON ur.partner_id = b.id"). diff --git a/internal/services/users/users.go b/internal/services/users/users.go index 33c74f3..05706f3 100644 --- a/internal/services/users/users.go +++ b/internal/services/users/users.go @@ -118,7 +118,7 @@ func (s *UserService) Update(ctx mycontext.Context, id int64, userReq *entity.Us } //if changed branch - if *userReq.PartnerID > 0 { + if userReq.PartnerID != nil { branch, err := s.branchRepo.GetBranchByID(ctx, *userReq.PartnerID) if err != nil { return nil, err