package server import ( "fmt" "net/http" "strconv" "github.com/gin-gonic/gin" domain "github.com/haydenhargreaves/Potion/internal/domain/user" ) func (s *Server) GetUserV2(ctx *gin.Context) { id := ctx.Param("id") parsedId, err := strconv.Atoi(id) if err != nil { ctx.JSON(http.StatusBadRequest, gin.H{ "status": http.StatusBadRequest, "message": fmt.Sprintf("[ERROR] Failed to parse ID parameter. %s", err.Error()), }) return } user, err := s.deps.UserService.GetUser(parsedId) if err != nil { ctx.JSON(http.StatusBadRequest, gin.H{ "status": http.StatusBadRequest, "message": fmt.Sprintf("[ERROR] Failed to get the target user. %s", err.Error()), }) return } ctx.JSON(http.StatusOK, gin.H{ "status": http.StatusOK, "message": "[OK] Successfully retrieved target user.", "user": user, }) } func (s *Server) GetAuthenticatedUserHandlerV2(ctx *gin.Context) { s.withAuthenticatedUser(ctx, func(ctx *gin.Context, user *domain.User) { ctx.JSON(http.StatusOK, gin.H{ "status": http.StatusOK, "message": "[OK] Successfully retrieved authenticated user.", "user": user, }) }) } func (s *Server) GetAuthenicatedUserRecipesV2(ctx *gin.Context) { s.withAuthenticatedUser(ctx, func(ctx *gin.Context, user *domain.User) { recipes, err := s.deps.RecipeService.GetUserRecipes(user.Id) if err != nil { ctx.JSON(http.StatusBadRequest, gin.H{ "status": http.StatusBadRequest, "message": fmt.Sprintf("[ERROR] Could not fetch authenticated users's recipes. %s", err.Error()), }) return } ctx.JSON(http.StatusOK, gin.H{ "status": http.StatusOK, "message": "[OK] Successfully retrieved authenticated user's recipes.", "recipes": recipes, }) }) } func (s *Server) GetAuthenicatedUserFavoritesV2(ctx *gin.Context) { s.withAuthenticatedUser(ctx, func(ctx *gin.Context, user *domain.User) { favorites, err := s.deps.RecipeService.GetUserFavoriteRecipes(user.Id) if err != nil { ctx.JSON(http.StatusBadRequest, gin.H{ "status": http.StatusBadRequest, "message": fmt.Sprintf("[ERROR] Could not fetch authenticated users's favorites. %s", err.Error()), }) return } ctx.JSON(http.StatusOK, gin.H{ "status": http.StatusOK, "message": "[OK] Successfully retrieved authenticated user's favorites.", "favorites": favorites, }) }) } func (s *Server) GetAuthenicatedUserEngagementV2(ctx *gin.Context) { s.withAuthenticatedUser(ctx, func(ctx *gin.Context, user *domain.User) { engagement, err := s.deps.EngagementService.GetUserEngagement(user.Id, 6) if err != nil { ctx.JSON(http.StatusBadRequest, gin.H{ "status": http.StatusBadRequest, "message": fmt.Sprintf("[ERROR] Failed to get authenticated user engagement. %s", err.Error()), }) return } ctx.JSON(http.StatusOK, gin.H{ "status": http.StatusOK, "message": "[OK] Successfully retrieved authenticated user engagement.", "engagement": engagement, }) }) } func (s *Server) GetAuthenicatedUserMadeRecipesV2(ctx *gin.Context) { s.withAuthenticatedUser(ctx, func(ctx *gin.Context, user *domain.User) { recipes, err := s.deps.RecipeService.GetUserMadeRecipes(user.Id, 6) if err != nil { ctx.JSON(http.StatusBadRequest, gin.H{ "status": http.StatusBadRequest, "message": fmt.Sprintf("[ERROR] Failed to get authenticated user's made recipes. %s", err.Error()), }) return } ctx.JSON(http.StatusOK, gin.H{ "status": http.StatusOK, "message": "[OK] Successfully retrieved authenticated user's made recipes.", "recipes": recipes, }) }) } func (s *Server) GetAuthenicatedUserViewedRecipesV2(ctx *gin.Context) { s.withAuthenticatedUser(ctx, func(ctx *gin.Context, user *domain.User) { recipes, err := s.deps.RecipeService.GetUserViewedRecipes(user.Id, 6) if err != nil { ctx.JSON(http.StatusBadRequest, gin.H{ "status": http.StatusBadRequest, "message": fmt.Sprintf("[ERROR] Failed to get authenticated user's viewed recipes. %s", err.Error()), }) return } ctx.JSON(http.StatusOK, gin.H{ "status": http.StatusOK, "message": "[OK] Successfully retrieved authenticated user's viewed recipes.", "recipes": recipes, }) }) }