added availability changing to events view
This commit is contained in:
@@ -35,6 +35,11 @@ type EventWithAvailabilities struct {
|
||||
Availabilities availabilities.AvailabilityMap `json:"availabilities"`
|
||||
}
|
||||
|
||||
type EventWithAssignmentsUserAvailability struct {
|
||||
EventWithAssignments
|
||||
Availability *int `json:"availability" db:"availabilityID"`
|
||||
}
|
||||
|
||||
type EventCreate struct {
|
||||
Date string `db:"date" json:"date" validate:"required,datetime=2006-01-02T15:04:05.999999999Z"`
|
||||
Description string `db:"description" json:"description"`
|
||||
@@ -54,6 +59,19 @@ func (e EventData) WithAssignments() (EventWithAssignments, error) {
|
||||
}
|
||||
}
|
||||
|
||||
func (e EventWithAssignments) WithUserAvailability(userName string) (EventWithAssignmentsUserAvailability, error) {
|
||||
// get the availability of the user
|
||||
event := EventWithAssignmentsUserAvailability{
|
||||
EventWithAssignments: e,
|
||||
}
|
||||
|
||||
if err := db.DB.Select(&event, "SELECT availabilityID FROM USER_AVAILABILITIES WHERE eventID = $1 AND userName = $2", e.EventID, userName); err != nil {
|
||||
return EventWithAssignmentsUserAvailability{}, err
|
||||
} else {
|
||||
return event, nil
|
||||
}
|
||||
}
|
||||
|
||||
func (e EventData) WithAvailabilities() (EventWithAvailabilities, error) {
|
||||
// get the event with assignments
|
||||
if event, err := e.WithAssignments(); err != nil {
|
||||
@@ -217,6 +235,26 @@ func WithAvailabilities() ([]EventWithAvailabilities, error) {
|
||||
}
|
||||
}
|
||||
|
||||
func WithUserAvailability(userName string) ([]EventWithAssignmentsUserAvailability, error) {
|
||||
var 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", userName); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
// get the assignments for every event
|
||||
for ii, event := range events {
|
||||
if eventWithAssignments, err := event.EventWithAssignments.EventData.WithAssignments(); err != nil {
|
||||
// remove the current event from the events
|
||||
events = append(events[:ii], events[ii+1:]...)
|
||||
} else {
|
||||
events[ii].EventWithAssignments = eventWithAssignments
|
||||
}
|
||||
}
|
||||
|
||||
return events, nil
|
||||
}
|
||||
}
|
||||
|
||||
func UserPending(userName string) ([]EventData, error) {
|
||||
var result []EventData
|
||||
|
||||
|
||||
@@ -90,6 +90,17 @@ func (a *Handler) getEventsAvailabilities() {
|
||||
}
|
||||
}
|
||||
|
||||
func (a *Handler) getEventUserAssignmentAvailability() {
|
||||
// retrieve the assignments
|
||||
if events, err := events.WithUserAvailability(a.UserName); err != nil {
|
||||
a.Status = fiber.StatusBadRequest
|
||||
|
||||
logger.Log().Msgf("getting events with tasks and user-availability failed: %v", err)
|
||||
} else {
|
||||
a.Data = events
|
||||
}
|
||||
}
|
||||
|
||||
func (a *Handler) getEventsUserPending() {
|
||||
if events, err := events.UserPending(a.UserName); err != nil {
|
||||
a.Status = fiber.StatusInternalServerError
|
||||
|
||||
@@ -83,6 +83,9 @@ func init() {
|
||||
// all events with the availabilities of the individual users
|
||||
"events/availabilities": (*Handler).getEventsAvailabilities,
|
||||
|
||||
// all events with the task-assignments and the availability of the current user
|
||||
"events/user/assignmentAvailability": (*Handler).getEventUserAssignmentAvailability,
|
||||
|
||||
// events the user has to enter his availability for
|
||||
"events/user/pending": (*Handler).getEventsUserPending,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user