NSILM

Ü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.
  • 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. 
  • 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

AtribuutKohustuslikkus, mitmesusTüüpVaikeväärtus, valideerimineKirjeldus, täiendav info
goalId1String
  • Peab eksisteerima ja ei tohi olla arhiveeritud.
    • Goal.id = goalId
    • Goal.archived = false
Eesmärgi ID, mis delegeeritakse teisele meeskonnaliikmele.
goalTeamMemberId1String
  • Peab eksisteerima ja olema eesmärgi meeskonnas. 
    • GoalTeamMember.id = goalTeamMemberId
    • Goal.teamMembers.id = goalTeamMemberId
Meeskonnaliikme ID, keda eemaldatakse eesmärgi meeskonnast.
newGoalTeamMemberId0..1String
  • Peab olema määratud üks kahest atribuudist: newGoalTeamMemberId või personalCode.
  • Ei tohi olla määratud, kui personalCode on määratud.
  • Väärtus ei tohi olla sama, mis väljal goalTeamMemberId.
  • Peab eksisteerima, kuid ei tohi juba olla eesmärgi meeskonnas.
    • Goal.teamMembers.id != newGoalTeamMemberId
  • Meeskonnaliikmel peab olema vähemalt üks teine arhiveerimata eesmärk, mis kuulub samale asutusele või isikule, ametikohale ja asutusele nagu goalId.
    • Peab eksisteerima Objektid#Goal objekt, mille:
      • teamMembersIds.id = newGoalTeamMemberId
      • archived = false
Meeskonnaliikme ID, keda lisatakse eesmärgi meeskonda.
personalCode0..1String
  • Peab olema määratud üks kahest atribuudist: newGoalTeamMemberId või personalCode.
  • Ei tohi olla määratud, kui newGoalTeamMemberId on määratud.
  • Peab olema 11 numbrit pikk.
  • Peab vastama Eesti isikukoodi reeglitele.
  • Ei tohi olla goalTeamMemberId meeskonnaliikme isikukood. 
    •  personalCode != GoalTeamMember.personalCode, mille id = goalTeamMember
Meeskonnaliikme isikukood, keda lisatakse eesmärgi meeskonda.

Väljundid

Atribuut

Kohustuslikkus, mitmesus

TüüpKirjeldus, täiendav info
goalId1StringDelegeeritud eesmärgi unikaalne identifikaator.
goalTeamMember1Object

Meeskonnaliige, kellele eesmärk delegeeriti.

Array objektid on samad nagu teenusel PM: API: Goal: POST /planning-api/goals/{goalId}/team-members.

Tegevused

  1. Süsteem kontrollib, kas kasutajal on õigust päringut teostada.
    1. Kui õigust ei ole, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
  2. Süsteem kontrollib, kas sisendandmed vastavad nõuetele.
    1. Kui andmed ei vasta nõuetele, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
  3. Süsteem kontrollib, kas sisendis esitatud eesmärk (goalId) eksisteerib ja kas päringu käivitanud kasutajal on õigus selle andmeid hallata.
    1. Kontroll toimub vastavalt üldreeglites kirjeldatud loogikale.
    2. Kui eesmärki ei leita või see ei vasta üldreeglitele, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
  4. Süsteem kontrollib, kas eesmärgi delegeerimine tohib olla teostatud:
    1. Kui sisendis on täidetud "newGoalTeamMemberId", siis:
      1. 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.
      2. Süsteem kontrollib, kas sisendis esitatud meeskonnaliige eksisteerib:
        1. Süsteem otsib Objektid#GoalTeamMember objekti, mille:
          1. id = Sisendis esitatud "newGoalTeamMemberId" väärtus
        2. Kui meeskonnaliiget ei leita, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
      3. Süsteem kontrollib, et uus meeskonnaliige (newGoalTeamMemberId) ei oleks juba meeskonnas.
        1. Süsteem otsib Objektid#Goal objekti, mille:
          1. id = Sisendis esitatud "goalId" väärtus
          2. teamMembers.id = Sisendis esitatud "newGoalTeamMemberId" väärtus
        2. Kui tingimustele vastav eesmärk leitakse, lõpetatakse päringu töötlemine ja tagastatakse http veakood (isik juba meeskonnas).
      4. Süsteem kontrollib, kas uuel meeskonnaliikmel on vähemalt üks muu aktiivne eesmärk samas asutuses või ametikohal:
        1. Süsteem otsib Objektid#Goal objekte, mille:
          1. teamMembers.id = Sisendis esitatud "newGoalTeamMemberId" väärtus.
          2. archived = false
        2. Kui ühtegi tingimustele vastavat eesmärki ei leita, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
    2. Kui sisendis on täidetud "personalCode", siis:
      1. Süsteem kontrollib, et lisatav isik ei oleks sama, kellelt eesmärk eemaldatakse (goalTeamMember).
        1. Süsteem otsib Objektid#GoalTeamMember objekti, mille:
          1. id = Sisendis esitatud "goalTeamMember" väärtus
          2. personalCode = Sisendis esitatud "personalCode" väärtus
        2. Kui vastav meeskonnaliige leitakse, lõpetatakse päringu töötlemine ja tagastatakse http veakood (isik juba meeskonnas).
      2. Süsteem kontrollib, kas antud isikukoodiga meeskonnaliige on juba meeskonnas.
        1. Süsteem otsib Objektid#GoalTeamMember objekte, mille:
          1. personalCode = Sisendis esitatud "personalCode" väärtus
        2. Süsteem otsib goal.teamMembers nimekirjast Objektid#GoalTeamMember objekti, mille:
          1. teamMembers.id = mõne leitud tiimiliikme id
        3. Kui vastav meeskonnaliige leitakse, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
    3. 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) 
      1. Süsteem kontrollib, kas eesmärgi meeskonnas on rohkem kui üks tiimijuht:
        1. Süsteem kontrollib, kas Objektid#Goal.teamMembers nimekirjas on rohkem kui üks kirje, mille roleType = "TEAM_LEAD".
      2. Kui leidub ainult üks tiimijuht:
        1. Süsteem kontrollib, kas isikul, kellele eesmärk delegeeritakse, on EHIS-es meeskonnaliikmete lisamise/muutmise õigus.
          1. Kui sisendis on täidetud "newGoalTeamMemberId", siis enne leitakse uue meeskonnaliikme isikukood:
            1.  Süsteem otsib Objektid#GoalTeamMember.personalCode, mille id = Sisendis esitatud "newGoalTeamMemberId" väärtus.
          2. Isikukoodi alusel kontrollitakse, kas isikul on EHIS-es eesmärgi asutuse juures privileeg HSILM_PLANNING_TEAM_MEMBER_MANAGE.  
      3. 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. 
    4. Isikupõhise eesmärgi (Objektid#Goal.goalScope = "INDIVIDUAL") puhul kontrollib süsteem, et eesmärk ei delegeeriks eesmärgi omanikult teisele isikule.  
      1. Süsteem kontrollib, kas meeskonnaliige, kellelt eesmärk delegeeritakse, on eesmärgi omanik:
        1. Süsteem leiab meeskonnaliikme isikukoodi:
          1.  Süsteem otsib Objektid#GoalTeamMember.personalCode, mille id = Sisendis esitatud "goalTeamMemberId" väärtus.
        2. Süsteem kontrollib, kas Objektid#Goal.personalCode = leitud Objektid#GoalTeamMember.personalCode.
        3. 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. 
  5. Süsteem lisab eesmärgile uue meeskonnaliikme:
    1. Kui päringu sisendis on täidetud "personalCode", siis:
      1. 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.
        1. Süsteem otsib meeskonda lisatava isiku meeskonnaliikme kirjeid: 
          1.  Süsteem otsib Objektid#GoalTeamMember objekti, mille:
            1. personalCode = Sisendis esitatud "personalCode" väärtus
          2. Kui meeskonnaliiget ei leita, jätkub protsess sammust 5.a.ii.
        2. 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).  
          1. Süsteem otsib Objektid#Goal objekte, mille:
            1. institution.id = Objektid#Goal.institution.id, mille id = sisendis esitatud "goalId" väärtus
            2. goalScope = Objektid#Goal.goalScope, mille id = sisendis esitatud "goalId" väärtus
            3. Kui goalScope = INSTITUTIONAL:
              1. jobsite = NULL
              2. personalCode = NULL
            4. Kui goalScope = INDIVIDUAL:
              1. jobsite = Objektid#Goal.jobsite, mille id = sisendis esitatud "goalId" väärtus
              2. personalCode = Objektid#Goal.personalCode, mille id = sisendis esitatud "goalId" väärtus
            5. teamMembers.id = üks leitud meeskonnaliikmete ID-dest (Objektid#GoalTeamMember.id).
          2. Kui vähemalt üks tingimustele vastav eesmärk leitakse, jätkub protsess edasi sammust 5.b.
          3. Kui eesmärki ei leita, jätkub protsess edasi sammust 5.a.ii.
      2. Kui isikul ei ole meeskonnaliikme kirjet sisendis esitatud eesmärgi asutuse / isiku, ametikoha ja asutuse piires, siis see luuakse:
        1. Süsteem teeb päringu EHIS kasutajate registrisse:
          1. Süsteem käivitab otsitava isiku andmete saamiseks päringu KA Kasutajate päring, mille sisendiks annakse:
            1. idCode = Sisendis esitatud "personalCode" väärtust
        2. Süsteem loob uue Objektid#GoalTeamMember objekti, täites väljad:
          1. id = UUID
          2. personalCode = Sisendis esitatud "personalCode" väärtus
          3. firstName, lastName = EHIS-i kasutajate registri andmed, kui kasutaja on leitud. Kui ei, jäävad need tühjaks.
          4. email, phoneNumber, institution, jobTitle = jäävad tühjaks
          5. profileColor = eesmärgi olemasolevate liikmete pealt valitakse vähim valitud värv.
    2. Süsteem seob uue meeskonnaliikme eesmärgiga:
      1. Süsteem kontrollib, kas isikul on EHIS-es meeskonnaliikmete lisamise/muutmise õigus (HSILM_PLANNING_TEAM_MEMBER_MANAGE).  
      2. Süsteem otsib Objektid#Goal objekti, mille id = goalId ja uuendab selle andmeid järgmiselt:
        1. teamMembers nimekirja lõppu lisatakse eesmärgi uue meeskonnaliikme andmed:
          1. teamMembers.id = eelnevalt leitud või just loodud Objektid#GoalTeamMember.id
        2. Kui isikul on HSILM_PLANNING_TEAM_MEMBER_MANAGE õigus, teamMembers.roleType = "TEAM_LEAD" (viide klassifikaatorist HSILM_GOAL_ROLE).
  6. Süsteem eemaldab eesmärgi meeskonnast meeskonnaliikme, kelle eesmärk delegeeritakse:
    1. Süsteem kontrollib, kas eemaldatav isik (goalTeamMemberId) kuulub eesmärgi (goalId) meeskonda.
      1. Süsteem kontrollib, kas Objektid#Goal.teamMembers nimekirjas on sisendis esitatud "goalTeamMemberId" väärtus.
      2. Kui meeskonnaliiget ei leita, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
    2. Kui meeskonnaliige leitakse, eemaldatakse ta eesmärgi meeskonnast:
      1. Süsteem kustutab Objektid#Goal.teamMembers nimekirjast alamobjekti, mille:
        1. id = sisendis esitatud "goalTeamMemberId" väärtusele
  7. Süsteem kontrollib, kas meeskonnaliikmel on muid eesmärke, ja kui neid ei ole, eemaldab tema kirje andmebaasist jäädavalt.
    1. Süsteem otsib Objektid#Goal objekte, mille: 
      1. teamMembers.id = Sisendis esitatud "goalTeamMemberId" väärtus
    2. Kui ühtegi eesmärki ei leita, eemaldatakse meeskonnaliikme kirje andmebaasist jäädavalt. 
      1. Süsteem kustutab Objektid#GoalTeamMember objekti, mille:
        1. id = Sisendis esitatud "goalTeamMemberId" väärtus.
  8. Süsteem tagastab andmed meeskonnaliikme kohta, kellele eesmärk delegeeriti.