102 lines
3.0 KiB
Go
102 lines
3.0 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) GetAllRequestPickups(c *fiber.Ctx) error {
|
|
|
|
response, err := h.service.GetAllRequestPickups()
|
|
if err != nil {
|
|
return utils.InternalServerErrorResponse(c, fmt.Sprintf("Error fetching all request pickups: %v", err))
|
|
}
|
|
|
|
return utils.SuccessResponse(c, response, "All request pickups retrieved successfully")
|
|
}
|
|
|
|
func (h *RequestPickupHandler) UpdateRequestPickup(c *fiber.Ctx) error {
|
|
userID, ok := c.Locals("userID").(string)
|
|
if !ok || userID == "" {
|
|
return utils.GenericResponse(c, fiber.StatusUnauthorized, "Unauthorized: User session not found")
|
|
}
|
|
|
|
id := c.Params("id")
|
|
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.UpdateRequestPickup(id, request)
|
|
if err != nil {
|
|
return utils.InternalServerErrorResponse(c, fmt.Sprintf("Error updating request pickup: %v", err))
|
|
}
|
|
|
|
return utils.SuccessResponse(c, response, "Request pickup updated successfully")
|
|
}
|
|
|
|
func (h *RequestPickupHandler) DeleteRequestPickup(c *fiber.Ctx) error {
|
|
id := c.Params("id")
|
|
|
|
err := h.service.DeleteRequestPickup(id)
|
|
if err != nil {
|
|
return utils.GenericResponse(c, fiber.StatusNotFound, fmt.Sprintf("Request pickup with ID %s not found: %v", id, err))
|
|
}
|
|
|
|
return utils.GenericResponse(c, fiber.StatusOK, "Request pickup deleted successfully")
|
|
}
|