added filter to don't show past events by default

This commit is contained in:
z1glr
2025-04-19 18:40:13 +00:00
parent a1a7549073
commit cc4555f175
13 changed files with 406 additions and 52 deletions

View File

@@ -217,10 +217,18 @@ func Update(event EventPatch) error {
}
}
func All() ([]EventData, error) {
func All(args ...string) ([]EventData, error) {
var since string
if len(args) > 0 && args[0] != "" {
since = args[0]
} else {
since = "0000-00-00"
}
var dbRows []EventData
if err := db.DB.Select(&dbRows, "SELECT * FROM EVENTS ORDER BY date"); err != nil {
if err := db.DB.Select(&dbRows, "SELECT * FROM EVENTS WHERE date >= $1 ORDER BY date", since); err != nil {
return nil, err
} else {
return dbRows, nil
@@ -246,9 +254,9 @@ func WithAssignments() ([]EventWithAssignments, error) {
}
}
func WithAvailabilities() ([]EventWithAvailabilities, error) {
func WithAvailabilities(since string) ([]EventWithAvailabilities, error) {
// get all events
if eventsDB, err := All(); err != nil {
if eventsDB, err := All(since); err != nil {
return nil, err
} else {
events := make([]EventWithAvailabilities, len(eventsDB))

View File

@@ -122,10 +122,18 @@ func (u *UserDB) ToUser() (User, error) {
}
}
func (userName UserName) WithUserAvailability() ([]events.EventWithAssignmentsUserAvailability, error) {
func (userName UserName) WithUserAvailability(args ...string) ([]events.EventWithAssignmentsUserAvailability, error) {
var since string
if len(args) > 0 && args[0] != "" {
since = args[0]
} else {
since = "0000-00-00"
}
var events []events.EventWithAssignmentsUserAvailability
if err := db.DB.Select(&events, "SELECT EVENTS.eventID, EVENTS.description, EVENTS.date, USER_AVAILABILITIES.availabilityID FROM EVENTS LEFT JOIN USER_AVAILABILITIES ON EVENTS.eventID = USER_AVAILABILITIES.eventID AND USER_AVAILABILITIES.userName = $1 ORDER BY date", userName); err != nil {
if err := db.DB.Select(&events, "SELECT EVENTS.eventID, EVENTS.description, EVENTS.date, USER_AVAILABILITIES.availabilityID FROM EVENTS LEFT JOIN USER_AVAILABILITIES ON EVENTS.eventID = USER_AVAILABILITIES.eventID AND USER_AVAILABILITIES.userName = $1 WHERE EVENTS.date >= $2 ORDER BY date", userName, since); err != nil {
return nil, err
} else {
// get the assignments for every event

View File

@@ -80,7 +80,10 @@ func (a *Handler) getEventsAssignments() {
}
func (a *Handler) getEventsAvailabilities() {
if events, err := events.WithAvailabilities(); err != nil {
// get the "since"-query-parameter
since := a.C.Query("since")
if events, err := events.WithAvailabilities(since); err != nil {
a.Status = fiber.StatusInternalServerError
logger.Error().Msgf("can't retrieve events with availabilities: %v", err)
@@ -91,7 +94,7 @@ func (a *Handler) getEventsAvailabilities() {
func (a *Handler) getEventUserAssignmentAvailability() {
// retrieve the assignments
if events, err := a.UserName.WithUserAvailability(); err != nil {
if events, err := a.UserName.WithUserAvailability(a.C.Query("since")); err != nil {
a.Status = fiber.StatusBadRequest
logger.Info().Msgf("getting events with tasks and user-availability failed: %v", err)

View File

@@ -6,12 +6,7 @@ import (
)
func (a *Handler) getUsers() {
// check admin
if !a.Admin {
a.Status = fiber.StatusForbidden
logger.Info().Msgf("user is no admin")
} else if users, err := users.Get(); err != nil {
if users, err := users.Get(); err != nil {
a.Status = fiber.StatusInternalServerError
logger.Error().Msgf("can't get users: %v", err)