144 lines
4.2 KiB
Go
144 lines
4.2 KiB
Go
package server
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
domain "github.com/haydenhargreaves/Potion/internal/domain/user"
|
|
)
|
|
|
|
func (s *Server) EngagementViewRecipeHandlerV2(ctx *gin.Context) {
|
|
recipeId, err := strconv.Atoi(ctx.Param("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
|
|
}
|
|
|
|
userId := getUserId(ctx)
|
|
if userId == nil {
|
|
if engagement, err := s.deps.EngagementService.ViewRecipe(recipeId); err != nil {
|
|
ctx.JSON(http.StatusBadRequest, gin.H{
|
|
"status": http.StatusBadRequest,
|
|
"message": fmt.Sprintf("[ERROR] Failed to create engagement. %s", err.Error()),
|
|
})
|
|
} else {
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"status": http.StatusOK,
|
|
"message": "[OK] Successfully created engagement.",
|
|
"engagement": engagement,
|
|
})
|
|
}
|
|
return
|
|
}
|
|
if engagement, err := s.deps.EngagementService.UserViewRecipe(*userId, recipeId); err != nil {
|
|
ctx.JSON(http.StatusBadRequest, gin.H{
|
|
"status": http.StatusBadRequest,
|
|
"message": fmt.Sprintf("[ERROR] Failed to create engagement. %s", err.Error()),
|
|
})
|
|
} else {
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"status": http.StatusOK,
|
|
"message": "[OK] Successfully created engagement.",
|
|
"engagement": engagement,
|
|
})
|
|
}
|
|
}
|
|
|
|
func (s *Server) EngagementShareRecipeHandlerV2(ctx *gin.Context) {
|
|
recipeId, err := strconv.Atoi(ctx.Param("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
|
|
}
|
|
|
|
userId := getUserId(ctx)
|
|
if userId == nil {
|
|
if engagement, err := s.deps.EngagementService.ShareRecipe(recipeId); err != nil {
|
|
ctx.JSON(http.StatusBadRequest, gin.H{
|
|
"status": http.StatusBadRequest,
|
|
"message": fmt.Sprintf("[ERROR] Failed to create engagement. %s", err.Error()),
|
|
})
|
|
} else {
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"status": http.StatusOK,
|
|
"message": "[OK] Successfully created engagement.",
|
|
"engagement": engagement,
|
|
})
|
|
}
|
|
return
|
|
}
|
|
|
|
if engagement, err := s.deps.EngagementService.UserShareRecipe(*userId, recipeId); err != nil {
|
|
ctx.JSON(http.StatusBadRequest, gin.H{
|
|
"status": http.StatusBadRequest,
|
|
"message": fmt.Sprintf("[ERROR] Failed to create engagement. %s", err.Error()),
|
|
})
|
|
} else {
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"status": http.StatusOK,
|
|
"message": "[OK] Successfully created engagement.",
|
|
"engagement": engagement,
|
|
})
|
|
}
|
|
}
|
|
|
|
func (s *Server) EngagementFavoriteRecipeHandlerV2(ctx *gin.Context) {
|
|
s.withAuthenticatedUser(ctx, func(ctx *gin.Context, user *domain.User) {
|
|
recipeId, err := strconv.Atoi(ctx.Param("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
|
|
}
|
|
|
|
if engagement, err := s.deps.EngagementService.UserFavoriteRecipe(user.Id, recipeId); err != nil {
|
|
ctx.JSON(http.StatusBadRequest, gin.H{
|
|
"status": http.StatusBadRequest,
|
|
"message": fmt.Sprintf("[ERROR] Failed to create engagement. %s", err.Error()),
|
|
})
|
|
} else {
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"status": http.StatusOK,
|
|
"message": "[OK] Successfully created engagement.",
|
|
"engagement": engagement,
|
|
})
|
|
}
|
|
})
|
|
}
|
|
|
|
func (s *Server) EngagementMakeRecipeHandlerV2(ctx *gin.Context) {
|
|
s.withAuthenticatedUser(ctx, func(ctx *gin.Context, user *domain.User) {
|
|
recipeId, err := strconv.Atoi(ctx.Param("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
|
|
}
|
|
|
|
if engagement, err := s.deps.EngagementService.UserMakeRecipe(user.Id, recipeId); err != nil {
|
|
ctx.JSON(http.StatusBadRequest, gin.H{
|
|
"status": http.StatusBadRequest,
|
|
"message": fmt.Sprintf("[ERROR] Failed to create engagement. %s", err.Error()),
|
|
})
|
|
} else {
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"status": http.StatusOK,
|
|
"message": "[OK] Successfully created engagement.",
|
|
"engagement": engagement,
|
|
})
|
|
}
|
|
})
|
|
}
|