Skip to content

Commit

Permalink
fix: hassu 1103 korjaa indeksoinnin logiikka ja poista estoja BE:stä …
Browse files Browse the repository at this point in the history
…indeksoinnin toimimiseksi (#442)

* Indeksöitäessä tiettyjä tietoja ei välttämättä vielä ole, joten älä vaadi niitä. Korjaa logiikka viimeisen vuorovaikutustilaisuuden loppumishetkeä laskettaessa.

* Luo uusi testi, joka saa aiemmassa commitissa korjatun bugin kiinni

* Vuorovaikutuksella voi olla undefined standardiyhteystiedot

* Lisää testidataan soittoaika

* Lisää console.logitusta, joka paljasta, missä kohtaan vuorovaikutustilaisuuden soittoaika katoaa mystisesti

* Korjaa adaptereita, niin etteivät ne muokkaa alkuperäistä objektia.

* poista console.log

Co-authored-by: Valhe Kouneli <valhe.kouneli@cgi.com>
  • Loading branch information
ValheKouneli and Valhe Kouneli authored Oct 17, 2022
1 parent 86b2b4e commit 4d40e36
Show file tree
Hide file tree
Showing 8 changed files with 354 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,8 @@ function adaptJulkaisuPDFPaths(oid: string, aloitusKuulutusPDFS: LocalizedMap<Al
for (const kieli in aloitusKuulutusPDFS) {
const pdfs = aloitusKuulutusPDFS[kieli as API.Kieli];
if (!pdfs) {
throw new Error(`adaptJulkaisuPDFPaths: aloitusKuulutusPDFS[${kieli}] määrittelemättä`);
result[kieli as API.Kieli] = undefined;
continue;
}
const aloitusKuulutusPdf: API.AloitusKuulutusPDF = {
__typename: "AloitusKuulutusPDF",
Expand Down
24 changes: 13 additions & 11 deletions backend/src/projekti/adapter/adaptToAPI/adaptSuunnitteluVaihe.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {
adaptStandardiYhteystiedotByAddingTypename,
} from "../common";
import { fileService } from "../../../files/fileService";
import { cloneDeep } from "lodash";

export function adaptSuunnitteluVaihe(
oid: string,
Expand Down Expand Up @@ -50,7 +51,8 @@ function adaptVuorovaikutukset(
vuorovaikutukset: Array<Vuorovaikutus> | undefined | null
): API.Vuorovaikutus[] | undefined {
if (vuorovaikutukset && vuorovaikutukset.length > 0) {
return vuorovaikutukset.map((vuorovaikutus) => {
const vuorovaikutuksetCopy = cloneDeep(vuorovaikutukset);
return vuorovaikutuksetCopy.map((vuorovaikutus) => {
if (!vuorovaikutus.ilmoituksenVastaanottajat) {
throw new Error("adaptVuorovaikutukset: vuorovaikutus.ilmoituksenVastaanottajat määrittelemättä");
}
Expand Down Expand Up @@ -84,7 +86,8 @@ function adaptVuorovaikutusTilaisuudet(
vuorovaikutusTilaisuudet: Array<VuorovaikutusTilaisuus> | null | undefined
): API.VuorovaikutusTilaisuus[] | undefined {
if (vuorovaikutusTilaisuudet) {
return vuorovaikutusTilaisuudet.map((vuorovaikutusTilaisuus) => {
const vuorovaikutusTilaisuudetCopy = cloneDeep(vuorovaikutusTilaisuudet);
return vuorovaikutusTilaisuudetCopy.map((vuorovaikutusTilaisuus) => {
const esitettavatYhteystiedot: StandardiYhteystiedot | undefined = vuorovaikutusTilaisuus.esitettavatYhteystiedot;
delete vuorovaikutusTilaisuus.esitettavatYhteystiedot;
const tilaisuus: API.VuorovaikutusTilaisuus = {
Expand All @@ -108,16 +111,15 @@ function adaptVuorovaikutusPDFPaths(oid: string, vuorovaikutusPdfs: LocalizedMap
const result: { [Kieli: string]: API.VuorovaikutusPDF } = {};
for (const kieli in vuorovaikutusPdfs) {
const pdfs = vuorovaikutusPdfs[kieli as API.Kieli];
if (!pdfs) {
throw new Error(`adaptVuorovaikutusPDFPaths: vuorovaikutusPdfs[${kieli}] määrittelemättä`);
if (pdfs) {
result[kieli] = {
__typename: "VuorovaikutusPDF",
// getYllapitoPathForProjektiFile molemmat argumentit on määritelty, joten funktio palauttaa ei-undefined arvon
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
kutsuPDFPath: fileService.getYllapitoPathForProjektiFile(oid, pdfs.kutsuPDFPath),
};
}
result[kieli] = {
__typename: "VuorovaikutusPDF",
// getYllapitoPathForProjektiFile molemmat argumentit on määritelty, joten funktio palauttaa ei-undefined arvon
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
kutsuPDFPath: fileService.getYllapitoPathForProjektiFile(oid, pdfs.kutsuPDFPath),
};
}
return { __typename: "VuorovaikutusPDFt", SUOMI: result[API.Kieli.SUOMI], ...result };
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export function adaptVuorovaikutusToSave(

const vuorovaikutusToSave: Vuorovaikutus = {
vuorovaikutusNumero: vuorovaikutusInput.vuorovaikutusNumero,
esitettavatYhteystiedot: adaptStandardiYhteystiedotToSave(vuorovaikutusInput.esitettavatYhteystiedot, true),
esitettavatYhteystiedot: adaptStandardiYhteystiedotToSave(vuorovaikutusInput.esitettavatYhteystiedot),
vuorovaikutusTilaisuudet,
// Jos vuorovaikutuksen ilmoituksella ei tarvitse olla viranomaisvastaanottajia, muokkaa adaptIlmoituksenVastaanottajatToSavea
ilmoituksenVastaanottajat: adaptIlmoituksenVastaanottajatToSave(vuorovaikutusInput.ilmoituksenVastaanottajat),
Expand Down
1 change: 1 addition & 0 deletions backend/src/projekti/adapter/projektiAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ export class ProjektiAdapter {
kasittelynTila: adaptKasittelynTila(kasittelynTila),
...fieldsToCopyAsIs,
});

if (apiProjekti.tallennettu) {
applyProjektiStatus(apiProjekti);
}
Expand Down
17 changes: 11 additions & 6 deletions backend/src/projekti/adapter/projektiAdapterJulkinen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import {
adaptStandardiYhteystiedotLisaamattaProjaria,
} from "../../util/adaptStandardiYhteystiedot";
import { adaptSuunnitteluSopimusJulkaisuJulkinen } from "./adaptToAPI";
import { cloneDeep } from "lodash";

class ProjektiAdapterJulkinen {
public adaptProjekti(dbProjekti: DBProjekti): API.ProjektiJulkinen | undefined {
Expand Down Expand Up @@ -370,9 +371,6 @@ function adaptVuorovaikutukset(dbProjekti: DBProjekti): API.VuorovaikutusJulkine
if (!vuorovaikutus.vuorovaikutusTilaisuudet) {
throw new Error("adaptVuorovaikutukset: vuorovaikutus.vuorovaikutusTilaisuudet määrittelmättä");
}
if (!vuorovaikutus.vuorovaikutusPDFt) {
throw new Error("adaptVuorovaikutukset: vuorovaikutus.vuorovaikutusPDFt määrittelmättä");
}
// tarkistettu jo, että vuorovaikutusJulkaisuPaiva määritelty
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
Expand Down Expand Up @@ -400,7 +398,8 @@ function adaptVuorovaikutusTilaisuudet(
vuorovaikutusTilaisuudet: Array<VuorovaikutusTilaisuus>,
dbProjekti: DBProjekti
): API.VuorovaikutusTilaisuusJulkinen[] {
return vuorovaikutusTilaisuudet.map((vuorovaikutusTilaisuus) => {
const vuorovaikutusTilaisuudetCopy = cloneDeep(vuorovaikutusTilaisuudet);
return vuorovaikutusTilaisuudetCopy.map((vuorovaikutusTilaisuus) => {
const esitettavatYhteystiedot: StandardiYhteystiedot | undefined = vuorovaikutusTilaisuus.esitettavatYhteystiedot;
delete vuorovaikutusTilaisuus.esitettavatYhteystiedot;
const tilaisuus: API.VuorovaikutusTilaisuusJulkinen = {
Expand Down Expand Up @@ -462,9 +461,15 @@ function isKuulutusNahtavillaVaiheOver(
return !nahtavillaoloVaihe.kuulutusVaihePaattyyPaiva || parseDate(nahtavillaoloVaihe.kuulutusVaihePaattyyPaiva).isBefore(dayjs());
}

function adaptVuorovaikutusPDFPaths(oid: string, vuorovaikutuspdfs: LocalizedMap<VuorovaikutusPDF>): API.VuorovaikutusPDFt {
function adaptVuorovaikutusPDFPaths(
oid: string,
vuorovaikutuspdfs: LocalizedMap<VuorovaikutusPDF> | undefined
): API.VuorovaikutusPDFt | undefined {
if (!vuorovaikutuspdfs) {
return undefined;
}
const result: Partial<API.VuorovaikutusPDFt> = {};
if (!vuorovaikutuspdfs || !vuorovaikutuspdfs[API.Kieli.SUOMI]) {
if (vuorovaikutuspdfs && !vuorovaikutuspdfs[API.Kieli.SUOMI]) {
throw new Error(`adaptVuorovaikutusPDFPaths: vuorovaikutuspdfs.${API.Kieli.SUOMI} määrittelemättä`);
}
for (const kieli in vuorovaikutuspdfs) {
Expand Down
18 changes: 9 additions & 9 deletions backend/src/projektiSearch/projektiSearchAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,6 @@ export function adaptProjektiToJulkinenIndex(projekti: API.ProjektiJulkinen, kie
// Use texts from projekti
hankkeenKuvaus = suunnitteluVaihe?.hankkeenKuvaus?.[kieli] || undefined;
nimi = selectNimi(projekti.velho.nimi, projekti.kielitiedot, kieli);
if (!nimi) {
throw new Error(`adaptProjektiToJulkinenIndex: projektilta puuttuu nimi kielellä ${kieli}`);
}
} else if (aloitusKuulutusJulkaisuJulkinen) {
if (!aloitusKuulutusJulkaisuJulkinen.hankkeenKuvaus) {
throw new Error("adaptProjektiToJulkinenIndex: aloitusKuulutusJulkaisuJulkinen.hankkeenKuvaus puuttuu");
Expand All @@ -90,17 +87,20 @@ export function adaptProjektiToJulkinenIndex(projekti: API.ProjektiJulkinen, kie
publishTimestamp = dayjs(0).format();
}

let viimeinenTilaisuusPaattyy: string | undefined;
let viimeinenTilaisuusPaattyyString: string | undefined;
let viimeinenTilaisuusPaattyyNumber: number | undefined;

const vuorovaikutukset = projekti?.suunnitteluVaihe?.vuorovaikutukset;
const viimeisinVuorovaikutusKierros = vuorovaikutukset?.[vuorovaikutukset?.length - 1];

if (viimeisinVuorovaikutusKierros) {
viimeisinVuorovaikutusKierros?.vuorovaikutusTilaisuudet?.forEach((tilaisuus) => {
if (tilaisuus.paivamaara || tilaisuus.paattymisAika) {
const tilaisuusPaattyy = dayjs(tilaisuus.paivamaara).format(`YYYY-MM-DD[T${tilaisuus.paattymisAika}]`);
if (tilaisuusPaattyy && (!viimeinenTilaisuusPaattyy || tilaisuusPaattyy > viimeinenTilaisuusPaattyy)) {
viimeinenTilaisuusPaattyy = tilaisuusPaattyy;
if (tilaisuus.paivamaara && tilaisuus.paattymisAika) {
const tilaisuusPaattyyNumber = Date.parse(tilaisuus.paivamaara + " " + tilaisuus.paattymisAika);

if (tilaisuusPaattyyNumber && (!viimeinenTilaisuusPaattyyNumber || tilaisuusPaattyyNumber > viimeinenTilaisuusPaattyyNumber)) {
viimeinenTilaisuusPaattyyString = tilaisuus.paivamaara + " " + tilaisuus.paattymisAika;
viimeinenTilaisuusPaattyyNumber = tilaisuusPaattyyNumber;
}
}
});
Expand All @@ -113,7 +113,7 @@ export function adaptProjektiToJulkinenIndex(projekti: API.ProjektiJulkinen, kie
kunnat: projekti.velho.kunnat?.map(safeTrim),
maakunnat: projekti.velho.maakunnat?.map(safeTrim),
vaihe: projekti.status || undefined,
viimeinenTilaisuusPaattyy,
viimeinenTilaisuusPaattyy: viimeinenTilaisuusPaattyyString,
vaylamuoto: projekti.velho.vaylamuoto?.map(safeTrim),
paivitetty: projekti.paivitetty || dayjs().format(),
publishTimestamp,
Expand Down
2 changes: 2 additions & 0 deletions backend/src/projektiSearch/projektiSearchService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ class ProjektiSearchService {
await openSearchClientYllapito.putDocument(projekti.oid, projektiToIndex);

projekti.tallennettu = true;

const apiProjekti = projektiAdapterJulkinen.adaptProjekti(projekti);

if (apiProjekti) {
for (const kieli of Object.values(Kieli)) {
const projektiJulkinenToIndex = adaptProjektiToJulkinenIndex(apiProjekti, kieli);
Expand Down
Loading

0 comments on commit 4d40e36

Please sign in to comment.