71 lines
1.8 KiB
Go
71 lines
1.8 KiB
Go
package handler
|
|
|
|
import (
|
|
"fmt"
|
|
"rijig/dto"
|
|
"rijig/internal/services"
|
|
"rijig/utils"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
type CollectorHandler struct {
|
|
service services.CollectorService
|
|
}
|
|
|
|
func NewCollectorHandler(service services.CollectorService) *CollectorHandler {
|
|
return &CollectorHandler{service}
|
|
}
|
|
|
|
func (h *CollectorHandler) ConfirmRequestPickup(c *fiber.Ctx) error {
|
|
|
|
collectorId, ok := c.Locals("userID").(string)
|
|
if !ok || collectorId == "" {
|
|
return utils.GenericResponse(c, fiber.StatusUnauthorized, "Unauthorized: User session not found")
|
|
}
|
|
|
|
requestPickupId := c.Params("id")
|
|
if requestPickupId == "" {
|
|
return utils.ErrorResponse(c, "RequestPickup ID is required")
|
|
}
|
|
|
|
req, err := h.service.ConfirmRequestPickup(requestPickupId, collectorId)
|
|
if err != nil {
|
|
return utils.ErrorResponse(c, err.Error())
|
|
}
|
|
|
|
return utils.SuccessResponse(c, req, "Request pickup confirmed successfully")
|
|
}
|
|
|
|
func (h *CollectorHandler) GetAvaibleCollector(c *fiber.Ctx) error {
|
|
|
|
userId := c.Locals("userID").(string)
|
|
|
|
requests, err := h.service.FindCollectorsNearby(userId)
|
|
if err != nil {
|
|
return utils.ErrorResponse(c, err.Error())
|
|
}
|
|
|
|
return utils.SuccessResponse(c, requests, "menampilkan data collector terdekat")
|
|
}
|
|
|
|
func (h *CollectorHandler) ConfirmRequestManualPickup(c *fiber.Ctx) error {
|
|
userId := c.Locals("userID").(string)
|
|
requestId := c.Params("request_id")
|
|
if requestId == "" {
|
|
fmt.Println("requestid dibutuhkan")
|
|
}
|
|
|
|
var request dto.SelectCollectorRequest
|
|
if err := c.BodyParser(&request); err != nil {
|
|
return fmt.Errorf("error parsing request body: %v", err)
|
|
}
|
|
|
|
message, err := h.service.ConfirmRequestManualPickup(requestId, userId)
|
|
if err != nil {
|
|
return fiber.NewError(fiber.StatusBadRequest, fmt.Sprintf("Error confirming pickup: %v", err))
|
|
}
|
|
|
|
return utils.SuccessResponse(c, message, "berhasil konfirmasi request")
|
|
}
|