Skip to content

Commit d013e7b

Browse files
authored
Merge pull request #120 from polarsquad/add-projectassignmentskill-functionality
Add functionality to interact with project assignment skills
2 parents cc056c4 + 8cb56b4 commit d013e7b

File tree

4 files changed

+109
-1
lines changed

4 files changed

+109
-1
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@polarsquad/cinode-api",
3-
"version": "0.12.4",
3+
"version": "0.12.5",
44
"description": "Cinode API for the Cinode platform",
55
"homepage": "https://github.com/polarsquad/cinode-api#readme",
66
"bugs": {

src/api.ts

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
Project,
2121
ProjectAssignment,
2222
ProjectAssignmentEdit,
23+
ProjectAssignmentMemberSkill,
2324
ProjectAssignmentWithStatus,
2425
ProjectBase,
2526
ProjectPipeline,
@@ -383,4 +384,60 @@ export class Api {
383384
.get(`v0.1/companies/${this.company.id}/teams/${teamId}`)
384385
.json<TeamBase>();
385386
}
387+
388+
addProjectAssignmentSkill(
389+
projectId: number,
390+
roleId: number,
391+
skill: string,
392+
level: number,
393+
isMandatory = false
394+
) {
395+
return this.client
396+
.post(
397+
`v0.1/companies/${this.company.id}/projects/${projectId}/roles/${roleId}/skills`,
398+
{
399+
headers: {
400+
'Content-type': 'application/json-patch+json',
401+
},
402+
json: {
403+
name: skill,
404+
level,
405+
isMandatory,
406+
},
407+
}
408+
)
409+
.json<ProjectAssignmentMemberSkill>();
410+
}
411+
412+
updateProjectAssignmentSkill(
413+
projectId: number,
414+
roleId: number,
415+
skillId: number,
416+
level: number,
417+
isMandatory = false
418+
) {
419+
return this.client
420+
.put(
421+
`v0.1/companies/${this.company.id}/projects/${projectId}/roles/${roleId}/skills/${skillId}`,
422+
{
423+
json: {
424+
level,
425+
isMandatory,
426+
},
427+
}
428+
)
429+
.json<ProjectAssignmentMemberSkill>();
430+
}
431+
432+
removeProjectAssignmentSkill(
433+
projectId: number,
434+
roleId: number,
435+
skillId: number
436+
) {
437+
return this.client
438+
.delete(
439+
`v0.1/companies/${this.company.id}/projects/${projectId}/roles/${roleId}/skills/${skillId}`
440+
)
441+
.json<void>();
442+
}
386443
}

src/service.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,4 +438,48 @@ export class CinodeService {
438438
async getTeam(teamId: number) {
439439
return this.api.getTeam(teamId);
440440
}
441+
442+
async addProjectAssignmentSkill(
443+
projectId: number,
444+
roleId: number,
445+
skill: string,
446+
level: number,
447+
isMandatory: boolean
448+
) {
449+
return await this.api.addProjectAssignmentSkill(
450+
projectId,
451+
roleId,
452+
skill,
453+
level,
454+
isMandatory
455+
);
456+
}
457+
458+
async updateProjectAssignmentSkill(
459+
projectId: number,
460+
roleId: number,
461+
skillId: number,
462+
level: number,
463+
isMandatory: boolean
464+
) {
465+
return await this.api.updateProjectAssignmentSkill(
466+
projectId,
467+
roleId,
468+
skillId,
469+
level,
470+
isMandatory
471+
);
472+
}
473+
474+
async removeProjectAssignmentSkill(
475+
projectId: number,
476+
roleId: number,
477+
skillId: number
478+
) {
479+
return await this.api.removeProjectAssignmentSkill(
480+
projectId,
481+
roleId,
482+
skillId
483+
);
484+
}
441485
}

src/types.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,6 +1112,13 @@ export interface ProjectAssignmentMember extends CompanyUserBase {
11121112
projectAssignmentMemberState?: ProjectAssignmentMemberState | null;
11131113
}
11141114

1115+
export interface ProjectAssignmentMemberSkill {
1116+
name?: string;
1117+
keywordSynonymId?: number | null;
1118+
level?: number;
1119+
isMandatory?: boolean;
1120+
}
1121+
11151122
export interface ProjectAssignmentSkillBase {
11161123
companyId?: number;
11171124

0 commit comments

Comments
 (0)