package subscribehttp import ( userrepository "legalgo-BE-go/internal/accessor/user" authmiddleware "legalgo-BE-go/internal/api/http/middleware/auth" userdomain "legalgo-BE-go/internal/domain/user" subscribesvc "legalgo-BE-go/internal/services/subscribe" "legalgo-BE-go/internal/utilities/response" "legalgo-BE-go/internal/utilities/utils" "net/http" "github.com/go-chi/chi/v5" ) func Update( router chi.Router, userRepo userrepository.User, subSvc subscribesvc.Subscribe, ) { router. With(authmiddleware.Authorize()). Patch("/subscribe/update", func(w http.ResponseWriter, r *http.Request) { ctx := r.Context() detail, err := utils.GetTokenDetail(r) if err != nil { response.ResponseWithErrorCode( ctx, w, err, response.ErrBadRequest.Code, response.ErrBadRequest.HttpCode, err.Error(), ) return } if detail.Role != "user" { response.ResponseWithErrorCode( ctx, w, err, response.ErrUnauthorized.Code, response.ErrUnauthorized.HttpCode, "unauthorized", ) return } var body userdomain.UserSubsUpdate err = utils.UnmarshalBody(r, &body) if err != nil { response.ResponseWithErrorCode( ctx, w, err, response.ErrBadRequest.Code, response.ErrBadRequest.HttpCode, err.Error(), ) return } user, err := userRepo.GetUserProfile(detail.ID) body.ID = user.Subscribe.ID if err := subSvc.Update(body); err != nil { response.ResponseWithErrorCode( ctx, w, err, response.ErrBadRequest.Code, response.ErrBadRequest.HttpCode, err.Error(), ) return } response.RespondJsonSuccess(ctx, w, struct { Message string }{ Message: "update user plan success", }) }) }