group task steps

main
alex 2023-08-30 22:24:59 +02:00
parent c70b1c396a
commit f09391b21f
5 changed files with 235 additions and 54 deletions

View File

@ -855,6 +855,36 @@ func GetAllGroupTasksSteps() []structs.GroupTaskSteps {
return groupTaskStepsLogs
}
func GetGroupTaskSteps(groupTaskId string) structs.GetGroupTaskStepsResponse {
var groupTask structs.GroupTasks
database.DB.Where("id = ?", groupTaskId).Find(&groupTask)
var groupTaskSteps []structs.GroupTaskSteps
database.DB.Where("group_tasks_id = ?", groupTaskId).Find(&groupTaskSteps)
lockedGroupTaskSteps := cache.GetLockedGroupTaskSteps()
groupTaskStepsInputs := cache.GetGroupTaskStepsInputs()
for i, groupTaskStep := range groupTaskSteps {
if groupTaskStep.Status == utils.GroupTasksStatusInputRequired {
groupTaskSteps[i].Inputs = cache.GetGroupTaskStepsInputsValue(groupTaskStepsInputs, groupTaskStep.GroupTasksId, groupTaskStep.Step)
for _, lockedGroupTaskStep := range lockedGroupTaskSteps {
if groupTaskStep.GroupTasksId == lockedGroupTaskStep.GroupTaskId {
groupTaskSteps[i].LockedByUserId = lockedGroupTaskStep.LockedByUserId
}
}
}
}
return structs.GetGroupTaskStepsResponse{
GroupTask: groupTask,
GroupTaskSteps: groupTaskSteps,
}
}
func GetCategoryGroupTaskByCategoryAndGroupId(category string, groupId string) structs.Group {
for _, categoryGroup := range cache.GetCategoryGroups() {
if categoryGroup.Category == category {

View File

@ -23,6 +23,7 @@ type GroupTasks struct {
RememberId string `gorm:"-"` // used by the web client who requested this to open the modal after the backend sent the NewGroupTaskStarted message
}
// swagger:model GroupTaskSteps
type GroupTaskSteps struct {
Id string
GroupTasksId string
@ -114,3 +115,15 @@ type GroupTasksResponse struct {
GroupTasks []GroupTasks
TotalPages int
}
// swagger:model GroupTasksStepsRequest
type GroupTaskStepsRequest struct {
Category string
GroupTaskId string
}
// swagger:model GetGroupTaskStepsResponse
type GetGroupTaskStepsResponse struct {
GroupTask GroupTasks
GroupTaskSteps []GroupTaskSteps
}

View File

@ -275,42 +275,6 @@
}
}
},
"/grouptasks": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"grouptask"
],
"summary": "Get all group tasks",
"operationId": "grouptaskGetGroupTasks",
"parameters": [
{
"description": "You can create a new api key in your user profile",
"name": "X-Api-Key",
"in": "header"
}
],
"responses": {
"200": {
"description": "All group tasks",
"schema": {
"$ref": "#/definitions/GroupTasksResponse"
}
},
"401": {
"description": "No permissions"
},
"500": {
"description": "Failed to get group tasks"
}
}
}
},
"/grouptasks/start": {
"post": {
"consumes": [
@ -320,7 +284,7 @@
"application/json"
],
"tags": [
"grouptask"
"grouptasks"
],
"summary": "Start a new group task",
"operationId": "grouptaskStartGroupTask",
@ -357,6 +321,96 @@
}
}
},
"/grouptasks/{category}": {
"get": {
"produces": [
"application/json"
],
"tags": [
"grouptasks"
],
"summary": "Get group tasks",
"operationId": "grouptaskGetGroupTasks",
"parameters": [
{
"description": "Category of the group tasks",
"name": "category",
"in": "query",
"required": true
},
{
"description": "Page number",
"name": "page",
"in": "query"
},
{
"description": "Number of items per page",
"name": "perPage",
"in": "query"
}
],
"responses": {
"200": {
"description": "Group tasks",
"schema": {
"$ref": "#/definitions/GroupTasksResponse"
}
},
"400": {
"description": "Invalid request query"
},
"401": {
"description": "No permissions"
},
"500": {
"description": "Failed to get group tasks"
}
}
}
},
"/grouptasks/{category}/steps/{groupTaskId}": {
"get": {
"produces": [
"application/json"
],
"tags": [
"grouptasks"
],
"summary": "Get group task steps",
"operationId": "grouptaskGetGroupTaskSteps",
"parameters": [
{
"description": "Category of the group tasks",
"name": "category",
"in": "query",
"required": true
},
{
"description": "Id of the group task",
"name": "groupTaskId",
"in": "query",
"required": true
}
],
"responses": {
"200": {
"description": "Group task steps",
"schema": {
"$ref": "#/definitions/GroupTaskSteps"
}
},
"400": {
"description": "Invalid request query"
},
"401": {
"description": "No permissions"
},
"500": {
"description": "Failed to get group task steps"
}
}
}
},
"/user/auth/login": {
"post": {
"consumes": [
@ -800,6 +854,10 @@
"Status": {
"type": "integer",
"format": "int64"
},
"TotalPages": {
"type": "integer",
"format": "int64"
}
},
"x-go-package": "jannex/admin-dashboard-backend/modules/structs"
@ -950,11 +1008,8 @@
"GroupTasksResponse": {
"type": "object",
"properties": {
"CategoryGroups": {
"type": "array",
"items": {
"$ref": "#/definitions/CategoryGroup"
}
"CategoryGroup": {
"$ref": "#/definitions/CategoryGroup"
},
"GroupTasks": {
"type": "array",
@ -962,15 +1017,26 @@
"$ref": "#/definitions/GroupTasks"
}
},
"GroupTasksSteps": {
"type": "array",
"items": {
"$ref": "#/definitions/GroupTaskSteps"
}
"TotalPages": {
"type": "integer",
"format": "int64"
}
},
"x-go-package": "jannex/admin-dashboard-backend/modules/structs"
},
"GroupTasksStepsRequest": {
"type": "object",
"properties": {
"Category": {
"type": "string"
},
"GroupTaskId": {
"type": "string"
}
},
"x-go-name": "GroupTaskStepsRequest",
"x-go-package": "jannex/admin-dashboard-backend/modules/structs"
},
"Role": {
"type": "object",
"properties": {
@ -1104,7 +1170,7 @@
"UserInfoResponse": {
"type": "object",
"properties": {
"AvailableGroupTasks": {
"AvailableCategoryGroups": {
"type": "array",
"items": {
"type": "string"

View File

@ -13,21 +13,52 @@ import (
)
func GetGroupTasks(c *fiber.Ctx) error {
// swagger:operation GET /grouptasks/{category} grouptasks grouptaskGetGroupTasks
// ---
// summary: Get group tasks
// produces:
// - application/json
// parameters:
// - name: category
// in: query
// description: Category of the group tasks
// required: true
// - name: page
// in: query
// description: Page number
// required: false
// - name: perPage
// in: query
// description: Number of items per page
// required: false
// responses:
// '200':
// description: Group tasks
// schema:
// "$ref": "#/definitions/GroupTasksResponse"
// '400':
// description: Invalid request query
// '401':
// description: No permissions
// '500':
// description: Failed to get group tasks
var params structs.GroupTasksRequest
if err := c.ParamsParser(&params); err != nil {
return c.SendStatus(fiber.StatusBadRequest)
}
if !socketclients.HasXYPermission(c.Locals("userId").(string), utils.PermissionGroupTasksOverviewXYView, params.Category) {
return c.SendStatus(fiber.StatusUnauthorized)
}
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)
var categoryGroup structs.CategoryGroup
for _, cGroup := range cache.GetCategoryGroups() {
@ -43,6 +74,46 @@ func GetGroupTasks(c *fiber.Ctx) error {
})
}
func GetGroupTaskSteps(c *fiber.Ctx) error {
// swagger:operation GET /grouptasks/{category}/steps/{groupTaskId} grouptasks grouptaskGetGroupTaskSteps
// ---
// summary: Get group task steps
// produces:
// - application/json
// parameters:
// - name: category
// in: query
// description: Category of the group tasks
// required: true
// - name: groupTaskId
// in: query
// description: Id of the group task
// required: true
// responses:
// '200':
// description: Group task steps
// schema:
// "$ref": "#/definitions/GroupTaskSteps"
// '400':
// description: Invalid request query
// '401':
// description: No permissions
// '500':
// description: Failed to get group task steps
var params structs.GroupTaskStepsRequest
if err := c.ParamsParser(&params); err != nil {
return c.SendStatus(fiber.StatusBadRequest)
}
if !socketclients.HasXYPermission(c.Locals("userId").(string), utils.PermissionGroupTasksOverviewXYView, params.Category) {
return c.SendStatus(fiber.StatusUnauthorized)
}
return c.JSON(grouptasks.GetGroupTaskSteps(params.GroupTaskId))
}
func StartGroupTask(c *fiber.Ctx) error {
// swagger:operation POST /grouptasks/start grouptasks grouptaskStartGroupTask
// ---

View File

@ -41,9 +41,10 @@ func SetupRoutes(app *fiber.App) {
l := v1.Group("/log")
l.Get("/", requestAccessValidation, log.GetSystemLog)
g := v1.Group("/grouptasks")
g.Get("/:category", requestAccessValidation, grouptasks.GetGroupTasks)
g.Post("/start", requestAccessValidation, grouptasks.StartGroupTask)
gs := v1.Group("/grouptasks")
gs.Get("/:category", requestAccessValidation, grouptasks.GetGroupTasks)
gs.Post("/start", requestAccessValidation, grouptasks.StartGroupTask)
gs.Get(":category/steps/:groupTaskId", requestAccessValidation, grouptasks.GetGroupTaskSteps)
e := v1.Group("/equipment")
e.Get("/documentations/:stockItemId", requestAccessValidation, equipment.GetEquipmentDocumentations)