apifiber/controllers/eventController.go

83 lines
1.7 KiB
Go

package controllers
import (
"api/database"
"api/dbaccess"
"api/models"
"api/utils"
"strconv"
"time"
"github.com/gofiber/fiber/v2"
)
func AddEvent(c *fiber.Ctx) error {
var data map[string]string
var startdt time.Time
_, err := utils.ProcessToken(c)
if err != nil {
c.Status(fiber.StatusBadRequest)
return c.JSON(fiber.Map{
"message": "Sem autorização",
})
}
if err := c.BodyParser(&data); err != nil {
return err
}
u, err := strconv.Atoi(data["user"])
if err != nil {
c.Status(fiber.StatusBadRequest)
return c.JSON(fiber.Map{
"message": "Requisição inválida (usuário não informado)",
})
}
user := dbaccess.GetUserById(u)
if user.Id == 0 {
c.Status(fiber.StatusBadRequest)
return c.JSON(fiber.Map{
"message": "Requisição inválida (usuário inexistente)",
})
}
dateformat := "02/01/2006 15:04"
if data["startDt"] == "" {
c.Status(fiber.StatusBadRequest)
return c.JSON(fiber.Map{
"message": "Requisição inválida (sem data)",
})
} else {
startdt, err = time.Parse(dateformat, data["startDt"])
if err != nil {
c.Status(fiber.StatusBadRequest)
return c.JSON(fiber.Map{
"message": "Requisição inválida (data inválida)",
})
}
}
event := models.Event{
Name: data["name"],
UserId: user.Id,
User: user,
ExpectedDate: startdt,
EventType: data["eventtype"],
}
database.DB.Create(&event)
if event.Id == 0 {
c.Status(fiber.StatusBadRequest)
return c.JSON(fiber.Map{
"message": "(E1) - Não foi possível criar o evento",
})
}
c.SendStatus(fiber.StatusCreated)
return c.JSON(event)
}