Skip to content

Commit

Permalink
feat: Aloituskuulutuksen kieliversiot: kielituki pdf:en esikatseluun (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
haapamakim committed Feb 16, 2022
1 parent cf4cf3d commit 105405f
Show file tree
Hide file tree
Showing 29 changed files with 493 additions and 272 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Object {
},
],
"hankkeenKuvaus": "Lorem Ipsum",
"hankkeenKuvausRuotsi": "Svenska",
"hankkeenKuvausRuotsi": "svenska",
"hankkeenKuvausSaame": "Saameksi",
"kuulutusPaiva": "2022-01-02",
"siirtyySuunnitteluVaiheeseen": "2022-01-01",
Expand All @@ -37,7 +37,7 @@ Object {
},
],
"hankkeenKuvaus": "Lorem Ipsum",
"hankkeenKuvausRuotsi": "Svenska",
"hankkeenKuvausRuotsi": "svenska",
"hankkeenKuvausSaame": "Saameksi",
"kuulutusPaiva": "2022-01-02",
"siirtyySuunnitteluVaiheeseen": "2022-01-01",
Expand All @@ -46,12 +46,12 @@ Object {
Object {
"elyKeskus": "Pirkanmaa",
"hankkeenKuvaus": "Lorem Ipsum",
"hankkeenKuvausRuotsi": "Svenska",
"hankkeenKuvausRuotsi": "svenska",
"hankkeenKuvausSaame": "Saameksi",
"id": 1,
"kielitiedot": Object {
"ensisijainenKieli": "SUOMI",
"projektinNimiVieraskielella": "Heja sverige",
"projektinNimiVieraskielella": "Namnet på svenska",
"toissijainenKieli": "RUOTSI",
},
"kuulutusPaiva": "2022-01-02",
Expand Down Expand Up @@ -105,7 +105,7 @@ Object {
},
],
"hankkeenKuvaus": "Lorem Ipsum",
"hankkeenKuvausRuotsi": "Svenska",
"hankkeenKuvausRuotsi": "svenska",
"hankkeenKuvausSaame": "Saameksi",
"kuulutusPaiva": "2022-01-02",
"palautusSyy": "Korjaa teksti",
Expand All @@ -129,7 +129,7 @@ Object {
},
],
"hankkeenKuvaus": "Lorem Ipsum",
"hankkeenKuvausRuotsi": "Svenska",
"hankkeenKuvausRuotsi": "svenska",
"hankkeenKuvausSaame": "Saameksi",
"kuulutusPaiva": "2022-01-02",
"palautusSyy": null,
Expand All @@ -139,12 +139,12 @@ Object {
Object {
"elyKeskus": "Pirkanmaa",
"hankkeenKuvaus": "Lorem Ipsum",
"hankkeenKuvausRuotsi": "Svenska",
"hankkeenKuvausRuotsi": "svenska",
"hankkeenKuvausSaame": "Saameksi",
"id": 1,
"kielitiedot": Object {
"ensisijainenKieli": "SUOMI",
"projektinNimiVieraskielella": "Heja sverige",
"projektinNimiVieraskielella": "Namnet på svenska",
"toissijainenKieli": "RUOTSI",
},
"kuulutusPaiva": "2022-01-02",
Expand Down Expand Up @@ -198,7 +198,7 @@ Object {
},
],
"hankkeenKuvaus": "Lorem Ipsum",
"hankkeenKuvausRuotsi": "Svenska",
"hankkeenKuvausRuotsi": "svenska",
"hankkeenKuvausSaame": "Saameksi",
"kuulutusPaiva": "2022-01-02",
"palautusSyy": null,
Expand All @@ -208,13 +208,13 @@ Object {
Object {
"elyKeskus": "Pirkanmaa",
"hankkeenKuvaus": "Lorem Ipsum",
"hankkeenKuvausRuotsi": "Svenska",
"hankkeenKuvausRuotsi": "svenska",
"hankkeenKuvausSaame": "Saameksi",
"hyvaksyja": "A123",
"id": 1,
"kielitiedot": Object {
"ensisijainenKieli": "SUOMI",
"projektinNimiVieraskielella": "Heja sverige",
"projektinNimiVieraskielella": "Namnet på svenska",
"toissijainenKieli": "RUOTSI",
},
"kuulutusPaiva": "2022-01-02",
Expand Down
2 changes: 1 addition & 1 deletion backend/integrationtest/api/api.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ describe("Api", () => {
expect(updatedProjekti.euRahoitus).to.be.false;

// Generate Aloituskuulutus PDF
const pdf = await api.esikatseleAsiakirjaPDF(oid, AsiakirjaTyyppi.ALOITUSKUULUTUS);
const pdf = await api.esikatseleAsiakirjaPDF(oid, AsiakirjaTyyppi.ALOITUSKUULUTUS, Kieli.SUOMI);
expect(pdf.nimi).to.include(".pdf");
expect(pdf.sisalto).not.to.be.empty;
expect(pdf.sisalto.length).to.be.greaterThan(50000);
Expand Down
3 changes: 2 additions & 1 deletion backend/integrationtest/email/email.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/* tslint:disable:only-arrow-functions no-unused-expression */
import { describe, it } from "mocha";
import { sendEmail } from "../../src/email/email";
import { AsiakirjaTyyppi } from "../../../common/graphql/apiModel";
import { AsiakirjaTyyppi, Kieli } from "../../../common/graphql/apiModel";
import { AsiakirjaService } from "../../src/asiakirja/asiakirjaService";
import { asiakirjaAdapter } from "../../src/handler/asiakirjaAdapter";

Expand All @@ -25,6 +25,7 @@ describe.skip("Email", () => {
const pdf = await new AsiakirjaService().createPdf({
aloitusKuulutusJulkaisu: asiakirjaAdapter.adaptAloitusKuulutusJulkaisu(projekti),
asiakirjaTyyppi: AsiakirjaTyyppi.ALOITUSKUULUTUS,
kieli: Kieli.SUOMI,
});

await sendEmail({
Expand Down

This file was deleted.

6 changes: 3 additions & 3 deletions backend/src/asiakirja/abstractPdf.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ export abstract class AbstractPdf {
protected fileBasePath: string;
protected doc: PDFKit.PDFDocument;

constructor(title: string) {
this.title = title;
constructor(header: string, nimi: string) {
this.title = header + "; " + nimi;
// Clean filename by joining allowed characters together
this.fileName =
deburr(title)
deburr(header + " " + nimi)
.replace(/[^\w() -]/g, " ")
.slice(0, 100) + ".pdf";
this.fileBasePath = __dirname;
Expand Down
13 changes: 7 additions & 6 deletions backend/src/asiakirja/asiakirjaService.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { AsiakirjaTyyppi, PDF, ProjektiTyyppi } from "../../../common/graphql/apiModel";
import { AsiakirjaTyyppi, Kieli, PDF, ProjektiTyyppi } from "../../../common/graphql/apiModel";
import { AloitusKuulutusJulkaisu } from "../database/model/projekti";
import { AloitusKuulutus10T } from "./suunnittelunAloitus/aloitusKuulutus10T";
import { AloitusKuulutus10R } from "./suunnittelunAloitus/aloitusKuulutus10R";
Expand All @@ -8,6 +8,7 @@ import { Ilmoitus12R } from "./suunnittelunAloitus/ilmoitus12R";
interface CreatePdfOptions {
aloitusKuulutusJulkaisu: AloitusKuulutusJulkaisu;
asiakirjaTyyppi: AsiakirjaTyyppi;
kieli: Kieli;
}

enum AsiakirjanMuoto {
Expand All @@ -27,18 +28,18 @@ function determineAsiakirjaMuoto(aloitusKuulutusJulkaisu: AloitusKuulutusJulkais
}

export class AsiakirjaService {
createPdf({ asiakirjaTyyppi, aloitusKuulutusJulkaisu }: CreatePdfOptions): Promise<PDF> {
createPdf({ asiakirjaTyyppi, aloitusKuulutusJulkaisu, kieli }: CreatePdfOptions): Promise<PDF> {
let pdf: Promise<PDF>;
const asiakirjanMuoto = determineAsiakirjaMuoto(aloitusKuulutusJulkaisu);

switch (asiakirjaTyyppi) {
case AsiakirjaTyyppi.ALOITUSKUULUTUS:
switch (asiakirjanMuoto) {
case AsiakirjanMuoto.TIE:
pdf = new AloitusKuulutus10T(aloitusKuulutusJulkaisu).pdf;
pdf = new AloitusKuulutus10T(aloitusKuulutusJulkaisu, kieli).pdf;
break;
case AsiakirjanMuoto.RATA:
pdf = new AloitusKuulutus10R(aloitusKuulutusJulkaisu).pdf;
pdf = new AloitusKuulutus10R(aloitusKuulutusJulkaisu, kieli).pdf;
break;
default:
throw new Error(
Expand All @@ -49,10 +50,10 @@ export class AsiakirjaService {
case AsiakirjaTyyppi.ILMOITUS_KUULUTUKSESTA:
switch (asiakirjanMuoto) {
case AsiakirjanMuoto.TIE:
pdf = new Ilmoitus12T(aloitusKuulutusJulkaisu).pdf;
pdf = new Ilmoitus12T(aloitusKuulutusJulkaisu, kieli).pdf;
break;
case AsiakirjanMuoto.RATA:
pdf = new Ilmoitus12R(aloitusKuulutusJulkaisu).pdf;
pdf = new Ilmoitus12R(aloitusKuulutusJulkaisu, kieli).pdf;
break;
default:
throw new Error(
Expand Down
62 changes: 40 additions & 22 deletions backend/src/asiakirja/suunnittelunAloitus/aloitusKuulutus10R.ts
Original file line number Diff line number Diff line change
@@ -1,42 +1,60 @@
import { SuunnittelunAloitusPdf } from "./suunnittelunAloitusPdf";
import { AloitusKuulutusJulkaisu } from "../../database/model/projekti";
import { Kieli } from "../../../../common/graphql/apiModel";

const header = "KUULUTUS SUUNNITTELUN ALOITTAMISESTA";
const headers: Record<Kieli.SUOMI | Kieli.RUOTSI, string> = {
SUOMI: "KUULUTUS SUUNNITTELUN ALOITTAMISESTA",
RUOTSI: "KUNGÖRELSE OM INLEDANDET AV PLANERINGEN",
};

export class AloitusKuulutus10R extends SuunnittelunAloitusPdf {
private tietosuojaUrl = "https://www.vayla.fi/tietosuoja";
private tietosuojaUrl;

constructor(aloitusKuulutusJulkaisu: AloitusKuulutusJulkaisu) {
super(aloitusKuulutusJulkaisu, header);
constructor(aloitusKuulutusJulkaisu: AloitusKuulutusJulkaisu, kieli: Kieli) {
super(aloitusKuulutusJulkaisu, kieli, headers[kieli == Kieli.SAAME ? Kieli.SUOMI : kieli]); //TODO lisää tuki Saamen eri muodoille
this.tietosuojaUrl = this.selectText([
"https://www.vayla.fi/tietosuoja",
"https://vayla.fi/sv/trafikledsverket/kontaktuppgifter/dataskyddspolicy",
"https://www.vayla.fi/tietosuoja",
]);
}

protected addDocumentElements() {
return [
this.paragraph(
`Väylävirasto aloittaa otsikon mukaisen ${this.projektiTyyppi}n laatimisen tarpeellisine tutkimuksineen. `
),
this.localizedParagraph([
`Väylävirasto aloittaa otsikon mukaisen ${this.projektiTyyppi}n laatimisen tarpeellisine tutkimuksineen. `,
`RUOTSIKSI Väylävirasto aloittaa otsikon mukaisen ${this.projektiTyyppi}n laatimisen tarpeellisine tutkimuksineen. `,
]),

this.hankkeenKuvaus(),

this.paragraph(this.aloitusKuulutusJulkaisu?.hankkeenKuvaus || ""),
this.localizedParagraph([
`Väylävirasto on julkaissut kuulutuksen suunnittelun aloittamisesta ja maastotutkimuksista. Asianosaisten katsotaan saaneen tiedon suunnittelun käynnistymisestä ja tutkimusoikeudesta seitsemäntenä päivänä kuulutuksen julkaisemisesta. (ratalaki 95 §, HL 62 a §) `,
`RUOTSIKSI Väylävirasto on julkaissut kuulutuksen suunnittelun aloittamisesta ja maastotutkimuksista. Asianosaisten katsotaan saaneen tiedon suunnittelun käynnistymisestä ja tutkimusoikeudesta seitsemäntenä päivänä kuulutuksen julkaisemisesta. (ratalaki 95 §, HL 62 a §) `,
]),

this.paragraph(
`Väylävirasto on julkaissut kuulutuksen suunnittelun aloittamisesta ja maastotutkimuksista. Asianosaisten katsotaan saaneen tiedon suunnittelun käynnistymisestä ja tutkimusoikeudesta seitsemäntenä päivänä kuulutuksen julkaisemisesta. (ratalaki 95 §, HL 62 a §) `
),
this.localizedParagraph([
"Rataverkon haltijalla on oikeus tehdä suunnittelualueeseen kuuluvalla kiinteistöllä suunnitteluun liittyviä mittauksia, maaperätutkimuksia ja muita valmistelevia toimenpiteitä (ratalaki 9 §). ",
"RUOTSIKSI Rataverkon haltijalla on oikeus tehdä suunnittelualueeseen kuuluvalla kiinteistöllä suunnitteluun liittyviä mittauksia, maaperätutkimuksia ja muita valmistelevia toimenpiteitä (ratalaki 9 §). ",
]),

this.paragraph(
"Rataverkon haltijalla on oikeus tehdä suunnittelualueeseen kuuluvalla kiinteistöllä suunnitteluun liittyviä mittauksia, maaperätutkimuksia ja muita valmistelevia toimenpiteitä (ratalaki 9 §). "
),
this.paragraph(
"Kiinteistön omistajilla ja muilla asianosaisilla sekä niillä, joiden asumiseen, työntekoon tai muihin oloihin suunnitelma saattaa vaikuttaa on oikeus olla tutkimuksissa saapuvilla ja lausua mielipiteensä asiassa (ratalaki 22 § ja 9 §). "
),
this.localizedParagraph([
"Kiinteistön omistajilla ja muilla asianosaisilla sekä niillä, joiden asumiseen, työntekoon tai muihin oloihin suunnitelma saattaa vaikuttaa on oikeus olla tutkimuksissa saapuvilla ja lausua mielipiteensä asiassa (ratalaki 22 § ja 9 §). ",
"RUOTSIKSI Kiinteistön omistajilla ja muilla asianosaisilla sekä niillä, joiden asumiseen, työntekoon tai muihin oloihin suunnitelma saattaa vaikuttaa on oikeus olla tutkimuksissa saapuvilla ja lausua mielipiteensä asiassa (ratalaki 22 § ja 9 §). ",
]),

this.paragraph(
"Suunnittelun edetessä tullaan myöhemmin erikseen ilmoitettavalla tavalla varaamaan tilaisuus mielipiteen ilmaisemiseen suunnitelmasta. Valmistuttuaan suunnitelma asetetaan yleisesti nähtäville, jolloin asianosaisilla on mahdollisuus tehdä kirjallinen muistutus suunnitelmasta. (ratalaki 22 §). "
),
this.localizedParagraph([
"Suunnittelun edetessä tullaan myöhemmin erikseen ilmoitettavalla tavalla varaamaan tilaisuus mielipiteen ilmaisemiseen suunnitelmasta. Valmistuttuaan suunnitelma asetetaan yleisesti nähtäville, jolloin asianosaisilla on mahdollisuus tehdä kirjallinen muistutus suunnitelmasta. (ratalaki 22 §). ",
"RUOTSIKSI Suunnittelun edetessä tullaan myöhemmin erikseen ilmoitettavalla tavalla varaamaan tilaisuus mielipiteen ilmaisemiseen suunnitelmasta. Valmistuttuaan suunnitelma asetetaan yleisesti nähtäville, jolloin asianosaisilla on mahdollisuus tehdä kirjallinen muistutus suunnitelmasta. (ratalaki 22 §). ",
]),

this.doc.struct("P", {}, [
() => {
this.doc.text(
`Väylävirasto käsittelee suunnitelmaan laatimiseen liittyen tarpeellisia henkilötietoja. Halutessasi tietää tarkemmin väyläsuunnittelun tietosuojakäytänteistä, tutustu verkkosivujen tietosuojaosioon osoitteessa `,
this.selectText([
`Väylävirasto käsittelee suunnitelmaan laatimiseen liittyen tarpeellisia henkilötietoja. Halutessasi tietää tarkemmin väyläsuunnittelun tietosuojakäytänteistä, tutustu verkkosivujen tietosuojaosioon osoitteessa `,
`RUOTSIKSI Väylävirasto käsittelee suunnitelmaan laatimiseen liittyen tarpeellisia henkilötietoja. Halutessasi tietää tarkemmin väyläsuunnittelun tietosuojakäytänteistä, tutustu verkkosivujen tietosuojaosioon osoitteessa `,
]),
{ continued: true }
);
},
Expand All @@ -51,7 +69,7 @@ export class AloitusKuulutus10R extends SuunnittelunAloitusPdf {
this.doc.fillColor("black").text(".", { link: undefined, underline: false }).moveDown();
},
]),
this.paragraph("Lisätietoja antavat "),
this.lisatietojaAntavatParagraph(),
this.doc.struct("P", {}, this.moreInfoElements),
];
}
Expand Down
Loading

0 comments on commit 105405f

Please sign in to comment.