Skip to content

Commit

Permalink
feat: hassu 855 hassu 804 hassu 823 hassu 813 hassu 810 hassu 803 has…
Browse files Browse the repository at this point in the history
…su 805 hassu 818 (#319)

* Näytä päätöksen pvm ja asianumero

* Hallinto-oikeuden asettaminen muutoksenhakua varten.

* Esitettävät yhteystiedot

* Korjaa hyvaksymispaatosschema

* Alusta kuulutusyhteyshenkilöt

* Lukunäkymä hyväksymispäätöskuulutuksen tiedoille.

* Staattiset tekstit aineistosivulle
  • Loading branch information
ValheKouneli authored Aug 17, 2022
1 parent be8348b commit a90a44e
Show file tree
Hide file tree
Showing 10 changed files with 191 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import Hyvaksymispaatos from "./Hyvaksymispaatos";
import SuunnitelmatJaAineistot from "../../common/SuunnitelmatJaAineistot";
import { ProjektiLisatiedolla } from "src/hooks/useProjekti";
import { aineistoKategoriat } from "common/aineistoKategoriat";
import Notification, { NotificationType } from "@components/notification/Notification";

interface AineistoNahtavilla {
[kategoriaId: string]: AineistoInput[];
Expand Down Expand Up @@ -72,7 +73,14 @@ export default function Muokkausnakyma() {

return (
<FormProvider {...useFormReturn}>
Tekstiä tähän
<h3 className="vayla-small-title">Päätös ja päätöksen liitteenä olevat aineistot</h3>
<p>
Liitä Liikenne- ja viestintäviraston päätös. Liitettävä päätös haetaan Projektivelhosta. Päätös ja sen liitteenä
oleva aineisto julkaistaan palvelun julkisella puolella kuulutuksen julkaisupäivänä.
</p>
<Notification type={NotificationType.INFO_GRAY}>
Huomioithan, että suunnitelma-aineistojen tulee täyttää saavutettavuusvaatimukset.
</Notification>
<form>
<Hyvaksymispaatos />
<SuunnitelmatJaAineistot />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Controller, useFieldArray, useFormContext } from "react-hook-form";
import SectionContent from "@components/layout/SectionContent";
import { HyvaksymisPaatosVaiheTila, Projekti, ProjektiRooli, YhteystietoInput } from "@services/api";
import { HyvaksymisPaatosVaiheTila, Projekti, ProjektiRooli, ProjektiKayttaja, YhteystietoInput } from "@services/api";
import Section from "@components/layout/Section";
import { Fragment, ReactElement } from "react";
import Button from "@components/button/Button";
Expand All @@ -11,8 +11,8 @@ import TextInput from "@components/form/TextInput";
import HassuGrid from "@components/HassuGrid";
import { maxPhoneLength } from "src/schemas/puhelinNumero";
import IconButton from "@components/button/IconButton";
// import capitalize from "lodash/capitalize";
// import replace from "lodash/replace";
import capitalize from "lodash/capitalize";
import replace from "lodash/replace";
import { useProjekti } from "src/hooks/useProjekti";
import { KuulutuksenTiedotFormValues } from "./index";

Expand All @@ -28,8 +28,11 @@ interface Props {}

function hasHyvaksyttyHyvaksymisPaatosVaiheJulkaisu(projekti: Projekti | null | undefined) {
return (
(projekti?.hyvaksymisPaatosVaiheJulkaisut?.filter((julkaisu) => julkaisu.tila == HyvaksymisPaatosVaiheTila.HYVAKSYTTY) || [])
.length > 0
(
projekti?.hyvaksymisPaatosVaiheJulkaisut?.filter(
(julkaisu) => julkaisu.tila == HyvaksymisPaatosVaiheTila.HYVAKSYTTY
) || []
).length > 0
);
}

Expand All @@ -49,39 +52,38 @@ export default function EsitettavatYhteystiedot({}: Props): ReactElement {
name: "hyvaksymisPaatosVaihe.kuulutusYhteystiedot",
});

// // TODO: tyypityksestä puuttuu vielä kuulutusYhteysHenkilot
// const vuorovaikutusYhteysHenkilot: ProjektiKayttaja[] = projekti?.hyvaksymisPaatosVaihe?.kuulutusYhteysHenkilot
// ? projekti.hyvaksymisPaatosVaihe.kuulutusYhteysHenkilot
// .map((hlo) => {
// const yhteysHenkiloTietoineen: ProjektiKayttaja | undefined = (projekti?.kayttoOikeudet || []).find(
// (ko) => ko.kayttajatunnus === hlo
// );
// if (!yhteysHenkiloTietoineen) {
// return {} as ProjektiKayttaja;
// }
// return yhteysHenkiloTietoineen as ProjektiKayttaja;
// })
// .filter((pk) => pk.nimi)
// : ([] as ProjektiKayttaja[]);
const kuulutusYhteysHenkilot: ProjektiKayttaja[] = projekti?.hyvaksymisPaatosVaihe?.kuulutusYhteysHenkilot
? projekti.hyvaksymisPaatosVaihe.kuulutusYhteysHenkilot
.map((hlo) => {
const yhteysHenkiloTietoineen: ProjektiKayttaja | undefined = (projekti?.kayttoOikeudet || []).find(
(ko) => ko.kayttajatunnus === hlo
);
if (!yhteysHenkiloTietoineen) {
return {} as ProjektiKayttaja;
}
return yhteysHenkiloTietoineen as ProjektiKayttaja;
})
.filter((pk) => pk.nimi)
: ([] as ProjektiKayttaja[]);

if (eiVoiMuokata) {
return (
<Section>
<SectionContent>
{/* <p className="vayla-label mb-5">Vuorovaikuttamisen yhteyshenkilöt</p>
<p className="vayla-label mb-5">Vuorovaikuttamisen yhteyshenkilöt</p>
{projekti?.hyvaksymisPaatosVaihe?.kuulutusYhteystiedot?.map((yhteystieto, index) => (
<p style={{ margin: 0 }} key={index}>
{capitalize(yhteystieto.etunimi)} {capitalize(yhteystieto.sukunimi)}, puh. {yhteystieto.puhelinnumero},{" "}
{yhteystieto?.sahkoposti ? replace(yhteystieto?.sahkoposti, "@", "[at]") : ""} ({yhteystieto.organisaatio}
)
</p>
))}
{vuorovaikutusYhteysHenkilot.map((yhteystieto, index) => (
{kuulutusYhteysHenkilot.map((yhteystieto, index) => (
<p style={{ margin: 0 }} key={index}>
{yhteystieto.nimi}, puh. {yhteystieto.puhelinnumero},{" "}
{yhteystieto.email ? replace(yhteystieto.email, "@", "[at]") : ""} ({yhteystieto.organisaatio})
</p>
))} */}
))}
</SectionContent>
</Section>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,7 @@ export default function KuulutusJaJulkaisuPaiva({}: Props) {
const getPaattymispaiva = useCallback(
async (value: string) => {
try {
const paattymispaiva = await api.laskePaattymisPaiva(
value,
LaskuriTyyppi.KUULUTUKSEN_PAATTYMISPAIVA // TODO: Tähän jotain muuta??
);
const paattymispaiva = await api.laskePaattymisPaiva(value, LaskuriTyyppi.HYVAKSYMISPAATOKSEN_KUULUTUSAIKA);
setValue("hyvaksymisPaatosVaihe.kuulutusVaihePaattyyPaiva", paattymispaiva);
} catch (error) {
showErrorMessage("Kuulutuksen päättymispäivän laskennassa tapahtui virhe");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { HyvaksymisPaatosVaiheJulkaisu, HyvaksymisPaatosVaiheTila } from "@services/api";
import { HyvaksymisPaatosVaiheJulkaisu, HyvaksymisPaatosVaiheTila, ProjektiKayttaja } from "@services/api";
import React, { ReactElement } from "react";
import Notification, { NotificationType } from "@components/notification/Notification";
import capitalize from "lodash/capitalize";
Expand Down Expand Up @@ -28,19 +28,19 @@ export default function AloituskuulutusLukunakyma({ hyvaksymisPaatosVaiheJulkais
hyvaksymisPaatosVaiheHref =
window.location.protocol + "//" + window.location.host + "/suunnitelma/" + projekti.oid + "/hyvaksymispaatos";
}
// const vuorovaikutusYhteysHenkilot: ProjektiKayttaja[] = hyvaksymisPaatosVaiheJulkaisu.kuulutusYhteysHenkilot
// ? hyvaksymisPaatosVaiheJulkaisu.kuulutusYhteysHenkilot
// .map((hlo) => {
// const yhteysHenkiloTietoineen: ProjektiKayttaja | undefined = (projekti?.kayttoOikeudet || []).find(
// (ko) => ko.kayttajatunnus === hlo
// );
// if (!yhteysHenkiloTietoineen) {
// return {} as ProjektiKayttaja;
// }
// return yhteysHenkiloTietoineen as ProjektiKayttaja;
// })
// .filter((pk) => pk.nimi)
// : [];
const vuorovaikutusYhteysHenkilot: ProjektiKayttaja[] = hyvaksymisPaatosVaiheJulkaisu.kuulutusYhteysHenkilot
? hyvaksymisPaatosVaiheJulkaisu.kuulutusYhteysHenkilot
.map((hlo) => {
const yhteysHenkiloTietoineen: ProjektiKayttaja | undefined = (projekti?.kayttoOikeudet || []).find(
(ko) => ko.kayttajatunnus === hlo
);
if (!yhteysHenkiloTietoineen) {
return {} as ProjektiKayttaja;
}
return yhteysHenkiloTietoineen as ProjektiKayttaja;
})
.filter((pk) => pk.nimi)
: [];

// const getPdft = (kieli: Kieli | undefined | null) => {
// if (!hyvaksymisPaatosJulkaisu || !hyvaksymisPaatosJulkaisu.hyvaksymisPaatosPDFt || !kieli) {
Expand Down Expand Up @@ -96,15 +96,15 @@ export default function AloituskuulutusLukunakyma({ hyvaksymisPaatosVaiheJulkais
)
</p>
))}
{/* {vuorovaikutusYhteysHenkilot.map((yhteystieto, index) => (
{vuorovaikutusYhteysHenkilot.map((yhteystieto, index) => (
<p style={{ margin: 0 }} key={index}>
{yhteystieto.nimi}, puh. {yhteystieto.puhelinnumero},{" "}
{yhteystieto.email ? replace(yhteystieto.email, "@", "[at]") : ""} ({yhteystieto.organisaatio})
</p>
))} */}
))}
</SectionContent>
<SectionContent>
<p className="vayla-label mb-5">Kuulutuksen yhteyshenkilöt</p>
<p className="vayla-label mb-5">Kuulutus julkisella puolella</p>
{!published && (
<p>Linkki julkiselle puolelle muodostetaan kuulutuspäivänä. Kuulutuspäivä on {kuulutusPaiva}.</p>
)}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,60 @@
import Section from "@components/layout/Section";
import SectionContent from "@components/layout/SectionContent";
import React from "react";
import { useFormContext } from "react-hook-form";
import { HallintoOikeus } from "@services/api";
import Select from "@components/form/Select";
import useTranslation from "next-translate/useTranslation";
import { Controller } from "react-hook-form";

export default function MuutoksenHaku() {
return <></>;
type Props = {};

type FormFields = {
hyvaksymisPaatosVaihe: {
hallintoOikeus: HallintoOikeus;
};
};

export default function MuutoksenHaku({}: Props) {
const {
register,
formState: { errors },
control,
} = useFormContext<FormFields>();

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

return (
<Section noDivider>
<SectionContent>
<h4 className="vayla-small-title">Muutoksen haku</h4>
<p>
Päätökseen voi valittamalla hakea muutosta hallinto-oikeudelta 30 päivän kuluessa päätöksen tiedoksiannosta.
Valitse pudostusvalikosta hallinto-oikeus, johon muutoksenhaku osoitetaan tehtävän.
</p>
<div style={{ maxWidth: "30em" }}>
<Controller
control={control}
name="hyvaksymisPaatosVaihe.hallintoOikeus"
render={({ field: { value, onChange, ...field } }) => (
<Select
style={{ backgroundColor: "transparent" }}
label="Hallinto-oikeus *"
options={Object.keys(HallintoOikeus).map((ho) => ({
label: ho ? t(`hallinto-oikeus.${ho}`) : "",
value: ho,
}))}
{...register(`hyvaksymisPaatosVaihe.hallintoOikeus`)}
error={errors?.hyvaksymisPaatosVaihe?.hallintoOikeus}
addEmptyOption
value={value}
onChange={(event) => onChange(event.target.value)}
{...field}
/>
)}
/>
</div>
</SectionContent>
</Section>
);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,45 @@
import Section from "@components/layout/Section";
import SectionContent from "@components/layout/SectionContent";
import React from "react";
import DatePicker from "@components/form/DatePicker";
import HassuGrid from "@components/HassuGrid";
import { Link } from "@mui/material";
import { Projekti } from "@services/api";
import TextInput from "@components/form/TextInput";

export default function PaatoksenPaiva() {
return <></>;
type Props = {
projekti: Projekti;
};

export default function PaatoksenPaiva({ projekti }: Props) {
return (
<Section noDivider>
<SectionContent>
<h4 className="vayla-small-title">Liikenne- ja viestintäviraston päätöksen päivä ja asianumero</h4>
<p>
Järjestelmän pääkäyttäjä lisää Liikenne- ja viestintäviraston päätöksen päivämäärän ja asianumeron. Kuulutus
on mahdollista julkaista vasta kun hyväksymispäätös on annettu. Käsittelyn tilaa voi seurata{" "}
<Link underline="none" href={`/yllapito/projekti/${projekti.oid}/kasittelyntila`}>
Käsittelyn tila
</Link>{" "}
-sivulta.
</p>
<HassuGrid cols={{ lg: 3 }}>
<DatePicker
label="Päätöspäivä *"
className="md:max-w-min"
disabled
readOnly
value={projekti.kasittelynTila?.hyvaksymispaatos?.paatoksenPvm || ""}
/>
<TextInput
label="Asianumero *"
disabled
value={projekti.kasittelynTila?.hyvaksymispaatos?.asianumero || ""}
readOnly
/>
</HassuGrid>
</SectionContent>
</Section>
);
}
32 changes: 21 additions & 11 deletions src/components/projekti/hyvaksyminen/kuulutuksenTiedot/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import KuulutusJaJulkaisuPaiva from "./KuulutusJaJulkaisuPaiva";
import PaatoksenPaiva from "./PaatoksenPaiva";
import MuutoksenHaku from "./MuutoksenHaku";
import IlmoituksenVastaanottajatKomponentti from "./IlmoituksenVastaanottajat";
// import Lukunakyma from "./Lukunakyma";
import Lukunakyma from "./Lukunakyma";
import defaultVastaanottajat from "src/util/defaultVastaanottajat";
import { removeTypeName } from "src/util/removeTypeName";
import useKirjaamoOsoitteet from "src/hooks/useKirjaamoOsoitteet";
Expand All @@ -31,6 +31,12 @@ function defaultValues(
kuulutusYhteystiedot: projekti?.hyvaksymisPaatosVaihe?.kuulutusYhteystiedot
? projekti.hyvaksymisPaatosVaihe.kuulutusYhteystiedot.map((yhteystieto) => removeTypeName(yhteystieto))
: [],
kuulutusYhteysHenkilot:
projekti?.kayttoOikeudet
?.filter(({ kayttajatunnus }) =>
projekti?.hyvaksymisPaatosVaihe?.kuulutusYhteysHenkilot?.includes(kayttajatunnus)
)
.map(({ kayttajatunnus }) => kayttajatunnus) || [],
ilmoituksenVastaanottajat: defaultVastaanottajat(
projekti,
projekti.hyvaksymisPaatosVaihe?.ilmoituksenVastaanottajat,
Expand Down Expand Up @@ -87,7 +93,7 @@ export default function KuulutuksenTiedot() {
<FormProvider {...useFormReturn}>
<form>
<KuulutusJaJulkaisuPaiva />
<PaatoksenPaiva />
<PaatoksenPaiva projekti={projekti} />
<MuutoksenHaku />
<KuulutuksessaEsitettavatYhteystiedot />
<IlmoituksenVastaanottajatKomponentti hyvaksymisPaatosVaihe={projekti?.hyvaksymisPaatosVaihe} />
Expand All @@ -101,15 +107,19 @@ export default function KuulutuksenTiedot() {
<PdfPreviewForm ref={pdfFormRef} />
</>
)}
{!voiMuokata && projekti && projekti.hyvaksymisPaatosVaiheJulkaisut?.[projekti.hyvaksymisPaatosVaiheJulkaisut.length - 1] && (
<FormProvider {...useFormReturn}>
{/* <Lukunakyma
projekti={projekti}
hyvaksymisPaatosVaiheJulkaisu={projekti.hyvaksymisPaatosVaiheJulkaisut[projekti.hyvaksymisPaatosVaiheJulkaisut.length - 1]}
/>
<Painikkeet projekti={projekti} /> */}
</FormProvider>
)}
{!voiMuokata &&
projekti &&
projekti.hyvaksymisPaatosVaiheJulkaisut?.[projekti.hyvaksymisPaatosVaiheJulkaisut.length - 1] && (
<FormProvider {...useFormReturn}>
<Lukunakyma
projekti={projekti}
hyvaksymisPaatosVaiheJulkaisu={
projekti.hyvaksymisPaatosVaiheJulkaisut[projekti.hyvaksymisPaatosVaiheJulkaisut.length - 1]
}
/>
<Painikkeet projekti={projekti} />
</FormProvider>
)}
</>
);
}
8 changes: 8 additions & 0 deletions src/locales/fi/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@
"tutki_suunnitelmaa": "Tutki suunnitelmaa",
"virhe": "Virhe"
},
"hallinto-oikeus": {
"HELSINKI": "Helsingin hallinto-oikeus",
"HAMEENLINNA": "Hämeenlinnan hallinto-oikeus",
"ITA_SUOMI": "Itä-Suomen hallinto-oikeus",
"POHJOIS_SUOMI": "Pohjois-Suomen hallinto-oikeus",
"TURKU": "Turun hallinto-oikeus",
"VAASA": "Vaasan hallinto-oikeus"
},
"sivustonimi": "Valtion liikenneväylien suunnittelu",
"vaylavirasto": "Väylävirasto",
"ely-keskus": "ELY-keskus",
Expand Down
8 changes: 8 additions & 0 deletions src/locales/sv/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@
"tutki_suunnitelmaa": "RUOTSIKSI Tutki suunnitelmaa",
"virhe": "RUOTSIKSI Virhe"
},
"hallinto-oikeus": {
"HELSINKI": "RUOTSIKSI Helsingin hallinto-oikeus",
"HAMEENLINNA": "RUOTSIKSI Hämeenlinnan hallinto-oikeus",
"ITA_SUOMI": "RUOTSIKSI Itä-Suomen hallinto-oikeus",
"POHJOIS_SUOMI": "RUOTSIKSI Pohjois-Suomen hallinto-oikeus",
"TURKU": "RUOTSIKSI Turun hallinto-oikeus",
"VAASA": "RUOTSIKSI Vaasan hallinto-oikeus"
},
"sivustonimi": "Planering av statens trafikleder",
"vaylavirasto": "Trafikledsverket",
"ely-keskus": "NTM-centralen",
Expand Down
Loading

0 comments on commit a90a44e

Please sign in to comment.