Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: HASSU-759 soittoajan yhteyshenkilöiden tallentuminen #255

Merged
merged 2 commits into from
Jun 9, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions backend/integrationtest/api/__snapshots__/api.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -1103,6 +1103,7 @@ Object {
"nimi": "Lorem ipsum 1",
"paattymisAika": "16:00",
"paivamaara": "2022-03-04",
"projektiYhteysHenkilot": undefined,
"tyyppi": "VERKOSSA",
},
Object {
Expand All @@ -1117,6 +1118,7 @@ Object {
"paivamaara": "2022-04-05",
"postinumero": "00100",
"postitoimipaikka": "Helsinki",
"projektiYhteysHenkilot": undefined,
"tyyppi": "PAIKALLA",
},
Object {
Expand Down Expand Up @@ -1146,7 +1148,7 @@ Object {
"paattymisAika": "11:00",
"paivamaara": "2022-04-05",
"projektiYhteysHenkilot": Array [
"A000112",
"0",
],
"tyyppi": "SOITTOAIKA",
},
Expand Down Expand Up @@ -1176,6 +1178,7 @@ Object {
"nimi": "Toisen soittoaikatilaisuuden nimi tässä",
"paattymisAika": "13:00",
"paivamaara": "2033-04-05",
"projektiYhteysHenkilot": undefined,
"tyyppi": "SOITTOAIKA",
},
],
Expand Down Expand Up @@ -1235,6 +1238,7 @@ Object {
"nimi": "Lorem ipsum 2",
"paattymisAika": "16:00",
"paivamaara": "2022-03-04",
"projektiYhteysHenkilot": undefined,
"tyyppi": "VERKOSSA",
},
Object {
Expand All @@ -1249,6 +1253,7 @@ Object {
"paivamaara": "2022-04-05",
"postinumero": "00100",
"postitoimipaikka": "Helsinki",
"projektiYhteysHenkilot": undefined,
"tyyppi": "PAIKALLA",
},
Object {
Expand Down Expand Up @@ -1278,8 +1283,8 @@ Object {
"paattymisAika": "11:00",
"paivamaara": "2022-04-05",
"projektiYhteysHenkilot": Array [
"A000112",
"A000111",
"0",
"1",
],
"tyyppi": "SOITTOAIKA",
},
Expand Down Expand Up @@ -1309,6 +1314,7 @@ Object {
"nimi": "Toisen soittoaikatilaisuuden nimi tässä",
"paattymisAika": "13:00",
"paivamaara": "2033-04-05",
"projektiYhteysHenkilot": undefined,
"tyyppi": "SOITTOAIKA",
},
],
Expand Down
2 changes: 1 addition & 1 deletion backend/src/aineisto/aineistoService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class AineistoService {
}

const aineistotToDelete = projektiAdaptationResult.aineistoChanges.aineistotToDelete;
if (aineistotToDelete.length > 0) {
if (aineistotToDelete && aineistotToDelete.length > 0) {
// Delete files from public
hasChanges = true;
for (const fileNameToDelete of aineistotToDelete) {
Expand Down
12 changes: 8 additions & 4 deletions backend/src/handler/projektiAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,11 @@ function adaptYhteystiedotToSave(yhteystietoInputs: Array<YhteystietoInput>) {
return yhteystietoInputs?.length > 0 ? yhteystietoInputs.map((yt) => ({ ...yt })) : undefined;
}

function adaptKayttajatunnusList(projekti: DBProjekti, yhteysHenkilot: Array<string>): string[] | undefined {
function adaptKayttajatunnusList(
projekti: DBProjekti,
yhteysHenkilot: Array<string>,
doNotForceProjektipaallikko?: boolean
): string[] | undefined {
if (!yhteysHenkilot || yhteysHenkilot.length == 0) {
return undefined;
}
Expand All @@ -296,7 +300,7 @@ function adaptKayttajatunnusList(projekti: DBProjekti, yhteysHenkilot: Array<str
const projektipaallikkonTunnus = projekti.kayttoOikeudet?.find(
({ rooli }) => rooli === ProjektiRooli.PROJEKTIPAALLIKKO
)?.kayttajatunnus;
if (!unfilteredList.includes(projektipaallikkonTunnus)) {
if (!doNotForceProjektipaallikko && !unfilteredList.includes(projektipaallikkonTunnus)) {
unfilteredList.push(projektipaallikkonTunnus);
}

Expand All @@ -312,7 +316,7 @@ function adaptVuorovaikutusTilaisuudetToSave(
? vuorovaikutusTilaisuudet.map((vv) => ({
...vv,
esitettavatYhteystiedot: adaptYhteystiedotToSave(vv.esitettavatYhteystiedot),
projektiYhteysHenkilot: adaptKayttajatunnusList(projekti, vv.projektiYhteysHenkilot),
projektiYhteysHenkilot: adaptKayttajatunnusList(projekti, vv.projektiYhteysHenkilot, true),
}))
: undefined;
}
Expand Down Expand Up @@ -449,7 +453,7 @@ function adaptVuorovaikutukset(vuorovaikutukset: Array<Vuorovaikutus>): API.Vuor
return vuorovaikutukset as undefined;
}

export function adaptVuorovaikutusTilaisuudet(
function adaptVuorovaikutusTilaisuudet(
vuorovaikutusTilaisuudet: Array<VuorovaikutusTilaisuus>
): API.VuorovaikutusTilaisuus[] {
if (vuorovaikutusTilaisuudet) {
Expand Down
35 changes: 29 additions & 6 deletions backend/src/handler/projektiAdapterJulkinen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,12 @@ import {
adaptKielitiedot,
adaptLinkki,
adaptLinkkiList,
adaptVuorovaikutusTilaisuudet,
adaptYhteystiedot,
} from "./projektiAdapter";
import { fileService } from "../files/fileService";
import { log } from "../logger";
import { parseDate } from "../util/dateUtil";
import { Vuorovaikutus } from "../database/model/suunnitteluVaihe";
import { Vuorovaikutus, VuorovaikutusTilaisuus } from "../database/model/suunnitteluVaihe";

class ProjektiAdapterJulkinen {
private applyStatus(projekti: API.ProjektiJulkinen) {
Expand Down Expand Up @@ -185,24 +184,30 @@ class ProjektiAdapterJulkinen {
}
}

function adaptUsernamesToProjektiHenkiloIds(usernames: Array<string>, projektiHenkilot: ProjektiHenkilot) {
return usernames?.map((username) => projektiHenkilot[username].id);
}

function adaptVuorovaikutukset(dbProjekti: DBProjekti, projektiHenkilot: ProjektiHenkilot): VuorovaikutusJulkinen[] {
const vuorovaikutukset = dbProjekti.vuorovaikutukset;
if (vuorovaikutukset && vuorovaikutukset.length > 0) {
return vuorovaikutukset
.map((vuorovaikutus) => {
const julkaisuPaiva = parseDate(vuorovaikutus.vuorovaikutusJulkaisuPaiva);
if (julkaisuPaiva.isBefore(dayjs())) {
const usernames = vuorovaikutus.vuorovaikutusYhteysHenkilot;
return {
...vuorovaikutus,
__typename: "VuorovaikutusJulkinen",
vuorovaikutusTilaisuudet: adaptVuorovaikutusTilaisuudet(vuorovaikutus.vuorovaikutusTilaisuudet),
vuorovaikutusTilaisuudet: adaptVuorovaikutusTilaisuudet(
vuorovaikutus.vuorovaikutusTilaisuudet,
projektiHenkilot
),
videot: adaptLinkkiList(vuorovaikutus.videot),
suunnittelumateriaali: adaptLinkki(vuorovaikutus.suunnittelumateriaali),
aineistot: adaptAineistot(vuorovaikutus.aineistot, julkaisuPaiva),
vuorovaikutusYhteystiedot: adaptAndMergeYhteystiedot(dbProjekti, vuorovaikutus),
vuorovaikutusYhteysHenkilot: vuorovaikutus.vuorovaikutusYhteysHenkilot?.map(
(username) => projektiHenkilot[username].id
),
vuorovaikutusYhteysHenkilot: adaptUsernamesToProjektiHenkiloIds(usernames, projektiHenkilot),
} as API.VuorovaikutusJulkinen;
}
return undefined;
Expand All @@ -212,6 +217,24 @@ function adaptVuorovaikutukset(dbProjekti: DBProjekti, projektiHenkilot: Projekt
return vuorovaikutukset as undefined;
}

function adaptVuorovaikutusTilaisuudet(
vuorovaikutusTilaisuudet: Array<VuorovaikutusTilaisuus>,
projektiHenkilot: ProjektiHenkilot
): VuorovaikutusTilaisuus[] {
if (vuorovaikutusTilaisuudet) {
return vuorovaikutusTilaisuudet.map((vuorovaikutusTilaisuus) => ({
...vuorovaikutusTilaisuus,
projektiYhteysHenkilot: adaptUsernamesToProjektiHenkiloIds(
vuorovaikutusTilaisuus.projektiYhteysHenkilot,
projektiHenkilot
),
esitettavatYhteystiedot: adaptYhteystiedot(vuorovaikutusTilaisuus.esitettavatYhteystiedot),
__typename: "VuorovaikutusTilaisuus",
}));
}
return vuorovaikutusTilaisuudet as undefined;
}

function findJulkaisuByStatus<T extends { tila?: API.AloitusKuulutusTila }>(
aloitusKuulutusJulkaisut: T[],
tila: API.AloitusKuulutusTila
Expand Down