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

feat: nahtavillaolo kansalaisnakyma (HASSU-745) #269

Merged
merged 2 commits into from
Jun 14, 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
63 changes: 61 additions & 2 deletions backend/src/handler/projektiAdapterJulkinen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
DBProjekti,
DBVaylaUser,
LocalizedMap,
NahtavillaoloVaihe,
SuunnitteluSopimus,
Velho,
Vuorovaikutus,
Expand Down Expand Up @@ -45,13 +46,25 @@ class ProjektiAdapterJulkinen {
}
}

function checkNahtavillaolo() {
// TODO: selvita tuleeko aloitukuulutuksen kaltaiset snapshotit
if (projekti.nahtavillaoloVaihe) {
if (
projekti.nahtavillaoloVaihe.kuulutusPaiva &&
parseDate(projekti.nahtavillaoloVaihe.kuulutusPaiva).isBefore(dayjs())
) {
projekti.status = API.Status.NAHTAVILLAOLO;
}
}
}

projekti.status = API.Status.EI_JULKAISTU;

checkAloituskuulutus();

checkSuunnittelu();

// checkNahtavillaolo();
checkNahtavillaolo();

// checkHyvaksyttavana();

Expand Down Expand Up @@ -79,6 +92,11 @@ class ProjektiAdapterJulkinen {
suunnitteluVaihe = ProjektiAdapterJulkinen.adaptSuunnitteluVaihe(dbProjekti, projektiHenkilot);
}

let nahtavillaoloVaihe = undefined;
if (isNahtavillaoloVaihePublic(dbProjekti.nahtavillaoloVaihe)) {
nahtavillaoloVaihe = ProjektiAdapterJulkinen.adaptNahtavillaoloVaihe(dbProjekti, projektiHenkilot);
}

const projekti: API.ProjektiJulkinen = {
__typename: "ProjektiJulkinen",
oid: dbProjekti.oid,
Expand All @@ -89,6 +107,7 @@ class ProjektiAdapterJulkinen {
aloitusKuulutusJulkaisut,
paivitetty: dbProjekti.paivitetty,
projektiHenkilot: Object.values(projektiHenkilot),
nahtavillaoloVaihe,
};
const projektiJulkinen = removeUndefinedFields(projekti) as API.ProjektiJulkinen;
return this.applyStatus(projektiJulkinen);
Expand Down Expand Up @@ -178,13 +197,40 @@ class ProjektiAdapterJulkinen {
vuorovaikutukset: adaptVuorovaikutukset(dbProjekti, projektiHenkilot),
};
}

//TODO: lisaa julkisia kenttia ja tarkista yhteystietojen osalta onko tarve mergelle henkiloiden kanssa
private static adaptNahtavillaoloVaihe(
dbProjekti: DBProjekti,
projektiHenkilot: ProjektiHenkilot
): API.NahtavillaoloVaiheJulkinen {
const {
hankkeenKuvaus,
kuulutusPaiva,
kuulutusVaihePaattyyPaiva,
kuulutusYhteysHenkilot,
kuulutusYhteystiedot,
muistutusoikeusPaattyyPaiva,
} = dbProjekti.nahtavillaoloVaihe;
return {
__typename: "NahtavillaoloVaiheJulkinen",
hankkeenKuvaus: adaptHankkeenKuvaus(hankkeenKuvaus),
kuulutusPaiva,
kuulutusVaihePaattyyPaiva,
muistutusoikeusPaattyyPaiva,
kuulutusYhteysHenkilot: adaptUsernamesToProjektiHenkiloIds(kuulutusYhteysHenkilot, projektiHenkilot),
kuulutusYhteystiedot: adaptYhteystiedot(kuulutusYhteystiedot),
};
}
}

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

function adaptVuorovaikutukset(dbProjekti: DBProjekti, projektiHenkilot: ProjektiHenkilot): API.VuorovaikutusJulkinen[] {
function adaptVuorovaikutukset(
dbProjekti: DBProjekti,
projektiHenkilot: ProjektiHenkilot
): API.VuorovaikutusJulkinen[] {
const vuorovaikutukset = dbProjekti.vuorovaikutukset;
if (vuorovaikutukset && vuorovaikutukset.length > 0) {
return vuorovaikutukset
Expand Down Expand Up @@ -263,6 +309,19 @@ function checkIfAloitusKuulutusJulkaisutIsPublic(
return true;
}

function isNahtavillaoloVaihePublic(nahtavillaoloVaihe: NahtavillaoloVaihe): boolean {
if(!nahtavillaoloVaihe) {
return false;
}
if (nahtavillaoloVaihe.tila !== API.NahtavillaoloVaiheTila.HYVAKSYTTY) {
return false;
}
if (parseDate(nahtavillaoloVaihe.kuulutusPaiva).isAfter(dayjs())) {
return false;
}
return true;
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tätä pitää toki sitten muuttaa, kun/jos Mikko tekee nähtävilläolovaiheesta samanlaisen kuin aloituskuulutusvaiheesta, eli tulee ne "julkaisut"

function adaptAndMergeYhteystiedot(dbProjekti: DBProjekti, vuorovaikutus: Vuorovaikutus) {
let vuorovaikutusYhteystiedot = adaptYhteystiedotFromUsernames(dbProjekti, vuorovaikutus.vuorovaikutusYhteysHenkilot);
if (!vuorovaikutusYhteystiedot) {
Expand Down
10 changes: 10 additions & 0 deletions graphql/types.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,15 @@ type NahtavillaoloVaihe {
palautusSyy: String
}

type NahtavillaoloVaiheJulkinen {
kuulutusPaiva: String
kuulutusVaihePaattyyPaiva: String
muistutusoikeusPaattyyPaiva: String
hankkeenKuvaus: HankkeenKuvaukset
kuulutusYhteysHenkilot: [String!]
kuulutusYhteystiedot: [Yhteystieto!]
}

enum NahtavillaoloVaiheTila {
ODOTTAA_HYVAKSYNTAA
HYVAKSYTTY
Expand Down Expand Up @@ -323,6 +332,7 @@ type ProjektiJulkinen implements IProjekti {
kielitiedot: Kielitiedot
projektiHenkilot: [ProjektiKayttajaJulkinen!]
paivitetty: String
nahtavillaoloVaihe: NahtavillaoloVaiheJulkinen
}

type Suunnitelma {
Expand Down
6 changes: 2 additions & 4 deletions src/components/button/JataPalautettaNappi.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import React from "react";
import { styled, experimental_sx as sx } from "@mui/material";
import useTranslation from "next-translate/useTranslation";

interface Props {
onClick?: () => void;
teksti: string;
}

const JataPalautettaNappi = (
Expand All @@ -16,8 +16,6 @@ const JataPalautettaNappi = (
const element = document.getElementById("to-top-button");
if (element) element.parentNode?.removeChild(element);

const { t } = useTranslation("projekti");

return (
<>
<TavallinenNappi
Expand All @@ -27,7 +25,7 @@ const JataPalautettaNappi = (
onClick={onClick}
style={{ borderRadius: 0, width: "100%", textTransform: "none", fontWeight: "bold" }}
>
{t("palautelomake.jata_palaute")}
{props.teksti}
<img style={{ display: "inline", marginLeft: "1em" }} src="/kysymys-ikoni.svg" alt="kysymysikoni" />
</TavallinenNappi>
<LeijuvaNappi
Expand Down
2 changes: 2 additions & 0 deletions src/locales/fi/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
"sivustonimi": "Valtion liikenneväylien suunnittelu",
"vaylavirasto": "Väylävirasto",
"ely-keskus": "ELY-keskus",
"vaylavirastolle": "Väylävirastolle",
"ely-keskukselle": "ELY-keskukselle",
"viranomainen": {
"ETELA_POHJANMAAN_ELY": "Etelä-Pohjanmaan ELY-keskus",
"ETELA_SAVO_ELY": "Etelä-Savon ELY-keskus",
Expand Down
22 changes: 20 additions & 2 deletions src/locales/fi/projekti.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,16 @@
"valmistuttuaan_suunnitelma_asetetaan": "Valmistuttuaan suunnitelma asetetaan yleisesti nähtäville, jolloin asianosaisilla on mahdollisuus tehdä kirjallinen muistutus suunnitelmasta. (ratalaki 22 §).",
"vaylavirasto_kasittelee_suunnitelman": "Väylävirasto käsittelee suunnitelman laatimiseen liittyen tarpeellisia henkilötietoja. Halutessasi tietää tarkemmin väyläsuunnittelun tietosuojakäytänteistä, tutustu verkkosivujen tietosuojaosioon osoitteessa www.vayla.fi/tietosuoja."
},
"nahtavillaolo": {
"ei-rata": {
"vaylavirasto_on_laatinut": "Väylävirasto on laatinut liikennejärjestelmästä ja maanteistä annetun lain (503/2005) mukaisen tiesuunnitelman",
"kuulutus_julkaistu": "Kuulutus on julkaistu tietoverkossa Väyläviraston verkkosivuilla",
"asianosaisten_katsotaan_saaneen": "Asianosaisten katsotaan saaneen tiedon suunnitelman nähtäville asettamisesta seitsemäntenä päivänä kuulutuksen julkaisemisajankohdasta (hallintolaki 62 a §)",
"kiinteiston_omistajilla_ja": "Kiinteistön omistajilla ja muilla asianosaisilla sekä niillä, joiden asumiseen, työntekoon tai muihin oloihin suunnitelma saattaa vaikuttaa, on mahdollisuus muistutusten tekemiseen suunnitelmasta. Muistutukset on toimitettava",
"ennen_paattymista": "ennen nähtävänäoloajan päättymistä (LjMTL 27 §) Valtion liikenneväylien suunnittelu -järjestelmään osoitteeseen",
"sahkopostilla_muistutus": "Sähköpostilla muistutusta lähettäessä on liitettävä viestiin projektin asiatunnus."
}
},
"hankesuunnitelmista": "Hankesuunnitelmista lorem ipsum-teksti tähän, joka kertoo lyhyesti mitä tämä sivusto pitää sisällään. Lorem ipsum dolor sit amet consectetur adipisicing elit. Magnam dicta voluptatem fugit quos praesentium architecto accusamus non earum fuga veritatis, quia facilis est repellendus et iste similique beatae perferendis totam?"
},
"projekti-tyyppi": {
Expand Down Expand Up @@ -89,7 +99,14 @@
"menneet_vuorovaikutustilaisuudet": "Menneet vuorovaikutustilaisuudet",
"esittelyaineisto_ja_suunnitelmaluonnokset": "Esittelyaineisto ja suunnitelmaluonnokset",
"muut_materiaalit": "Muut esittelymateriaalit",
"video_materiaalit": "Enakkoon kuvattu videoesittely"
"video_materiaalit": "Enakkoon kuvattu videoesittely",
"nahtavillaolo": {
"suunnitteluhankkeen_kuvaus": "Suunnitteluhankkeen kuvaus",
"asianosaisen_oikeudet": "Asianosaisen oikeudet",
"esittelyaineisto_ja_suunnitelmat": "Esittelyaineisto ja suunnitelmat",
"muistutuksen_jattaminen": "Muistutuksen jättäminen",
"yhteystiedot": "Yhteystiedot"
}
},
"vastaava-viranomainen": {
"ETELA_POHJANMAAN_ELY": "Etelä-Pohjanmaan ELY-keskus",
Expand All @@ -116,6 +133,7 @@
"tuetut_tiedostomuodot_ovat": "Tuetut tiedostomuodot ovat PDF, JPG ja PNG. Sallittu tiedostokoko on maksimissaan 4,5Mt.",
"olemme_vastaanottaneet_viestisi": "Olemme vastaanottaneet viestisi.",
"kaikki_viestit_kasitellaan": "Kaikki viestit käsitellään ja ne pyritään huomioimaan suunnittelussa. Viimeistellyt suunnitelmat asetetaan myöhemmin nähtäville.",
"jos_toivoit_yhteydenottoa": "Jos toivoit yhteydenottoa, hankkeen suunnittelutiimi on sinuun yhteydessä mahdollisimman pian."
"jos_toivoit_yhteydenottoa": "Jos toivoit yhteydenottoa, hankkeen suunnittelutiimi on sinuun yhteydessä mahdollisimman pian.",
"jata_muistutus": "Jätä muistutus hankkeesta"
}
}
2 changes: 2 additions & 0 deletions src/locales/sv/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
"sivustonimi": "Planering av statens trafikleder",
"vaylavirasto": "Trafikledsverket",
"ely-keskus": "NTM-centralen",
"vaylavirastolle": "till Trafikledsverket",
"ely-keskukselle": "till NTM-centralen",
"viranomainen": {
"ETELA_POHJANMAAN_ELY": "RUOTSIKSI Etelä-Pohjanmaan ELY-keskus",
"ETELA_SAVO_ELY": "RUOTSIKSI Etelä-Savon ELY-keskus",
Expand Down
22 changes: 20 additions & 2 deletions src/locales/sv/projekti.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,16 @@
"valmistuttuaan_suunnitelma_asetetaan": "RUOTSIKSI Valmistuttuaan suunnitelma asetetaan yleisesti nähtäville, jolloin asianosaisilla on mahdollisuus tehdä kirjallinen muistutus suunnitelmasta. (ratalaki 22 §).",
"vaylavirasto_kasittelee_suunnitelman": "RUOTSIKSI Väylävirasto käsittelee suunnitelman laatimiseen liittyen tarpeellisia henkilötietoja. Halutessasi tietää tarkemmin väyläsuunnittelun tietosuojakäytänteistä, tutustu verkkosivujen tietosuojaosioon osoitteessa www.vayla.fi/tietosuoja."
},
"nahtavillaolo": {
"ei-rata": {
"vaylavirasto_on_laatinut": "RUOTSIKSI Väylävirasto on laatinut liikennejärjestelmästä ja maanteistä annetun lain (503/2005) mukaisen tiesuunnitelman",
"kuulutus_julkaistu": "RUOTSIKSI Kuulutus on julkaistu tietoverkossa Väyläviraston verkkosivuilla",
"asianosaisten_katsotaan_saaneen": "RUOTSIKSI Asianosaisten katsotaan saaneen tiedon suunnitelman nähtäville asettamisesta seitsemäntenä päivänä kuulutuksen julkaisemisajankohdasta (hallintolaki 62 a §)",
"kiinteiston_omistajilla_ja": "RUOTSIKSI Kiinteistön omistajilla ja muilla asianosaisilla sekä niillä, joiden asumiseen, työntekoon tai muihin oloihin suunnitelma saattaa vaikuttaa, on mahdollisuus muistutusten tekemiseen suunnitelmasta. Muistutukset on toimitettava",
"ennen_paattymista": "RUOTSIKSI ennen nähtävänäoloajan päättymistä (LjMTL 27 §) Valtion liikenneväylien suunnittelu -järjestelmään osoitteeseen",
"sahkopostilla_muistutus": "RUOTSIKSI Sähköpostilla muistutusta lähettäessä on liitettävä viestiin projektin asiatunnus."
}
},
"hankesuunnitelmista": "RUOTSIKSI Hankesuunnitelmista lorem ipsum-teksti tähän, joka kertoo lyhyesti mitä tämä sivusto pitää sisällään. Lorem ipsum dolor sit amet consectetur adipisicing elit. Magnam dicta voluptatem fugit quos praesentium architecto accusamus non earum fuga veritatis, quia facilis est repellendus et iste similique beatae perferendis totam?"
},
"projekti-tyyppi": {
Expand Down Expand Up @@ -89,7 +99,14 @@
"menneet_vuorovaikutustilaisuudet": "RUOTSIKSI Menneet vuorovaikutustilaisuudet",
"esittelyaineisto_ja_suunnitelmaluonnokset": "RUOTSIKSI Esittelyaineisto ja suunnitelmaluonnokset",
"muut_materiaalit": "RUOTSIKSI Muut esittelymateriaalit",
"video_materiaalit": "RUOTSIKSI Enakkoon kuvattu videoesittely"
"video_materiaalit": "RUOTSIKSI Enakkoon kuvattu videoesittely",
"nahtavillaolo": {
"suunnitteluhankkeen_kuvaus": "RUOTSIKSI Suunnitteluhankkeen kuvaus",
"asianosaisen_oikeudet": "RUOTSIKSI Asianosaisen oikeudet",
"esittelyaineisto_ja_suunnitelmat": "RUOTSIKSI Esittelyaineisto ja suunnitelmat",
"muistutuksen_jattaminen": "RUOTSIKSI Muistutuksen jättäminen",
"yhteystiedot": "RUOTSIKSI Yhteystiedot"
}
},
"vastaava-viranomainen": {
"ETELA_POHJANMAAN_ELY": "RUOTSIKSI Etelä-Pohjanmaan ELY-keskus",
Expand All @@ -116,6 +133,7 @@
"tuetut_tiedostomuodot_ovat": "RUOTSIKSI Tuetut tiedostomuodot ovat PDF, JPG ja PNG. Sallittu tiedostokoko on maksimissaan 4,5Mt.",
"olemme_vastaanottaneet_viestisi": "RUOTSIKSI Olemme vastaanottaneet viestisi.",
"kaikki_viestit_kasitellaan": "RUOTSIKSI Kaikki viestit käsitellään ja ne pyritään huomioimaan suunnittelussa. Viimeistellyt suunnitelmat asetetaan myöhemmin nähtäville.",
"jos_toivoit_yhteydenottoa": "RUOTSIKSI Jos toivoit yhteydenottoa, hankkeen suunnittelutiimi on sinuun yhteydessä mahdollisimman pian."
"jos_toivoit_yhteydenottoa": "RUOTSIKSI Jos toivoit yhteydenottoa, hankkeen suunnittelutiimi on sinuun yhteydessä mahdollisimman pian.",
"jata_muistutus": "RUOTSIKSI Jätä muistutus hankkeesta"
}
}
Loading