Skip to content

Commit

Permalink
Merge pull request #27 from RianIhsan/feature/delete-user-by-admin
Browse files Browse the repository at this point in the history
feature:delete user by admin
  • Loading branch information
RianIhsan authored Oct 31, 2023
2 parents 0bb78f4 + 054ca65 commit 2ec946f
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 0 deletions.
11 changes: 11 additions & 0 deletions admin/repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ type Repository interface {
GetPaginatedTransactions(offset, limit int) ([]transaction.Transaction, error)
SearchTransactionByUsername(name string) ([]transaction.Transaction, error)
GetTotalTransactionsByUsername(name string) (int64, error)
GetUserById(userId int) (user.User, error)
}

type repository struct {
Expand Down Expand Up @@ -89,3 +90,13 @@ func (r *repository) SearchTransactionByUsername(name string) ([]transaction.Tra
}
return userTransaction, nil
}

func (r *repository) GetUserById(userId int) (user.User, error) {
var u user.User
err := r.db.Where("id = ?", userId).Delete(&u).Error
if err != nil {
return u, err
}

return u, nil
}
10 changes: 10 additions & 0 deletions admin/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ type Service interface {
SearchUserByName(name string) ([]user.User, error)
GetTransactionsPagination(page, pageSize int) ([]transaction.Transaction, int, int, int, int, error)
SearchTransactionByUsername(name string) ([]transaction.Transaction, error)
DeleteUserById(id int) (user.User, error)
}

type service struct {
Expand Down Expand Up @@ -90,3 +91,12 @@ func (s *service) SearchTransactionByUsername(name string) ([]transaction.Transa
}
return userTransaction, nil
}

func (s *service) DeleteUserById(id int) (user.User, error) {
deleteUser, err := s.repository.GetUserById(id)
if err != nil {
return user.User{}, err
}

return deleteUser, nil
}
25 changes: 25 additions & 0 deletions handler/admin.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,3 +110,28 @@ func (h *adminHandler) GetAllUsersTransactions(c *gin.Context) {
response := helper.ResponseWithPaginationAndNextPrev("List of users", admin.FormatterTransactions(transactions), currentPage, totalPages, nextPage, prevPage)
c.JSON(http.StatusOK, response)
}

func (h *adminHandler) DeleteUser(c *gin.Context) {
currentUser := c.MustGet("CurrentUser").(user.User)
if currentUser.Role != "admin" {
response := helper.GeneralResponse("Access denied")
c.JSON(http.StatusUnauthorized, response)
return
}
userId, err := strconv.Atoi(c.Param("id"))
if err != nil {
response := helper.ErrorResponse("Failed get user", err.Error())
c.JSON(http.StatusBadRequest, response)
return
}

_, err = h.service.DeleteUserById(userId)
if err != nil {
response := helper.ErrorResponse("Failed delete user", err.Error())
c.JSON(http.StatusBadRequest, response)
return
}

response := helper.GeneralResponse("Success Delete user")
c.JSON(http.StatusOK, response)
}
1 change: 1 addition & 0 deletions routes/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,5 @@ func SetupRoute(router *gin.Engine) {

api.GET("/users", middleware.AuthMiddleware(authService, userService), adminHandler.GetAllUsers)
api.GET("/users/transactions", middleware.AuthMiddleware(authService, userService), adminHandler.GetAllUsersTransactions)
api.DELETE("/users/:id", middleware.AuthMiddleware(authService, userService), adminHandler.DeleteUser)
}

0 comments on commit 2ec946f

Please sign in to comment.