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: hassu 855 hassu 804 hassu 823 hassu 813 hassu 810 hassu 803 hassu 805 hassu 818 #319

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
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