Assign an item to the Person who started it
[
{
"type": "source:targetprocess:EntityChanged",
"entityTypes": [
"UserStory",
"Task",
"Bug",
"Feature",
"Epic",
"Request",
"PortfolioEpic"
],
"modifications": {
"created": false,
"deleted": false,
"updated": [
"StartDate"
]
}
},
{
"type": "filter:Relational",
"or": [
{
"and": [
{
"target": {
"type": "field",
"name": "StartDate",
"target": {
"type": "pipelineBlockOutput"
}
},
"value": null,
"operator": {
"type": "exists"
}
},
{
"target": {
"type": "field",
"name": "StartDate",
"target": {
"type": "field",
"name": "Previous",
"target": {
"type": "pipelineBlockOutput"
}
}
},
"value": null,
"operator": {
"type": "not exists"
}
}
]
}
]
},
{
"type": "action:JavaScript",
"script": "const api = context.getService(\"targetprocess/api/v2\");\nconst userId = args.Author.Id;\n\nconst projects = await api.queryAsync(\"Project\", {\n select: `{member:projectmembers.where(user.id=${userId}).first.role.id,` +\n `roles:process.entitystates.where(entitytype.name=\"${args.ResourceType}\" and role!=null).select(role.id).distinct()}`,\n where: `id=${args.Current.Project.Id}`\n});\nconst project = projects[0];\nconst roleId = project.roles.includes(project.member) ? project.member : project.roles[0];\n\nconst users = await api.queryAsync(\"Assignments\", {\n result: \"count\",\n where: `assignable.id=${args.ResourceId} and generalUser.id=${args.Author.Id} and role.id=${roleId}`\n});\nif (users > 0) { return; }\n\nreturn {\n command: \"targetprocess:CreateResource\",\n payload: {\n resourceType: \"Assignment\",\n fields: {\n Assignable: { Id: args.ResourceId },\n Role: { Id: roleId },\n GeneralUser: { Id: userId }\n }\n }\n}"
}
]
Updated over 5 years ago