Spaces:
Sleeping
Sleeping
File size: 2,013 Bytes
20cba6d f14a735 20cba6d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | package controllers
import (
"net/http"
"situkang/dto"
"situkang/services"
"situkang/utils"
"github.com/gin-gonic/gin"
)
type UserController interface {
GetMe(ctx *gin.Context)
UpdateMe(ctx *gin.Context)
UpdateAvatar(ctx *gin.Context)
UpdateLocation(ctx *gin.Context)
}
type userController struct {
userService services.UserService
}
func NewUserController(userService services.UserService) UserController {
return &userController{userService: userService}
}
func (uc *userController) GetMe(ctx *gin.Context) {
data, err := uc.userService.GetProfile(ctx)
if err != nil {
utils.ResponseFAILED(ctx, nil, err)
return
}
utils.JSONSuccess(ctx, http.StatusOK, "", data, nil)
}
func (uc *userController) UpdateMe(ctx *gin.Context) {
req := RequestJSON[dto.UpdateUserProfileRequest](ctx)
if ctx.IsAborted() {
return
}
data, err := uc.userService.UpdateProfile(ctx, req)
if err != nil {
utils.ResponseFAILED(ctx, nil, err)
return
}
utils.JSONSuccess(ctx, http.StatusOK, "Profil berhasil diperbarui", data, nil)
}
func (uc *userController) UpdateAvatar(ctx *gin.Context) {
file, err := ctx.FormFile("avatar")
if err != nil {
utils.JSONError(ctx, http.StatusBadRequest, "VALIDATION_ERROR", "Avatar file is required", nil)
return
}
avatarURL, err := utils.SaveUploadedFile(ctx, file, "avatars")
if err != nil {
utils.JSONError(ctx, http.StatusBadRequest, "VALIDATION_ERROR", err.Error(), nil)
return
}
data, err := uc.userService.UpdateAvatar(ctx, avatarURL)
if err != nil {
utils.ResponseFAILED(ctx, nil, err)
return
}
utils.JSONSuccess(ctx, http.StatusOK, "Foto profil berhasil diperbarui", data, nil)
}
func (uc *userController) UpdateLocation(ctx *gin.Context) {
req := RequestJSON[dto.UpdateUserLocationRequest](ctx)
if ctx.IsAborted() {
return
}
data, err := uc.userService.UpdateLocation(ctx, req)
if err != nil {
utils.ResponseFAILED(ctx, nil, err)
return
}
utils.JSONSuccess(ctx, http.StatusOK, "Lokasi berhasil diperbarui", data, nil)
}
|