PM: API: Goal: PATCH /planning-api/goals/{goalId}/delegate
Üldkirjeldus
Teenus eemaldab valitud isiku delegeeritavate eesmärkide meeskonnast ja lisab uue isiku tema asemele.
Seotud andmeobjektid:
Seotud Jira taskid
NSIL-949 - Getting issue details... STATUS
NSIL-1046 - Getting issue details... STATUS
Eeltingimused ja kasutusõigused
- Kui tegemist on asutusepõhise eesmärgiga (Goal.goalScope = INSTITUTIONAL):
- Kasutajal on seos eesmärgi asutusega ja tal on selle asutuse meeskonnaliikmete haldamise õigus.
- GoalTeamMember.id = Goal.teamMembers.id , mille Goal.institution.id = Kasutaja poolt valitud rolliga seotud asutus
- Õigust reguleerib privileeg: HSILM_PLANNING_TEAM_MEMBER_MANAGE.
- Kasutajal on seos eesmärgi asutusega ja tal on selle asutuse meeskonnaliikmete haldamise õigus.
- Kui tegemist on isikupõhise eesmärgiga (Goal.goalScope = INDIVIDUAL):
- Kasutaja on eesmärgi omanik ja tal on seos eesmärgi asutuse ja ametikohaga.
- Goal.personalCode = Kasutaja isikukood.
- Goal.institution.id = Kasutaja poolt valitud rolliga seotud asutus
- Goal.jobsite = Kasutaja poolt valitud rolliga seotud ametikoht
- Eraldi privileegi ei ole vaja.
- Kasutaja on eesmärgi omanik ja tal on seos eesmärgi asutuse ja ametikohaga.
- Või kasutaja on eesmärgi meeskonnas ja planeerimise meeskonna liikme rollil on meeskonnaliikmete haldamise õigus.
- Goal.goalScope = INSTITUTIONAL või INDIVIDUAL
- Goal.teamMembers.id = GoalTeamMember.id, mille personalCode = Kasutaja isikukood
- Õigust reguleerib privileeg: HSILM_PLANNING_TEAM_MEMBER_MANAGE.
Planeerimise mooduli kasutusrollide ja õiguste kohta saab täpsemalt infot leida lehelt Kasutusõigused ja rollid.
Sisendid
| Atribuut | Kohustuslikkus, mitmesus | Tüüp | Vaikeväärtus, valideerimine | Kirjeldus, täiendav info |
|---|---|---|---|---|
| goalId | 1 | String |
| Eesmärgi ID, mis delegeeritakse teisele meeskonnaliikmele. |
| goalTeamMemberId | 1 | String |
| Meeskonnaliikme ID, keda eemaldatakse eesmärgi meeskonnast. |
| newGoalTeamMemberId | 0..1 | String |
| Meeskonnaliikme ID, keda lisatakse eesmärgi meeskonda. |
| personalCode | 0..1 | String |
| Meeskonnaliikme isikukood, keda lisatakse eesmärgi meeskonda. |
Väljundid
Atribuut | Kohustuslikkus, mitmesus | Tüüp | Kirjeldus, täiendav info |
|---|---|---|---|
| goalId | 1 | String | Delegeeritud eesmärgi unikaalne identifikaator. |
| goalTeamMember | 1 | Object | Meeskonnaliige, kellele eesmärk delegeeriti. Array objektid on samad nagu teenusel PM: API: Goal: POST /planning-api/goals/{goalId}/team-members. |
Tegevused
- Süsteem kontrollib, kas kasutajal on õigust päringut teostada.
- Kui õigust ei ole, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
- Süsteem kontrollib, kas sisendandmed vastavad nõuetele.
- Kui andmed ei vasta nõuetele, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
- Süsteem kontrollib, kas sisendis esitatud eesmärk (goalId) eksisteerib ja kas päringu käivitanud kasutajal on õigus selle andmeid hallata.
- Kontroll toimub vastavalt üldreeglites kirjeldatud loogikale.
- Kui eesmärki ei leita või see ei vasta üldreeglitele, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
- Süsteem kontrollib, kas eesmärgi delegeerimine tohib olla teostatud:
- Kui sisendis on täidetud "newGoalTeamMemberId", siis:
- Kui sisendis esitatud "goalTeamMemberId" = sisendis esitatud "newGoalTeamMemberId" väärtus, lõpetatakse päringu töötlemine ja tagastatakse http veakood. Eesmärki üritatakse delegeerida samale isikule.
- Süsteem kontrollib, kas sisendis esitatud meeskonnaliige eksisteerib:
- Süsteem otsib Objektid#GoalTeamMember objekti, mille:
- id = Sisendis esitatud "newGoalTeamMemberId" väärtus
- Kui meeskonnaliiget ei leita, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
- Süsteem otsib Objektid#GoalTeamMember objekti, mille:
- Süsteem kontrollib, et uus meeskonnaliige (newGoalTeamMemberId) ei oleks juba meeskonnas.
- Süsteem otsib Objektid#Goal objekti, mille:
- id = Sisendis esitatud "goalId" väärtus
- teamMembers.id = Sisendis esitatud "newGoalTeamMemberId" väärtus
- Kui tingimustele vastav eesmärk leitakse, lõpetatakse päringu töötlemine ja tagastatakse http veakood (isik juba meeskonnas).
- Süsteem otsib Objektid#Goal objekti, mille:
- Süsteem kontrollib, kas uuel meeskonnaliikmel on vähemalt üks muu aktiivne eesmärk samas asutuses või ametikohal:
- Süsteem otsib Objektid#Goal objekte, mille:
- teamMembers.id = Sisendis esitatud "newGoalTeamMemberId" väärtus.
- archived = false
- Kui ühtegi tingimustele vastavat eesmärki ei leita, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
- Süsteem otsib Objektid#Goal objekte, mille:
- Kui sisendis on täidetud "personalCode", siis:
- Süsteem kontrollib, et lisatav isik ei oleks sama, kellelt eesmärk eemaldatakse (goalTeamMember).
- Süsteem otsib Objektid#GoalTeamMember objekti, mille:
- id = Sisendis esitatud "goalTeamMember" väärtus
- personalCode = Sisendis esitatud "personalCode" väärtus
- Kui vastav meeskonnaliige leitakse, lõpetatakse päringu töötlemine ja tagastatakse http veakood (isik juba meeskonnas).
- Süsteem otsib Objektid#GoalTeamMember objekti, mille:
- Süsteem kontrollib, kas antud isikukoodiga meeskonnaliige on juba meeskonnas.
- Süsteem otsib Objektid#GoalTeamMember objekte, mille:
- personalCode = Sisendis esitatud "personalCode" väärtus
- Süsteem otsib goal.teamMembers nimekirjast Objektid#GoalTeamMember objekti, mille:
- teamMembers.id = mõne leitud tiimiliikme id
- Kui vastav meeskonnaliige leitakse, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
- Süsteem otsib Objektid#GoalTeamMember objekte, mille:
- Süsteem kontrollib, et lisatav isik ei oleks sama, kellelt eesmärk eemaldatakse (goalTeamMember).
- Asutusepõhise eesmärgi (Objektid#Goal.goalScope = "INSTITUTIONAL") puhul kontrollib süsteem, et eesmärk ei delegeeritaks viimaselt tiimijuhilt tavalisele meeskonnaliikmele. (Loogika katab nii asutuse rollis kui ka meeskonnaliikme rollis kasutaja kasutusjuhtumeid)
- Süsteem kontrollib, kas eesmärgi meeskonnas on rohkem kui üks tiimijuht:
- Süsteem kontrollib, kas Objektid#Goal.teamMembers nimekirjas on rohkem kui üks kirje, mille roleType = "TEAM_LEAD".
- Kui leidub ainult üks tiimijuht:
- Süsteem kontrollib, kas isikul, kellele eesmärk delegeeritakse, on EHIS-es meeskonnaliikmete lisamise/muutmise õigus.
- Kui sisendis on täidetud "newGoalTeamMemberId", siis enne leitakse uue meeskonnaliikme isikukood:
- Süsteem otsib Objektid#GoalTeamMember.personalCode, mille id = Sisendis esitatud "newGoalTeamMemberId" väärtus.
- Isikukoodi alusel kontrollitakse, kas isikul on EHIS-es eesmärgi asutuse juures privileeg HSILM_PLANNING_TEAM_MEMBER_MANAGE.
- Kui sisendis on täidetud "newGoalTeamMemberId", siis enne leitakse uue meeskonnaliikme isikukood:
- Süsteem kontrollib, kas isikul, kellele eesmärk delegeeritakse, on EHIS-es meeskonnaliikmete lisamise/muutmise õigus.
- Kui isikul puudub vastav õigus, lõpetatakse päringu töötlemine ja tagastatakse http veakood: viimaselt tiimijuhilt ei ole lubatud delegeerida eesmärki tavalisele meeskonnaliikmele.
- Süsteem kontrollib, kas eesmärgi meeskonnas on rohkem kui üks tiimijuht:
- Isikupõhise eesmärgi (Objektid#Goal.goalScope = "INDIVIDUAL") puhul kontrollib süsteem, et eesmärk ei delegeeriks eesmärgi omanikult teisele isikule.
- Süsteem kontrollib, kas meeskonnaliige, kellelt eesmärk delegeeritakse, on eesmärgi omanik:
- Süsteem leiab meeskonnaliikme isikukoodi:
- Süsteem otsib Objektid#GoalTeamMember.personalCode, mille id = Sisendis esitatud "goalTeamMemberId" väärtus.
- Süsteem kontrollib, kas Objektid#Goal.personalCode = leitud Objektid#GoalTeamMember.personalCode.
- Kui isik on eesmärgi omanik, lõpetatakse päringu töötlemine ja tagastatakse http veakood: isikupõhist eesmärki ei ole lubatud delegeerida eesmärgi omanikult teisele isikule.
- Süsteem leiab meeskonnaliikme isikukoodi:
- Süsteem kontrollib, kas meeskonnaliige, kellelt eesmärk delegeeritakse, on eesmärgi omanik:
- Kui sisendis on täidetud "newGoalTeamMemberId", siis:
- Süsteem lisab eesmärgile uue meeskonnaliikme:
- Kui päringu sisendis on täidetud "personalCode", siis:
- Süsteem kontrollib, kas meeskonda lisataval isikul on juba olemas meeskonnaliikme kirjed sisendis esitatud eesmärgi asutuse / isiku, ametikoha ja asutuse piires. Arvestatakse ka arhiveeritud eesmärke.
- Süsteem otsib meeskonda lisatava isiku meeskonnaliikme kirjeid:
- Süsteem otsib Objektid#GoalTeamMember objekti, mille:
- personalCode = Sisendis esitatud "personalCode" väärtus
- Kui meeskonnaliiget ei leita, jätkub protsess sammust 5.a.ii.
- Süsteem otsib Objektid#GoalTeamMember objekti, mille:
- Süsteem kontrollib, kas mõni leitud meeskonnaliikmete kirjetest on seotud vähemalt ühe eesmärgiga, mis kuulub samale asutusele / isikule, ametikohale ja asutusele nagu sisendis esitatud eesmärk (goalId).
- Süsteem otsib Objektid#Goal objekte, mille:
- institution.id = Objektid#Goal.institution.id, mille id = sisendis esitatud "goalId" väärtus
- goalScope = Objektid#Goal.goalScope, mille id = sisendis esitatud "goalId" väärtus
- Kui goalScope = INSTITUTIONAL:
- jobsite = NULL
- personalCode = NULL
- Kui goalScope = INDIVIDUAL:
- jobsite = Objektid#Goal.jobsite, mille id = sisendis esitatud "goalId" väärtus
- personalCode = Objektid#Goal.personalCode, mille id = sisendis esitatud "goalId" väärtus
- teamMembers.id = üks leitud meeskonnaliikmete ID-dest (Objektid#GoalTeamMember.id).
- Kui vähemalt üks tingimustele vastav eesmärk leitakse, jätkub protsess edasi sammust 5.b.
- Kui eesmärki ei leita, jätkub protsess edasi sammust 5.a.ii.
- Süsteem otsib Objektid#Goal objekte, mille:
- Süsteem otsib meeskonda lisatava isiku meeskonnaliikme kirjeid:
- Kui isikul ei ole meeskonnaliikme kirjet sisendis esitatud eesmärgi asutuse / isiku, ametikoha ja asutuse piires, siis see luuakse:
- Süsteem teeb päringu EHIS kasutajate registrisse:
- Süsteem käivitab otsitava isiku andmete saamiseks päringu KA Kasutajate päring, mille sisendiks annakse:
- idCode = Sisendis esitatud "personalCode" väärtust
- Süsteem käivitab otsitava isiku andmete saamiseks päringu KA Kasutajate päring, mille sisendiks annakse:
- Süsteem loob uue Objektid#GoalTeamMember objekti, täites väljad:
- id = UUID
- personalCode = Sisendis esitatud "personalCode" väärtus
- firstName, lastName = EHIS-i kasutajate registri andmed, kui kasutaja on leitud. Kui ei, jäävad need tühjaks.
- email, phoneNumber, institution, jobTitle = jäävad tühjaks
- profileColor = eesmärgi olemasolevate liikmete pealt valitakse vähim valitud värv.
- Süsteem teeb päringu EHIS kasutajate registrisse:
- Süsteem kontrollib, kas meeskonda lisataval isikul on juba olemas meeskonnaliikme kirjed sisendis esitatud eesmärgi asutuse / isiku, ametikoha ja asutuse piires. Arvestatakse ka arhiveeritud eesmärke.
- Süsteem seob uue meeskonnaliikme eesmärgiga:
- Süsteem kontrollib, kas isikul on EHIS-es meeskonnaliikmete lisamise/muutmise õigus (HSILM_PLANNING_TEAM_MEMBER_MANAGE).
- Süsteem otsib Objektid#Goal objekti, mille id = goalId ja uuendab selle andmeid järgmiselt:
- teamMembers nimekirja lõppu lisatakse eesmärgi uue meeskonnaliikme andmed:
- teamMembers.id = eelnevalt leitud või just loodud Objektid#GoalTeamMember.id
- Kui isikul on HSILM_PLANNING_TEAM_MEMBER_MANAGE õigus, teamMembers.roleType = "TEAM_LEAD" (viide klassifikaatorist HSILM_GOAL_ROLE).
- teamMembers nimekirja lõppu lisatakse eesmärgi uue meeskonnaliikme andmed:
- Kui päringu sisendis on täidetud "personalCode", siis:
- Süsteem eemaldab eesmärgi meeskonnast meeskonnaliikme, kelle eesmärk delegeeritakse:
- Süsteem kontrollib, kas eemaldatav isik (goalTeamMemberId) kuulub eesmärgi (goalId) meeskonda.
- Süsteem kontrollib, kas Objektid#Goal.teamMembers nimekirjas on sisendis esitatud "goalTeamMemberId" väärtus.
- Kui meeskonnaliiget ei leita, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
- Kui meeskonnaliige leitakse, eemaldatakse ta eesmärgi meeskonnast:
- Süsteem kustutab Objektid#Goal.teamMembers nimekirjast alamobjekti, mille:
- id = sisendis esitatud "goalTeamMemberId" väärtusele
- Süsteem kustutab Objektid#Goal.teamMembers nimekirjast alamobjekti, mille:
- Süsteem kontrollib, kas eemaldatav isik (goalTeamMemberId) kuulub eesmärgi (goalId) meeskonda.
- Süsteem kontrollib, kas meeskonnaliikmel on muid eesmärke, ja kui neid ei ole, eemaldab tema kirje andmebaasist jäädavalt.
- Süsteem otsib Objektid#Goal objekte, mille:
- teamMembers.id = Sisendis esitatud "goalTeamMemberId" väärtus
- Kui ühtegi eesmärki ei leita, eemaldatakse meeskonnaliikme kirje andmebaasist jäädavalt.
- Süsteem kustutab Objektid#GoalTeamMember objekti, mille:
- id = Sisendis esitatud "goalTeamMemberId" väärtus.
- Süsteem kustutab Objektid#GoalTeamMember objekti, mille:
- Süsteem otsib Objektid#Goal objekte, mille:
- Süsteem tagastab andmed meeskonnaliikme kohta, kellele eesmärk delegeeriti.