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) GetRequestPickups(c *fiber.Ctx) error { // collectorId := c.Locals("userID").(string) // requests, err := h.service.GetRequestPickupsForCollector(collectorId) // if err != nil { // return utils.ErrorResponse(c, err.Error()) // } // return utils.SuccessResponse(c, requests, "Automatic request pickups retrieved successfully") // } // func (h *RequestPickupHandler) AssignCollectorToRequest(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.SelectCollectorRequest // errors, valid := request.ValidateSelectCollectorRequest() // if !valid { // return utils.ValidationErrorResponse(c, errors) // } // if err := c.BodyParser(&request); err != nil { // return fmt.Errorf("error parsing request body: %v", err) // } // err := h.service.SelectCollectorInRequest(userId, request.Collector_id) // if err != nil { // return fiber.NewError(fiber.StatusBadRequest, fmt.Sprintf("Error assigning collector: %v", err)) // } // return utils.GenericResponse(c, fiber.StatusOK, "berhasil memilih collector") // }