94 lines
2.6 KiB
Go
94 lines
2.6 KiB
Go
package handler
|
|
|
|
import (
|
|
"fmt"
|
|
"rijig/dto"
|
|
"rijig/internal/services"
|
|
"rijig/utils"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
type CoverageAreaHandler struct {
|
|
service services.CoverageAreaService
|
|
}
|
|
|
|
func NewCoverageAreaHandler(service services.CoverageAreaService) *CoverageAreaHandler {
|
|
return &CoverageAreaHandler{service: service}
|
|
}
|
|
|
|
func (h *CoverageAreaHandler) CreateCoverageArea(c *fiber.Ctx) error {
|
|
var request dto.RequestCoverageArea
|
|
if err := c.BodyParser(&request); err != nil {
|
|
return utils.ValidationErrorResponse(c, map[string][]string{
|
|
"body": {"Invalid request body"},
|
|
})
|
|
}
|
|
|
|
errors, valid := request.ValidateCoverageArea()
|
|
if !valid {
|
|
return utils.ValidationErrorResponse(c, errors)
|
|
}
|
|
|
|
response, err := h.service.CreateCoverageArea(request)
|
|
if err != nil {
|
|
return utils.InternalServerErrorResponse(c, fmt.Sprintf("Error creating coverage area: %v", err))
|
|
}
|
|
|
|
return utils.SuccessResponse(c, response, "Coverage area created successfully")
|
|
}
|
|
|
|
func (h *CoverageAreaHandler) GetCoverageAreaByID(c *fiber.Ctx) error {
|
|
id := c.Params("id")
|
|
|
|
response, err := h.service.GetCoverageAreaByID(id)
|
|
if err != nil {
|
|
return utils.GenericResponse(c, fiber.StatusNotFound, fmt.Sprintf("Coverage area with ID %s not found", id))
|
|
}
|
|
|
|
return utils.SuccessResponse(c, response, "Coverage area found")
|
|
}
|
|
|
|
func (h *CoverageAreaHandler) GetAllCoverageAreas(c *fiber.Ctx) error {
|
|
|
|
response, err := h.service.GetAllCoverageAreas()
|
|
if err != nil {
|
|
return utils.InternalServerErrorResponse(c, "Error fetching coverage areas")
|
|
}
|
|
|
|
return utils.SuccessResponse(c, response, "Coverage areas fetched successfully")
|
|
}
|
|
|
|
func (h *CoverageAreaHandler) UpdateCoverageArea(c *fiber.Ctx) error {
|
|
id := c.Params("id")
|
|
var request dto.RequestCoverageArea
|
|
if err := c.BodyParser(&request); err != nil {
|
|
return utils.ValidationErrorResponse(c, map[string][]string{
|
|
"body": {"Invalid request body"},
|
|
})
|
|
}
|
|
|
|
errors, valid := request.ValidateCoverageArea()
|
|
if !valid {
|
|
return utils.ValidationErrorResponse(c, errors)
|
|
}
|
|
|
|
response, err := h.service.UpdateCoverageArea(id, request)
|
|
if err != nil {
|
|
return utils.GenericResponse(c, fiber.StatusNotFound, fmt.Sprintf("Coverage area with ID %s not found", id))
|
|
}
|
|
|
|
return utils.SuccessResponse(c, response, "Coverage area updated successfully")
|
|
}
|
|
|
|
func (h *CoverageAreaHandler) DeleteCoverageArea(c *fiber.Ctx) error {
|
|
id := c.Params("id")
|
|
|
|
err := h.service.DeleteCoverageArea(id)
|
|
if err != nil {
|
|
return utils.GenericResponse(c, fiber.StatusNotFound, fmt.Sprintf("Coverage area with ID %s not found", id))
|
|
}
|
|
|
|
return utils.GenericResponse(c, fiber.StatusOK, "Coverage area deleted successfully")
|
|
}
|