mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2025-07-24 13:38:48 +02:00
update for frontend
This commit is contained in:
40
addRoute.go
40
addRoute.go
@@ -5,6 +5,7 @@ import (
|
|||||||
"github.com/pocketbase/pocketbase"
|
"github.com/pocketbase/pocketbase"
|
||||||
"github.com/pocketbase/pocketbase/apis"
|
"github.com/pocketbase/pocketbase/apis"
|
||||||
"github.com/pocketbase/pocketbase/core"
|
"github.com/pocketbase/pocketbase/core"
|
||||||
|
"htwk-planner/service/events"
|
||||||
"htwk-planner/service/fetch"
|
"htwk-planner/service/fetch"
|
||||||
"htwk-planner/service/ical"
|
"htwk-planner/service/ical"
|
||||||
"htwk-planner/service/room"
|
"htwk-planner/service/room"
|
||||||
@@ -75,8 +76,8 @@ func addRoutes(app *pocketbase.PocketBase) {
|
|||||||
Method: http.MethodGet,
|
Method: http.MethodGet,
|
||||||
Path: "/api/feedURL",
|
Path: "/api/feedURL",
|
||||||
Handler: func(c echo.Context) error {
|
Handler: func(c echo.Context) error {
|
||||||
course := c.Request().Header.Get("course")
|
course := c.QueryParam("course")
|
||||||
semester := c.Request().Header.Get("semester")
|
semester := c.QueryParam("semester")
|
||||||
return ical.FeedURL(c, app, course, semester)
|
return ical.FeedURL(c, app, course, semester)
|
||||||
},
|
},
|
||||||
Middlewares: []echo.MiddlewareFunc{
|
Middlewares: []echo.MiddlewareFunc{
|
||||||
@@ -107,4 +108,39 @@ func addRoutes(app *pocketbase.PocketBase) {
|
|||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
|
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
|
||||||
|
_, err := e.Router.AddRoute(echo.Route{
|
||||||
|
Method: http.MethodGet,
|
||||||
|
Path: "/api/modules",
|
||||||
|
Handler: func(c echo.Context) error {
|
||||||
|
course := c.QueryParam("course")
|
||||||
|
semester := c.QueryParam("semester")
|
||||||
|
return events.GetModulesForCourseDistinct(app, c, course, semester)
|
||||||
|
},
|
||||||
|
Middlewares: []echo.MiddlewareFunc{
|
||||||
|
apis.ActivityLogger(app),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
|
||||||
|
_, err := e.Router.AddRoute(echo.Route{
|
||||||
|
Method: http.MethodGet,
|
||||||
|
Path: "/api/courses",
|
||||||
|
Handler: func(c echo.Context) error {
|
||||||
|
return events.GetAllCourses(app, c)
|
||||||
|
},
|
||||||
|
Middlewares: []echo.MiddlewareFunc{
|
||||||
|
apis.ActivityLogger(app),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
@@ -113,3 +113,23 @@ func GetPlanForCourseAndSemester(app *pocketbase.PocketBase, course string, seme
|
|||||||
}
|
}
|
||||||
return events
|
return events
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetAllModulesForCourse(app *pocketbase.PocketBase, course string, semester string) ([]string, error) {
|
||||||
|
var events []struct {
|
||||||
|
Name string `db:"Name" json:"Name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
var eventArray []string
|
||||||
|
|
||||||
|
// get all events from event records in the events collection
|
||||||
|
err := app.Dao().DB().Select("Name").From("events").Where(dbx.NewExp("course = {:course} AND semester = {:semester}", dbx.Params{"course": course, "semester": semester})).Distinct(true).All(&events)
|
||||||
|
if err != nil {
|
||||||
|
print("Error while getting events from database: ", err)
|
||||||
|
return eventArray, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, event := range events {
|
||||||
|
eventArray = append(eventArray, event.Name)
|
||||||
|
}
|
||||||
|
return eventArray, nil
|
||||||
|
}
|
||||||
|
@@ -25,7 +25,7 @@ func SaveGroups(seminarGroup []model.SeminarGroup, collection *models.Collection
|
|||||||
func GetAllCourses(app *pocketbase.PocketBase) []string {
|
func GetAllCourses(app *pocketbase.PocketBase) []string {
|
||||||
|
|
||||||
var courses []struct {
|
var courses []struct {
|
||||||
Rooms string `db:"course" json:"course"`
|
CourseShortcut string `db:"course" json:"course"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// get all rooms from event records in the events collection
|
// get all rooms from event records in the events collection
|
||||||
@@ -37,8 +37,8 @@ func GetAllCourses(app *pocketbase.PocketBase) []string {
|
|||||||
|
|
||||||
var courseArray []string
|
var courseArray []string
|
||||||
|
|
||||||
for _, room := range courses {
|
for _, course := range courses {
|
||||||
courseArray = append(courseArray, room.Rooms)
|
courseArray = append(courseArray, course.CourseShortcut)
|
||||||
}
|
}
|
||||||
|
|
||||||
return courseArray
|
return courseArray
|
||||||
|
12
service/events/courseService.go
Normal file
12
service/events/courseService.go
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
package events
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/labstack/echo/v5"
|
||||||
|
"github.com/pocketbase/pocketbase"
|
||||||
|
"htwk-planner/service/db"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetAllCourses(app *pocketbase.PocketBase, c echo.Context) error {
|
||||||
|
courses := db.GetAllCourses(app)
|
||||||
|
return c.JSON(200, courses)
|
||||||
|
}
|
40
service/events/eventService.go
Normal file
40
service/events/eventService.go
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
package events
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/labstack/echo/v5"
|
||||||
|
"github.com/pocketbase/pocketbase"
|
||||||
|
"htwk-planner/service/db"
|
||||||
|
"unicode"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetModulesForCourseDistinct(app *pocketbase.PocketBase, c echo.Context, course string, semester string) error {
|
||||||
|
|
||||||
|
modules, err := db.GetAllModulesForCourse(app, course, semester)
|
||||||
|
replaceEmptyEntry(modules, "Sonderveranstaltungen")
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return c.JSON(400, err)
|
||||||
|
} else {
|
||||||
|
return c.JSON(200, modules)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func replaceEmptyEntry(courses []string, replacement string) {
|
||||||
|
//replace empty string with "Sonderveranstaltungen"
|
||||||
|
for i, course := range courses {
|
||||||
|
if checkIfOnlyWhitespace(course) {
|
||||||
|
courses[i] = replacement
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if course is empty or contains only whitespaces
|
||||||
|
func checkIfOnlyWhitespace(word string) bool {
|
||||||
|
for _, letter := range word {
|
||||||
|
if !unicode.IsSpace(letter) || !(letter == int32(160)) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
@@ -23,7 +23,7 @@ func FeedURL(c echo.Context, app *pocketbase.PocketBase, course string, semester
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return c.JSON(http.StatusOK, fmt.Sprintf("FeedToken: %s", token))
|
return c.JSON(http.StatusOK, fmt.Sprintf("FeedToken: %s, Course: %s, Semester: %s", token, course, semester))
|
||||||
}
|
}
|
||||||
|
|
||||||
func Feed(c echo.Context, app *pocketbase.PocketBase, token string) error {
|
func Feed(c echo.Context, app *pocketbase.PocketBase, token string) error {
|
||||||
|
Reference in New Issue
Block a user