MIF_E31222379_BE/internal/handler/requestpickup_handler.go

84 lines
2.4 KiB
Go

package handler
import (
"fmt"
"rijig/dto"
"rijig/internal/services"
"rijig/utils"
"github.com/gofiber/fiber/v2"
)
type RequestPickupHandler struct {
service services.RequestPickupService
}
func NewRequestPickupHandler(service services.RequestPickupService) *RequestPickupHandler {
return &RequestPickupHandler{service: service}
}
func (h *RequestPickupHandler) CreateRequestPickup(c *fiber.Ctx) error {
userID, ok := c.Locals("userID").(string)
if !ok || userID == "" {
return utils.GenericResponse(c, fiber.StatusUnauthorized, "Unauthorized: User session not found")
}
var request dto.RequestPickup
if err := c.BodyParser(&request); err != nil {
return utils.GenericResponse(c, fiber.StatusBadRequest, "Invalid request body")
}
errors, valid := request.ValidateRequestPickup()
if !valid {
return utils.ValidationErrorResponse(c, errors)
}
response, err := h.service.CreateRequestPickup(request, userID)
if err != nil {
return utils.InternalServerErrorResponse(c, fmt.Sprintf("Error creating request pickup: %v", err))
}
return utils.SuccessResponse(c, response, "Request pickup created successfully")
}
func (h *RequestPickupHandler) GetRequestPickupByID(c *fiber.Ctx) error {
id := c.Params("id")
response, err := h.service.GetRequestPickupByID(id)
if err != nil {
return utils.GenericResponse(c, fiber.StatusNotFound, fmt.Sprintf("Request pickup with ID %s not found: %v", id, err))
}
return utils.SuccessResponse(c, response, "Request pickup retrieved successfully")
}
// func (h *RequestPickupHandler) GetAutomaticRequestByUser(c *fiber.Ctx) error {
// collectorId, ok := c.Locals("userID").(string)
// if !ok || collectorId == "" {
// return utils.ErrorResponse(c, "Unauthorized: User session not found")
// }
// requestPickups, err := h.service.GetAllAutomaticRequestPickup(collectorId)
// if err != nil {
// return utils.ErrorResponse(c, err.Error())
// }
// return utils.SuccessResponse(c, requestPickups, "Request pickups fetched successfully")
// }
func (h *RequestPickupHandler) GetRequestPickups(c *fiber.Ctx) error {
// Get userID from Locals
collectorId := c.Locals("userID").(string)
// Call service layer to get the request pickups
requests, err := h.service.GetRequestPickupsForCollector(collectorId)
if err != nil {
return utils.ErrorResponse(c, err.Error())
}
// Return response
return utils.SuccessResponse(c, requests, "Automatic request pickups retrieved successfully")
}