135 lines
3.9 KiB
Go
135 lines
3.9 KiB
Go
package handler
|
|
|
|
import (
|
|
"log"
|
|
"rijig/dto"
|
|
"rijig/internal/services"
|
|
"rijig/utils"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
type IdentityCardHandler struct {
|
|
IdentityCardService services.IdentityCardService
|
|
}
|
|
|
|
func NewIdentityCardHandler(identityCardService services.IdentityCardService) *IdentityCardHandler {
|
|
return &IdentityCardHandler{
|
|
IdentityCardService: identityCardService,
|
|
}
|
|
}
|
|
|
|
func (h *IdentityCardHandler) CreateIdentityCard(c *fiber.Ctx) error {
|
|
|
|
userID, ok := c.Locals("userID").(string)
|
|
if !ok || userID == "" {
|
|
return utils.GenericResponse(c, fiber.StatusUnauthorized, "User not authenticated")
|
|
}
|
|
|
|
var request dto.RequestIdentityCardDTO
|
|
if err := c.BodyParser(&request); err != nil {
|
|
log.Printf("Error parsing body: %v", err)
|
|
return utils.ErrorResponse(c, "Invalid request data")
|
|
}
|
|
|
|
cardPhoto, err := c.FormFile("cardphoto")
|
|
if err != nil {
|
|
log.Printf("Error retrieving card photo from request: %v", err)
|
|
return utils.ErrorResponse(c, "Card photo is required")
|
|
}
|
|
|
|
identityCard, err := h.IdentityCardService.CreateIdentityCard(userID, &request, cardPhoto)
|
|
if err != nil {
|
|
log.Printf("Error creating identity card: %v", err)
|
|
return utils.ErrorResponse(c, err.Error())
|
|
}
|
|
|
|
return utils.CreateResponse(c, identityCard, "Identity card created successfully")
|
|
}
|
|
|
|
func (h *IdentityCardHandler) UpdateIdentityCard(c *fiber.Ctx) error {
|
|
|
|
userID, ok := c.Locals("userID").(string)
|
|
if !ok || userID == "" {
|
|
return utils.GenericResponse(c, fiber.StatusUnauthorized, "User not authenticated")
|
|
}
|
|
|
|
id := c.Params("identity_id")
|
|
if id == "" {
|
|
return utils.ErrorResponse(c, "Identity card ID is required")
|
|
}
|
|
|
|
var request dto.RequestIdentityCardDTO
|
|
if err := c.BodyParser(&request); err != nil {
|
|
log.Printf("Error parsing body: %v", err)
|
|
return utils.ErrorResponse(c, "Invalid request data")
|
|
}
|
|
|
|
cardPhoto, err := c.FormFile("cardphoto")
|
|
if err != nil && err.Error() != "File not found" {
|
|
log.Printf("Error retrieving card photo: %v", err)
|
|
return utils.ErrorResponse(c, "Card photo is required")
|
|
}
|
|
|
|
updatedCard, err := h.IdentityCardService.UpdateIdentityCard(userID, id, &request, cardPhoto)
|
|
if err != nil {
|
|
log.Printf("Error updating identity card: %v", err)
|
|
return utils.ErrorResponse(c, err.Error())
|
|
}
|
|
|
|
return utils.SuccessResponse(c, updatedCard, "Identity card updated successfully")
|
|
}
|
|
|
|
func (h *IdentityCardHandler) GetIdentityCardById(c *fiber.Ctx) error {
|
|
|
|
id := c.Params("identity_id")
|
|
if id == "" {
|
|
return utils.ErrorResponse(c, "Identity card ID is required")
|
|
}
|
|
|
|
identityCard, err := h.IdentityCardService.GetIdentityCardByID(id)
|
|
if err != nil {
|
|
log.Printf("Error retrieving identity card: %v", err)
|
|
return utils.ErrorResponse(c, err.Error())
|
|
}
|
|
|
|
return utils.SuccessResponse(c, identityCard, "Identity card retrieved successfully")
|
|
}
|
|
|
|
func (h *IdentityCardHandler) GetIdentityCard(c *fiber.Ctx) error {
|
|
|
|
userID, ok := c.Locals("userID").(string)
|
|
if !ok || userID == "" {
|
|
return utils.GenericResponse(c, fiber.StatusUnauthorized, "Unauthorized: User session not found")
|
|
}
|
|
|
|
identityCard, err := h.IdentityCardService.GetIdentityCardsByUserID(userID)
|
|
if err != nil {
|
|
log.Printf("Error retrieving identity card: %v", err)
|
|
return utils.ErrorResponse(c, err.Error())
|
|
}
|
|
|
|
return utils.SuccessResponse(c, identityCard, "Identity card retrieved successfully")
|
|
}
|
|
|
|
func (h *IdentityCardHandler) DeleteIdentityCard(c *fiber.Ctx) error {
|
|
|
|
userID, ok := c.Locals("userID").(string)
|
|
if !ok || userID == "" {
|
|
return utils.GenericResponse(c, fiber.StatusUnauthorized, "User not authenticated")
|
|
}
|
|
|
|
id := c.Params("identity_id")
|
|
if id == "" {
|
|
return utils.ErrorResponse(c, "Identity card ID is required")
|
|
}
|
|
|
|
err := h.IdentityCardService.DeleteIdentityCard(id)
|
|
if err != nil {
|
|
log.Printf("Error deleting identity card: %v", err)
|
|
return utils.ErrorResponse(c, err.Error())
|
|
}
|
|
|
|
return utils.GenericResponse(c, fiber.StatusOK, "Identity card deleted successfully")
|
|
}
|