NSILM

Üldkirjeldus

Teenus võimaldab eemaldada eesmärgilt meeskonnaliikme.

Seotud andmeobjektid:

Seotud Jira taskid

NSIL-788 - Getting issue details... STATUS

NSIL-915 - Getting issue details... STATUS

NSIL-979 - 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 sama asutuse meeskonnaliikmete haldamise õigus
      • 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

teamMemberId

1

String
  • Peab eksisteerima ja olema seotud eesmärgiga. 
    • teamMemberId = GoalTeamMember.id, mille GoalTeamMember.goalId = sisendis esitatud goalId
Meeskonnaliikme unikaalne identifikaator.

goalId

1

String
  • Eesmärk peab eksisteerima ja ei tohi olla arhiveeritud.
    • goalId = Goal.id, mille Goal.arhived = false
Viide eesmärgile, mille meeskonnaliige eemaldatakse.

Väljundid

AtribuutKohustuslikkus, mitmesusTüüpKirjeldus, täiendav info

Samad mis teenusel PM: API: Goal: POST /planning-api/goals/{goalId}/team-members.

Ärireegel

  • Kustutatava meeskonnaliikme nimel olevad tegevused ja tööülesanded kantakse üle meeskonnaliikmele, kes ta kustutab.
  • Asutusepõhiselt eesmärgilt ei saa eemaldada ainsat meeskonda alles jäänud protsessijuhti. 
  • Isikupõhiselt eesmärgilt ei saa eemaldada eesmärgi omanikku, kes on ühtlasi alati ka protsessijuht. 

Tegevused

  1. Süsteem kontrollib, kas kasutajal on õigust päringut teostada.
    1. Kui kasutajal ei ole õigust, 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 hallata selle andmeid.
    1. Kontroll teostatakse 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 sisendis esitatud meeskonnaliige eksisteerib ja kuulub eesmärgi meeskonda.
    1. Süsteem otsib Objektid#Goal objekti, mille:
      1. id = Sisendis esitatud "goalId" väärtus
      2. teamMembers.id = Sisendis esitatud "teamMemberId" väärtus
    2. Kui tingimustele vastavat eesmärki ei leita, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
  5. Süsteem kontrollib, kas kustutatav isik saab olla eesmärgilt eemaldatud:
    1. Süsteem otsib Objektid#GoalTeamMember objekti, mille:
      1. id = Sisendis esitatud "teamMemberId" väärtus
    2. Kui tegemist on isikupõhise eesmärgiga (Objektid#Goal.goalScope = "INDIVIDUAL"):
      1. Süsteem kontrollib, et kustutatav isik ei oleks eesmärgi omanik. 
        1. Süsteem kontrollib, kas leitud meeskonnaliikme Objektid#GoalTeamMember.personalCode = Objektid#Goal.personalCode, mille id = sisendis esitatud "goalId" väärtus.
        2. Kui tingimus on täidetud, lõpetatakse päringu töötlemine ja tagastatakse http veakood (isikupõhise eesmärgi omaniku ei saa eesmärgilt eemaldada). 
    3. Kui tegemist, on asutusepõhise eesmärgiga (Objektid#Goal.goalScope = "INSTITUTIONAL"): 
      1. Süsteem kontrollib, et kustutav isik ei oleks ainus meeskonda jäänud protsessijuht. 
        1. Kui eelmises sammus leitud Objektid#GoalTeamMember.roleType = "TEAM_LEAD":
          1. Süsteem kontrollib, kas Objektid#Goal.teamMembers nimekirjas on kirje, mille:
            1. id != Sisendis esitatud "teamMemberId" väärtus
            2. roleType = "TEAM_LEAD"
          2. Kui ühtegi tingimustele vastavat meeskonnaliiget ei leita, lõpetatakse päringu töötlemine ja tagastatakse http veakood (ainsana meeskonda jäänud meeskonnaliiget kustutada ei saa).
      2. Süsteem kontrollib, et kasutaja ei saaks ise ennast meeskonnast eemaldada, kui tal on tegevused ja/või tööülesanded: (isikupõhise eesmärgi puhul ei saa kasutaja kunagi ennast eemaldada, kuna meeskonnaliikmete haldamise õigus on ainult eesmärgi omanikul (juhtumit katab punkt 5.b) 
        1. Süsteem kontrollib, kas kasutaja üritab ise ennast eemaldada:
          1. Süsteem otsib Objektid#GoalTeamMember objekti, mille:
            1. id = Sisendis esitatud "teamMemberId" väärtus.
            2. personalCode = Päringu käivitanud kasutaja isikukood.
          2. Kui meeskonnaliiget ei leita, jätkab protsess sammust 6.
        2. Süsteem kontrollib, kas kasutaja on määratud vastutajaks mõnda tegevuse või väljakutse eest: 
          1. Süsteem otsib Objektid#GoalActivity ja Objektid#GoalActivityTask objekte, mille:
            1. goalTeamMemberId = Sisendis esitatud "teamMemberId" väärtus.
        3. Kui vähemalt üks tegevus või tööülesanne leitakse, lõpetatakse päringu töötlemine ja tagastatakse http veakood.
  6. Kustutatava meeskonnaliikme nimel olevad tegevused ja tööülesanded kantakse üle meeskonnaliikmele, kes teostab kustutamise.
    1. Kui tegemist on asutusepõhise eesmärgiga (sisendis esitatud goalScope = "INSTITUTIONAL"):
      1. Süsteem kontrollib, kas päringu käivitanud kasutaja on eesmärgi meeskonnas:
        1. Süsteem otsib Objektid#GoalTeamMember objekti, mille:
          1. personalCode = Päringu käivitanud kasutaja isikukood
        2. Süsteem otsib Objektid#Goal objekti, mille:
          1. id = Sisendis esitatud "goalId" väärtus
          2. teamMembers.id = üks leitud meeskonnaliikmete ID-dest (Objektid#GoalTeamMember.id)
      2. Kui kasutaja ei kuulu eesmärgi meeskonda:
        1. Süsteem kontrollib, kas päringu käivitanud kasutaja kuulub sama asutuse teiste eesmärkide meeskondadesse. Arvestatakse ainult asutusepõhiseid eesmärke. 
          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. teamMembers.id = üks leitud meeskonnaliikmete ID-dest (Objektid#GoalTeamMember.id)
          2. Kui ühtegi tingimustele vastavat eesmärki ei leita:
            1. Süsteem loob uue meeskonnaliikme ja seob ta eesmärgiga:
              1. Süsteem loob uue Objektid#GoalTeamMember objekti, täites väljad:
                1. id = UUID.
                2. personalCode = Päringu käivitanud kasutaja isikukood.
                3. firstName = Päringu käivitanud kasutaja eesnimi.
                4. lastName = Päringu käivitanud kasutaja perenimi.
                5. email, phoneNumber, institution, jobTitle = täidetakse eelmises sammus leitud meeskonnaliikme andmetega. Kui vastavat meeskonnaliiget ei leita, jäävad väljad tühjaks.
                6. profileColor = süsteem valib eesmärgi juures unikaalse värvikoodi etteantud värvikoodide seast.
        2. Süsteem lisab leitud või just loodud meeskonnaliikme sisendis esitatud eesmärgi meeskonda:
          1. Süsteem otsib Objektid#Goal objekti, mille id = sisendis esitatud "goalId" ja uuendab selle andmeid järgmiselt:
            1. teamMembers nimekirja lõppu lisatakse eesmärgi uue meeskonnaliikme andmed:
              1. teamMembers.id = leitud või just loodud Objektid#GoalTeamMember.id
            2. Kui isikul on HSILM_PLANNING_TEAM_MEMBER_MANAGE õigus, siis:
              1. teamMembers.roleType = "TEAM_LEAD" (viide klassifikaatorist HSILM_GOAL_ROLE)
    2. Süsteem kannab üle kustutatava meeskonnaliikme nimel olevad tegevused ja tööülesanded üle leitud meeskonnaliikmele:
      1. Süsteem otsib Objektid#GoalActivity ja Objektid#GoalActivityTask objekte, mille:
        1. goalTeamMemberId = Sisendis esitatud "teamMemberId" väärtus.
      2. Kõigi leitud tegevuste ja tööülesannete puhul muudetakse goalTeamMemberId väärtus eelnevalt leitud või just loodud meeskonnaliikme ID-ga.
  7. Süsteem eemaldab eesmärgilt sisendis esitatud meeskonnaliikme:
    1. Süsteem kustutab Objektid#Goal.teamMembers nimekirjast alamobjekti, mille:
      1. id = sisendis esitatud "goalTeamMemberId" väärtusele
  8. Süsteem kontrollib, kas eemaldatud 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.
  9. Süsteem tagastab kustutatud meeskonnaliikme andmed.