74 lines
1.9 KiB
Go
74 lines
1.9 KiB
Go
package identitycart
|
|
|
|
import (
|
|
"rijig/middleware"
|
|
"rijig/utils"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
type IdentityCardHandler struct {
|
|
service IdentityCardService
|
|
}
|
|
|
|
func NewIdentityCardHandler(service IdentityCardService) *IdentityCardHandler {
|
|
return &IdentityCardHandler{service: service}
|
|
}
|
|
|
|
func (h *IdentityCardHandler) CreateIdentityCardHandler(c *fiber.Ctx) error {
|
|
claims, err := middleware.GetUserFromContext(c)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
cardPhoto, err := c.FormFile("cardphoto")
|
|
if err != nil {
|
|
return utils.BadRequest(c, "KTP photo is required")
|
|
}
|
|
|
|
var input RequestIdentityCardDTO
|
|
if err := c.BodyParser(&input); err != nil {
|
|
return utils.BadRequest(c, "Invalid input format")
|
|
}
|
|
|
|
|
|
if errs, valid := input.ValidateIdentityCardInput(); !valid {
|
|
return utils.ResponseErrorData(c, fiber.StatusBadRequest, "Input validation failed", errs)
|
|
}
|
|
|
|
response, err := h.service.CreateIdentityCard(c.Context(), claims.UserID, &input, cardPhoto)
|
|
if err != nil {
|
|
return utils.InternalServerError(c, err.Error())
|
|
}
|
|
|
|
return utils.SuccessWithData(c, "KTP successfully submitted", response)
|
|
}
|
|
|
|
func (h *IdentityCardHandler) GetIdentityByID(c *fiber.Ctx) error {
|
|
id := c.Params("id")
|
|
if id == "" {
|
|
return utils.BadRequest(c, "id is required")
|
|
}
|
|
|
|
result, err := h.service.GetIdentityCardByID(c.Context(), id)
|
|
if err != nil {
|
|
return utils.NotFound(c, "data not found")
|
|
}
|
|
|
|
return utils.SuccessWithData(c, "success retrieve identity card", result)
|
|
}
|
|
|
|
func (h *IdentityCardHandler) GetIdentityByUserId(c *fiber.Ctx) error {
|
|
claims, err := middleware.GetUserFromContext(c)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
result, err := h.service.GetIdentityCardsByUserID(c.Context(), claims.UserID)
|
|
if err != nil {
|
|
return utils.InternalServerError(c, "failed to fetch your identity card data")
|
|
}
|
|
|
|
return utils.SuccessWithData(c, "success retrieve your identity card", result)
|
|
}
|