add today endpoint
This commit is contained in:
@@ -8,7 +8,9 @@ import (
|
||||
"github.com/google/uuid"
|
||||
"github.com/hashicorp/go-set"
|
||||
"github.com/labstack/echo/v4"
|
||||
"gorm.io/gorm"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
// swagger:route POST /events/ Events CreateEvent
|
||||
@@ -91,7 +93,6 @@ func (h *Handler) CreateEvent(c echo.Context) (err error) {
|
||||
// 200: []Event
|
||||
|
||||
func (h *Handler) GetEvents(c echo.Context) (err error) {
|
||||
var events []model.Event
|
||||
query := c.Request().URL.Query()
|
||||
orgId, err := uuid.Parse(c.Request().Header.Get("X-User-Organization-Id"))
|
||||
|
||||
@@ -105,30 +106,29 @@ func (h *Handler) GetEvents(c echo.Context) (err error) {
|
||||
tx = tx.Where("start >= ?", query.Get("start")).Where("\"end\" <= ?", query.Get("end"))
|
||||
}
|
||||
|
||||
tx.Find(&events)
|
||||
return h.queryEvents(tx, c)
|
||||
}
|
||||
|
||||
userIds := set.New[uuid.UUID](len(events) * 2)
|
||||
personIds := set.New[uuid.UUID](len(events))
|
||||
// swagger:route GET /events/today Events GetEventsToday
|
||||
//
|
||||
// responses:
|
||||
// 200: []Event
|
||||
|
||||
for _, event := range events {
|
||||
userIds.Insert(event.MedicId)
|
||||
userIds.Insert(event.AuthorId)
|
||||
personIds.Insert(event.PersonId)
|
||||
}
|
||||
func (h *Handler) GetEventsToday(c echo.Context) (err error) {
|
||||
orgId, err := uuid.Parse(c.Request().Header.Get("X-User-Organization-Id"))
|
||||
|
||||
usersMap, err := services.GetUsers(userIds.Slice(), c.Request().Header)
|
||||
personsMap, err := services.GetPersons(personIds.Slice(), c.Request().Header)
|
||||
if err != nil {
|
||||
return c.HTML(http.StatusBadGateway, err.Error())
|
||||
return c.NoContent(http.StatusUnauthorized)
|
||||
}
|
||||
|
||||
for i, event := range events {
|
||||
events[i].Author = usersMap[event.AuthorId]
|
||||
events[i].Medic = usersMap[event.MedicId]
|
||||
events[i].Person = personsMap[event.PersonId]
|
||||
}
|
||||
tx := h.DB.Where("org_id = ?", orgId)
|
||||
|
||||
return c.JSON(http.StatusOK, events)
|
||||
currentDate := time.Now().Format(time.DateOnly)
|
||||
nextDate := time.Now().Add(24 * time.Hour).Format(time.DateOnly)
|
||||
|
||||
tx = tx.Where("start >= ?", currentDate).Where("\"end\" < ?", nextDate)
|
||||
|
||||
return h.queryEvents(tx, c)
|
||||
}
|
||||
|
||||
// swagger:route GET /events/{uuid} Events GetEvent
|
||||
@@ -187,3 +187,31 @@ func (h *Handler) DeleteEvent(c echo.Context) error {
|
||||
|
||||
return c.NoContent(http.StatusOK)
|
||||
}
|
||||
|
||||
func (h *Handler) queryEvents(tx *gorm.DB, c echo.Context) error {
|
||||
var events []model.Event
|
||||
tx.Find(&events)
|
||||
|
||||
userIds := set.New[uuid.UUID](len(events) * 2)
|
||||
personIds := set.New[uuid.UUID](len(events))
|
||||
|
||||
for _, event := range events {
|
||||
userIds.Insert(event.MedicId)
|
||||
userIds.Insert(event.AuthorId)
|
||||
personIds.Insert(event.PersonId)
|
||||
}
|
||||
|
||||
usersMap, err := services.GetUsers(userIds.Slice(), c.Request().Header)
|
||||
personsMap, err := services.GetPersons(personIds.Slice(), c.Request().Header)
|
||||
if err != nil {
|
||||
return c.HTML(http.StatusBadGateway, err.Error())
|
||||
}
|
||||
|
||||
for i, event := range events {
|
||||
events[i].Author = usersMap[event.AuthorId]
|
||||
events[i].Medic = usersMap[event.MedicId]
|
||||
events[i].Person = personsMap[event.PersonId]
|
||||
}
|
||||
|
||||
return c.JSON(http.StatusOK, events)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user