Skip to content

Commit

Permalink
Merge pull request #28 from RianIhsan/feature/delete-campaign-by-admin
Browse files Browse the repository at this point in the history
feature:delete campaign by admin
  • Loading branch information
RianIhsan authored Oct 31, 2023
2 parents 2ec946f + ca49b1b commit 0f4acc0
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 0 deletions.
12 changes: 12 additions & 0 deletions admin/repository.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package admin

import (
"github.com/RianIhsan/raise-unity/campaign"
"github.com/RianIhsan/raise-unity/transaction"
"github.com/RianIhsan/raise-unity/user"
"gorm.io/gorm"
Expand All @@ -15,6 +16,7 @@ type Repository interface {
SearchTransactionByUsername(name string) ([]transaction.Transaction, error)
GetTotalTransactionsByUsername(name string) (int64, error)
GetUserById(userId int) (user.User, error)
GetCampaignById(campaignId int) (campaign.Campaign, error)
}

type repository struct {
Expand Down Expand Up @@ -100,3 +102,13 @@ func (r *repository) GetUserById(userId int) (user.User, error) {

return u, nil
}

func (r *repository) GetCampaignById(campaignId int) (campaign.Campaign, error) {
var c campaign.Campaign
err := r.db.Where("id = ?", campaignId).Delete(&c).Error
if err != nil {
return c, err
}

return c, nil
}
10 changes: 10 additions & 0 deletions admin/service.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package admin

import (
"github.com/RianIhsan/raise-unity/campaign"
"github.com/RianIhsan/raise-unity/transaction"
"github.com/RianIhsan/raise-unity/user"
"math"
Expand All @@ -12,6 +13,7 @@ type Service interface {
GetTransactionsPagination(page, pageSize int) ([]transaction.Transaction, int, int, int, int, error)
SearchTransactionByUsername(name string) ([]transaction.Transaction, error)
DeleteUserById(id int) (user.User, error)
DeleteCampaignById(id int) (campaign.Campaign, error)
}

type service struct {
Expand Down Expand Up @@ -100,3 +102,11 @@ func (s *service) DeleteUserById(id int) (user.User, error) {

return deleteUser, nil
}

func (s *service) DeleteCampaignById(id int) (campaign.Campaign, error) {
deleteCampaign, err := s.repository.GetCampaignById(id)
if err != nil {
return campaign.Campaign{}, err
}
return deleteCampaign, err
}
25 changes: 25 additions & 0 deletions handler/admin.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,3 +135,28 @@ func (h *adminHandler) DeleteUser(c *gin.Context) {
response := helper.GeneralResponse("Success Delete user")
c.JSON(http.StatusOK, response)
}

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

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

response := helper.GeneralResponse("Success Delete Campaign")
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 @@ -55,4 +55,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)
api.DELETE("/campaign/:id", middleware.AuthMiddleware(authService, userService), adminHandler.DeleteCampaign)
}

0 comments on commit 0f4acc0

Please sign in to comment.