102 lines
1.8 KiB
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)
|
|
}
|