I am batman
This commit is contained in:
84
internal/handlers/ticketHandler.go
Normal file
84
internal/handlers/ticketHandler.go
Normal file
@@ -0,0 +1,84 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"OpsMastery.v5/internal/database"
|
||||
"OpsMastery.v5/internal/models"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func CreateTicket(c *fiber.Ctx) error {
|
||||
var ticket models.Ticket
|
||||
if err := c.BodyParser(&ticket); err != nil {
|
||||
return c.Status(http.StatusBadRequest).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
|
||||
if err := database.DB().Create(&ticket).Error; err != nil {
|
||||
return c.Status(http.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
return c.Status(http.StatusCreated).JSON(ticket)
|
||||
}
|
||||
|
||||
func ListTickets(c *fiber.Ctx) error {
|
||||
var tickets []models.Ticket
|
||||
if err := database.DB().Find(&tickets).Error; err != nil {
|
||||
return c.Status(http.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
return c.JSON(tickets)
|
||||
}
|
||||
|
||||
func GetTicketByID(c *fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
var ticket models.Ticket
|
||||
|
||||
ticketID, err := strconv.ParseUint(id, 10, 32)
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid ticket ID"})
|
||||
}
|
||||
|
||||
if err := database.DB().First(&ticket, ticketID).Error; err != nil {
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": "Ticket not found"})
|
||||
}
|
||||
return c.Status(http.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
return c.JSON(ticket)
|
||||
}
|
||||
|
||||
func DeleteTicketByID(c *fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
ticketID, err := strconv.ParseUint(id, 10, 32)
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid ticket ID"})
|
||||
}
|
||||
|
||||
result := database.DB().Unscoped().Delete(&models.Ticket{}, ticketID)
|
||||
if result.RowsAffected == 0 {
|
||||
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{"error": "Ticket not found"})
|
||||
}
|
||||
if result.Error != nil {
|
||||
return c.Status(http.StatusInternalServerError).JSON(fiber.Map{"error": result.Error.Error()})
|
||||
}
|
||||
return c.Status(http.StatusOK).JSON(fiber.Map{"message": "Ticket deleted successfully"})
|
||||
}
|
||||
|
||||
func UpdateTicketByID(c *fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
ticketID, err := strconv.ParseUint(id, 10, 32)
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid ticket ID"})
|
||||
}
|
||||
|
||||
var ticket models.Ticket
|
||||
if err := c.BodyParser(&ticket); err != nil {
|
||||
return c.Status(http.StatusBadRequest).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
|
||||
if err := database.DB().Model(&models.Ticket{}).Where("id = ?", ticketID).Updates(ticket).Error; err != nil {
|
||||
return c.Status(http.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
return c.Status(http.StatusOK).JSON(fiber.Map{"message": "Ticket updated successfully"})
|
||||
}
|
||||
Reference in New Issue
Block a user