import {ECommon_Model_Workflow_Node_Status} from "../../../common/model/workflow_node"; import workflowApi from "../../../common/routes/workflow"; import {Err} from "../../../common/status/error"; import {DComponent} from "../../common/decorate/component"; import {DHttpApi, DHttpController, DHttpReqParam, DHttpReqParamRequired, DHttpUser} from "../../common/http/http"; import {WorkflowActionService, WorkflowService} from "../service/workflow"; import {WorkflowNodeService} from './../service/workflow'; import {IUserSession} from "../../user/types/config"; @DComponent @DHttpController(workflowApi) class WorkflowController { @DHttpApi(workflowApi.routes.info) async info(@DHttpReqParamRequired("issueTypeId") issueTypeId: string): Promise { let ret = await WorkflowService.info(issueTypeId) return ret; } @DHttpApi(workflowApi.routes.addNode) async addNode(@DHttpReqParamRequired("issueTypeId") issueTypeId: string, @DHttpReqParamRequired("name") name: string, @DHttpReqParam("description") description: string, @DHttpReqParam("status") status: ECommon_Model_Workflow_Node_Status,@DHttpReqParamRequired("x") x: number,@DHttpReqParamRequired("y") y: number): Promise { let obj = new WorkflowNodeService; obj.assignItem({ issue_type_id: issueTypeId, name: name, description: description, status: status, x, y }) let ret = await obj.create() return ret; } @DHttpApi(workflowApi.routes.editNode) async editNode(@DHttpReqParamRequired("workflowNodeId") workflowNodeId: string, @DHttpReqParam("name") name: string, @DHttpReqParam("description") description: string, @DHttpReqParam("status") status: ECommon_Model_Workflow_Node_Status,@DHttpReqParam("x") x: number,@DHttpReqParam("y") y: number): Promise { let obj = await WorkflowNodeService.getItemById(workflowNodeId); if (!obj) { throw Err.Project.Workflow.workflowNodeNotFound } if ((obj.getItem().status==ECommon_Model_Workflow_Node_Status.NOTSTART && status!==undefined && status!==ECommon_Model_Workflow_Node_Status.NOTSTART) || (obj.getItem().status!=ECommon_Model_Workflow_Node_Status.NOTSTART && status===ECommon_Model_Workflow_Node_Status.NOTSTART)) { throw Err.Project.Workflow.workflowNodeForbidden } obj.assignItem({ name: name, description: description, status: status, x:x, y:y }) let ret = await obj.update() return ret; } @DHttpApi(workflowApi.routes.deleteNode) async deleteNode(@DHttpReqParamRequired("workflowNodeId") workflowNodeId: string): Promise { let obj = await WorkflowNodeService.getItemById(workflowNodeId); if (!obj) { throw Err.Project.Workflow.workflowNodeNotFound } if (obj.getItem().status==ECommon_Model_Workflow_Node_Status.NOTSTART) { throw Err.Project.Workflow.workflowNodeForbidden } await obj.delete() return; } @DHttpApi(workflowApi.routes.addAction) async addAction(@DHttpReqParamRequired("issueTypeId") issueTypeId: string, @DHttpReqParamRequired("name") name: string, @DHttpReqParam("description") description: string, @DHttpReqParamRequired("sourceNodeId") sourceNodeId: string,@DHttpReqParamRequired("destNodeId") destNodeId: string): Promise { let obj = new WorkflowActionService; obj.assignItem({ issue_type_id: issueTypeId, name: name, description: description, source_node_id:sourceNodeId, dest_node_id:destNodeId }) let ret = await obj.create() return ret; } @DHttpApi(workflowApi.routes.editAction) async editAction(@DHttpReqParamRequired("workflowActionId") workflowActionId: string, @DHttpReqParamRequired("name") name: string, @DHttpReqParam("description") description: string, @DHttpReqParam("sourceNodeId") sourceNodeId: string,@DHttpReqParam("destNodeId") destNodeId: string): Promise { let obj = await WorkflowActionService.getItemById(workflowActionId); if (!obj) { throw Err.Project.Workflow.workflowActionNotFound } obj.assignItem({ name: name, description: description, source_node_id:sourceNodeId, dest_node_id:destNodeId }) let ret = await obj.update() return ret; } @DHttpApi(workflowApi.routes.deleteAction) async deleteAction(@DHttpReqParamRequired("workflowActionId") workflowActionId: string): Promise { let obj = await WorkflowActionService.getItemById(workflowActionId); if (!obj) { throw Err.Project.Workflow.workflowActionNotFound } await obj.delete() return; } @DHttpApi(workflowApi.routes.listAllNode) async listAllNode(@DHttpUser user:IUserSession): Promise { let ret=await WorkflowNodeService.listAllNode(user.organizationInfo.organizationId) return ret; } }