apifiber/controllers/eventController.go

102 lines
1.8 KiB
Go

package controllers
import (
"api/database"
"api/models"
"time"
"github.com/gofiber/fiber/v2"
)
func AddEvent(c *fiber.Ctx) error {
var data map[string]string
var startdt time.Time
var err error
user := c.Locals("user").(models.User)
if err := c.BodyParser(&data); err != nil {
return fiber.ErrBadRequest
}
if data["name"] == "" || data["description"] == "" {
return fiber.ErrBadRequest
}
if user.Blocked == "S" || user.Cancelled == "S" {
return fiber.ErrForbidden
}
dateformat := "02/01/2006 15:04"
if data["startDt"] == "" {
return fiber.ErrBadRequest
} else {
startdt, err = time.Parse(dateformat, data["startDt"])
if err != nil {
return fiber.ErrBadRequest
}
}
event := models.Event{
Name: data["name"],
Description: data["description"],
UserId: user.ID,
ExpectedDate: startdt,
EventType: data["eventtype"],
}
database.DB.Create(&event)
if event.ID == 0 {
return fiber.ErrNotAcceptable
}
return c.JSON(event)
}
// GetAllEvents - Returns all events
func GetAllEvents(c *fiber.Ctx) error {
var events []models.Event
user := c.Locals("user").(models.User)
if user.UserType != "A" {
return fiber.ErrUnauthorized
}
database.DB.Find(&events)
if len(events) == 0 {
return fiber.ErrNotFound
}
return c.JSON(events)
}
// GetEventsByUser - Returns all events from a user
func GetEventsByUser(c *fiber.Ctx) error {
var events []models.Event
user := c.Locals("user").(models.User)
if user.UserType != "A" {
return fiber.ErrUnauthorized
}
database.DB.Where("id = ?", c.Params("id")).First(&user)
if user.ID == 0 {
return fiber.ErrUnauthorized
}
database.DB.Where("user_id = ?", user.ID).Find(&events)
if len(events) == 0 {
return fiber.ErrNotFound
}
return c.JSON(events)
}