From d094dec64e6dd299f14c3ecdea21894d6ab41ed2 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 29 Aug 2023 07:31:30 +0200 Subject: [PATCH] categories --- modules/equipment/equipment.go | 7 +--- modules/grouptasks/grouptasks.go | 4 +- modules/structs/grouptasks.go | 4 ++ modules/structs/user.go | 12 +++--- modules/utils/globals.go | 1 + modules/utils/utils.go | 13 ++++++ .../grouptask.go => grouptasks/grouptasks.go} | 40 ++++++++----------- routers/router/api/v1/logger/logger.go | 4 +- routers/router/api/v1/user/user.go | 22 +++++++--- routers/router/router.go | 6 +-- 10 files changed, 65 insertions(+), 48 deletions(-) rename routers/router/api/v1/{grouptask/grouptask.go => grouptasks/grouptasks.go} (86%) diff --git a/modules/equipment/equipment.go b/modules/equipment/equipment.go index 227ee38..d95e09a 100644 --- a/modules/equipment/equipment.go +++ b/modules/equipment/equipment.go @@ -175,12 +175,7 @@ func CreateEquipmentDocumentation(c *fiber.Ctx, body structs.CreateEquipmentDocu func GetEquipmentDocumentations(stockItemId string, query structs.PageQuery, c *fiber.Ctx) error { var documentations []structs.EquipmentDocumentation - offset := (query.Page - 1) * utils.EquipmentDocumentationsPaginationLimit - - database.DB.Limit(utils.EquipmentDocumentationsPaginationLimit). - Offset(offset). - Where("stock_item_id = ?", stockItemId). - Find(&documentations) + utils.DbPageQuery(query, utils.EquipmentDocumentationsPaginationLimit, &documentations, "stock_item_id = ?", stockItemId) var err error totalPages := 0 diff --git a/modules/grouptasks/grouptasks.go b/modules/grouptasks/grouptasks.go index 7b68f24..9df4efb 100644 --- a/modules/grouptasks/grouptasks.go +++ b/modules/grouptasks/grouptasks.go @@ -824,10 +824,10 @@ func updateGroupTaskSteps(groupTaskStep structs.GroupTaskSteps) { }) } -func GetAllGroupTasks() []structs.GroupTasks { +func GetAllGroupTasks(category string, query structs.PageQuery) []structs.GroupTasks { var groupTasks []structs.GroupTasks - database.DB.Find(&groupTasks) + utils.DbPageQuery(query, utils.GroupTasksPaginationLimit, &groupTasks, "category = ?", category) return groupTasks } diff --git a/modules/structs/grouptasks.go b/modules/structs/grouptasks.go index 80782b1..9f80c41 100644 --- a/modules/structs/grouptasks.go +++ b/modules/structs/grouptasks.go @@ -104,6 +104,10 @@ type ApiGroupTaskRequest struct { GlobalInputs json.RawMessage } +type GroupTasksRequest struct { + Category string +} + // swagger:model GroupTasksResponse type GroupTasksResponse struct { CategoryGroups []CategoryGroup diff --git a/modules/structs/user.go b/modules/structs/user.go index e27b29e..5ef82fa 100644 --- a/modules/structs/user.go +++ b/modules/structs/user.go @@ -58,12 +58,12 @@ type UserApiKey struct { // swagger:model UserInfoResponse type UserInfoResponse struct { - UserId string - Username string - Avatar string - Permissions []string - AvailableGroupTasks []string - Users []AllUsers + UserId string + Username string + Avatar string + Permissions []string + AvailableCategoryGroups []string + Users []AllUsers } // swagger:model UserProfileResponse diff --git a/modules/utils/globals.go b/modules/utils/globals.go index 2d198c7..bef8a5a 100644 --- a/modules/utils/globals.go +++ b/modules/utils/globals.go @@ -37,6 +37,7 @@ const ( ConnectionStateOnline = 1 EquipmentDocumentationsPaginationLimit = 3 + GroupTasksPaginationLimit = 10 ) var ( diff --git a/modules/utils/utils.go b/modules/utils/utils.go index 4abeaa1..da66da1 100644 --- a/modules/utils/utils.go +++ b/modules/utils/utils.go @@ -5,12 +5,14 @@ import ( "encoding/json" "errors" "jannex/admin-dashboard-backend/modules/database" + "jannex/admin-dashboard-backend/modules/structs" "math" "math/big" "time" "github.com/gofiber/fiber/v2" "github.com/rs/zerolog/log" + "gorm.io/gorm" ) func GetXAuhorizationHeader(c *fiber.Ctx) string { @@ -123,3 +125,14 @@ func GetTotalPages(any interface{}, stockItemId string, whereQuery interface{}, return int(math.Ceil(float64(totalPages) / float64(EquipmentDocumentationsPaginationLimit))) } + +func GetPageOffset(page int) int { + return (page - 1) * EquipmentDocumentationsPaginationLimit +} + +func DbPageQuery(query structs.PageQuery, paginationLimit int, result any, whereQuery interface{}, args ...interface{}) *gorm.DB { + return database.DB.Limit(paginationLimit). + Offset(GetPageOffset(query.Page)). + Where(whereQuery, args). + Find(result) +} diff --git a/routers/router/api/v1/grouptask/grouptask.go b/routers/router/api/v1/grouptasks/grouptasks.go similarity index 86% rename from routers/router/api/v1/grouptask/grouptask.go rename to routers/router/api/v1/grouptasks/grouptasks.go index c12a5cc..a0ca185 100644 --- a/routers/router/api/v1/grouptask/grouptask.go +++ b/routers/router/api/v1/grouptasks/grouptasks.go @@ -1,4 +1,4 @@ -package grouptask +package grouptasks import ( "encoding/json" @@ -13,36 +13,30 @@ import ( ) func GetGroupTasks(c *fiber.Ctx) error { - // swagger:operation GET /grouptasks grouptask grouptaskGetGroupTasks - // --- - // summary: Get all group tasks - // consumes: - // - application/json - // produces: - // - application/json - // parameters: - // - name: X-Api-Key - // in: header - // description: You can create a new api key in your user profile - // responses: - // '200': - // description: All group tasks - // schema: - // "$ref": "#/definitions/GroupTasksResponse" - // '401': - // description: No permissions - // '500': - // description: Failed to get group tasks + var params structs.GroupTasksRequest + + if err := c.ParamsParser(¶ms); err != nil { + return c.SendStatus(fiber.StatusBadRequest) + } + + var query structs.PageQuery + + if err := c.QueryParser(&query); err != nil { + return c.SendStatus(fiber.StatusBadRequest) + } + + log.Info().Msgf("params: %v", params) + log.Info().Msgf("query: %v", query) return c.JSON(structs.GroupTasksResponse{ CategoryGroups: cache.GetCategoryGroupsSorted(), - GroupTasks: grouptasks.GetAllGroupTasks(), + GroupTasks: grouptasks.GetAllGroupTasks(params.Category, query), GroupTasksSteps: grouptasks.GetAllGroupTasksSteps(), }) } func StartGroupTask(c *fiber.Ctx) error { - // swagger:operation POST /grouptasks/start grouptask grouptaskStartGroupTask + // swagger:operation POST /grouptasks/start grouptasks grouptaskStartGroupTask // --- // summary: Start a new group task // consumes: diff --git a/routers/router/api/v1/logger/logger.go b/routers/router/api/v1/logger/logger.go index 743943b..c4eab4e 100644 --- a/routers/router/api/v1/logger/logger.go +++ b/routers/router/api/v1/logger/logger.go @@ -50,7 +50,7 @@ func GetSystemLog(c *fiber.Ctx) error { Users: socketclients.GetAllUsers(), Roles: socketclients.GetAllRoles(), CategoryGroups: cache.GetCategoryGroupsSorted(), - GroupTasks: grouptasks.GetAllGroupTasks(), + GroupTasks: grouptasks.GetAllGroupTasks("", structs.PageQuery{}), GroupTasksSteps: grouptasks.GetAllGroupTasksSteps(), }) } @@ -62,7 +62,7 @@ func GetSystemLog(c *fiber.Ctx) error { Users: socketclients.GetAllUsers(), Roles: socketclients.GetAllRoles(), CategoryGroups: cache.GetCategoryGroupsSorted(), - GroupTasks: grouptasks.GetAllGroupTasks(), + GroupTasks: grouptasks.GetAllGroupTasks("", structs.PageQuery{}), GroupTasksSteps: grouptasks.GetAllGroupTasksSteps(), }) } diff --git a/routers/router/api/v1/user/user.go b/routers/router/api/v1/user/user.go index 384a930..8bcca8d 100644 --- a/routers/router/api/v1/user/user.go +++ b/routers/router/api/v1/user/user.go @@ -1,8 +1,10 @@ package user import ( + "jannex/admin-dashboard-backend/modules/cache" "jannex/admin-dashboard-backend/modules/database" "jannex/admin-dashboard-backend/modules/structs" + "jannex/admin-dashboard-backend/modules/utils" "jannex/admin-dashboard-backend/socketclients" "github.com/gofiber/fiber/v2" @@ -34,12 +36,20 @@ func UserInfo(c *fiber.Ctx) error { database.DB.Select("id, username, avatar", "role_id").First(&user, "id = ?", c.Locals("userId").(string)) + var categories []string + + for _, categoryGroup := range cache.GetCategoryGroups() { + if socketclients.HasXYPermission(user.Id, utils.PermissionGroupTasksOverviewXYView, categoryGroup.Category) { + categories = append(categories, categoryGroup.Category) + } + } + return c.JSON(structs.UserInfoResponse{ - UserId: user.Id, - Username: user.Username, - Avatar: user.Avatar, - Permissions: socketclients.GetPermissionsByRoleId(user.RoleId), - AvailableGroupTasks: []string{}, - Users: socketclients.GetAllUsers(), + UserId: user.Id, + Username: user.Username, + Avatar: user.Avatar, + Permissions: socketclients.GetPermissionsByRoleId(user.RoleId), + AvailableCategoryGroups: categories, + Users: socketclients.GetAllUsers(), }) } diff --git a/routers/router/router.go b/routers/router/router.go index f03164f..2ab79f9 100644 --- a/routers/router/router.go +++ b/routers/router/router.go @@ -8,7 +8,7 @@ import ( "jannex/admin-dashboard-backend/modules/utils" adminarea "jannex/admin-dashboard-backend/routers/router/api/v1/adminArea" "jannex/admin-dashboard-backend/routers/router/api/v1/equipment" - "jannex/admin-dashboard-backend/routers/router/api/v1/grouptask" + "jannex/admin-dashboard-backend/routers/router/api/v1/grouptasks" log "jannex/admin-dashboard-backend/routers/router/api/v1/logger" "jannex/admin-dashboard-backend/routers/router/api/v1/user" "jannex/admin-dashboard-backend/routers/router/api/v1/users" @@ -42,8 +42,8 @@ func SetupRoutes(app *fiber.App) { l.Get("/", requestAccessValidation, log.GetSystemLog) g := v1.Group("/grouptasks") - g.Get("/", requestAccessValidation, grouptask.GetGroupTasks) - g.Post("/start", requestAccessValidation, grouptask.StartGroupTask) + g.Get("/:category", requestAccessValidation, grouptasks.GetGroupTasks) + g.Post("/start", requestAccessValidation, grouptasks.StartGroupTask) e := v1.Group("/equipment") e.Get("/documentations/:stockItemId", requestAccessValidation, equipment.GetEquipmentDocumentations)