From bcc1a408dd7611488b3c5ce212be538a8beb08a8 Mon Sep 17 00:00:00 2001 From: aaschlote Date: Thu, 9 Jan 2025 16:03:19 +0100 Subject: [PATCH 1/5] refactor(getConnectionDetails): add table info for annullierung --- .../__test__/getConnectionDetails.test.ts | 361 ++++++++++++++---- .../table/getConnectionDetails.ts | 108 +++++- 2 files changed, 401 insertions(+), 68 deletions(-) diff --git a/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/__test__/getConnectionDetails.test.ts b/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/__test__/getConnectionDetails.test.ts index 55c34e9e6..7061a8ff4 100644 --- a/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/__test__/getConnectionDetails.test.ts +++ b/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/__test__/getConnectionDetails.test.ts @@ -1,88 +1,315 @@ import type { FluggastrechtContext } from "~/domains/fluggastrechte/formular/context"; import { + EARLIER_STARTED, getConnectionDetails, + LATER_ARRIVED, + LESS_THAN, + MORE_THAN, + NO_OFFER_REPLACEMENT_RECEIVED_TEXT, NOT_MEASURE_DID_NOT_ARRIVE_TEXT, + OFFERED_REPLACEMENT_FLIGHT, } from "../getConnectionDetails"; describe("getConnectionDetails", () => { - it("should return actual flight details when 'tatsaechlicherFlug' is 'yes'", () => { - const userData: FluggastrechtContext = { - tatsaechlicherFlug: "yes", - direktAnkunftsDatum: "10.11.2024", - direktAnkunftsZeit: "12:00", - tatsaechlicherAnkunftsDatum: "10.11.2024", - tatsaechlicherAnkunftsZeit: "15:30", - }; - const result = getConnectionDetails(userData); - expect(result).toEqual({ - info: "3 Stunden\n30 Minuten ", - timeTable: ["--", "--", "10.11.2024, 15:30"], + describe("verspaetet", () => { + it("should return actual flight details when 'tatsaechlicherFlug' is 'yes'", () => { + const userData: FluggastrechtContext = { + bereich: "verspaetet", + tatsaechlicherFlug: "yes", + direktAnkunftsDatum: "10.11.2024", + direktAnkunftsZeit: "12:00", + tatsaechlicherAnkunftsDatum: "10.11.2024", + tatsaechlicherAnkunftsZeit: "15:30", + }; + const result = getConnectionDetails(userData); + expect(result).toEqual({ + info: "3 Stunden\n30 Minuten ", + timeTable: ["--", "--", "10.11.2024, 15:30"], + }); }); - }); - it("should return flight replacement details when 'ersatzverbindungArt' is 'flug'", () => { - const userData: FluggastrechtContext = { - ersatzverbindungArt: "flug", - direktAnkunftsDatum: "10.11.2024", - direktAnkunftsZeit: "12:00", - ersatzFlugAnkunftsDatum: "10.11.2024", - ersatzFlugAnkunftsZeit: "15:30", - ersatzFlugnummer: "AB123", - }; - const result = getConnectionDetails(userData); - expect(result).toEqual({ - info: "3 Stunden\n30 Minuten ", - timeTable: ["AB123", "--", "10.11.2024, 15:30"], + it("should return flight replacement details when 'ersatzverbindungArt' is 'flug'", () => { + const userData: FluggastrechtContext = { + bereich: "verspaetet", + ersatzverbindungArt: "flug", + direktAnkunftsDatum: "10.11.2024", + direktAnkunftsZeit: "12:00", + ersatzFlugAnkunftsDatum: "10.11.2024", + ersatzFlugAnkunftsZeit: "15:30", + ersatzFlugnummer: "AB123", + }; + const result = getConnectionDetails(userData); + expect(result).toEqual({ + info: "3 Stunden\n30 Minuten ", + timeTable: ["AB123", "--", "10.11.2024, 15:30"], + }); }); - }); - it("should return alternative transportation details when 'ersatzverbindungArt' is 'etwasAnderes'", () => { - const userData: FluggastrechtContext = { - ersatzverbindungArt: "etwasAnderes", - direktAnkunftsDatum: "10.11.2024", - direktAnkunftsZeit: "12:00", - andereErsatzverbindungAnkunftsDatum: "10.11.2024", - andereErsatzverbindungAnkunftsZeit: "14:30", - }; - const result = getConnectionDetails(userData); - expect(result).toEqual({ - info: "2 Stunden\n30 Minuten ", - timeTable: ["--", "--", "10.11.2024, 14:30"], + it("should return alternative transportation details when 'ersatzverbindungArt' is 'etwasAnderes'", () => { + const userData: FluggastrechtContext = { + bereich: "verspaetet", + ersatzverbindungArt: "etwasAnderes", + direktAnkunftsDatum: "10.11.2024", + direktAnkunftsZeit: "12:00", + andereErsatzverbindungAnkunftsDatum: "10.11.2024", + andereErsatzverbindungAnkunftsZeit: "14:30", + }; + const result = getConnectionDetails(userData); + expect(result).toEqual({ + info: "2 Stunden\n30 Minuten ", + timeTable: ["--", "--", "10.11.2024, 14:30"], + }); }); - }); - it("should return not measure and did not arrive text for 'keineAnkunft' ersatzverbindungArt", () => { - const userData: FluggastrechtContext = { - ersatzverbindungArt: "keineAnkunft", - }; - const result = getConnectionDetails(userData); - expect(result).toEqual({ - info: NOT_MEASURE_DID_NOT_ARRIVE_TEXT, - timeTable: ["--", "--", "--"], + it("should return not measure and did not arrive text for 'keineAnkunft' ersatzverbindungArt", () => { + const userData: FluggastrechtContext = { + ersatzverbindungArt: "keineAnkunft", + bereich: "verspaetet", + }; + const result = getConnectionDetails(userData); + expect(result).toEqual({ + info: NOT_MEASURE_DID_NOT_ARRIVE_TEXT, + timeTable: ["--", "--", "--"], + }); }); - }); - it("should return error if no valid ersatzverbindungArt or tatsaechlicherFlug is provided", () => { - const userData: FluggastrechtContext = {}; - const result = getConnectionDetails(userData); - expect(result).toEqual({ - info: "error", - timeTable: ["error", "error", "error"], + it("should return error if no valid ersatzverbindungArt or tatsaechlicherFlug is provided", () => { + const userData: FluggastrechtContext = { bereich: "verspaetet" }; + const result = getConnectionDetails(userData); + expect(result).toEqual({ + info: "error", + timeTable: ["error", "error", "error"], + }); + }); + + it("should handle missing or invalid dates", () => { + const userData: FluggastrechtContext = { + bereich: "verspaetet", + tatsaechlicherFlug: "yes", + direktAnkunftsDatum: "10.11.2024", + direktAnkunftsZeit: "15:00", + tatsaechlicherAnkunftsDatum: "10.11.2024", + tatsaechlicherAnkunftsZeit: "12:00", // end time before start time + }; + const result = getConnectionDetails(userData); + expect(result).toEqual({ + info: "", + timeTable: ["--", "--", "10.11.2024, 12:00"], + }); }); }); - it("should handle missing or invalid dates", () => { - const userData: FluggastrechtContext = { - tatsaechlicherFlug: "yes", - direktAnkunftsDatum: "10.11.2024", - direktAnkunftsZeit: "15:00", - tatsaechlicherAnkunftsDatum: "10.11.2024", - tatsaechlicherAnkunftsZeit: "12:00", // end time before start time - }; - const result = getConnectionDetails(userData); - expect(result).toEqual({ - info: "", - timeTable: ["--", "--", "10.11.2024, 12:00"], + describe("annullierung", () => { + describe("ankuendigung no", () => { + it("should return the text of no offer replacement received given ersatzflug no", () => { + const userData: FluggastrechtContext = { + bereich: "annullierung", + ankuendigung: "no", + ersatzflug: "no", + }; + const result = getConnectionDetails(userData); + + expect(result).toEqual({ + info: `Gar nicht vor Abflug mitgeteilt.\n${NO_OFFER_REPLACEMENT_RECEIVED_TEXT}`, + timeTable: ["--", "--", "--"], + }); + }); + + it("should return the correct given yes for ersatzflugStartenEinStunde and ersatzflugLandenZweiStunden", () => { + const userData: FluggastrechtContext = { + bereich: "annullierung", + ankuendigung: "no", + ersatzflug: "yes", + ersatzflugStartenEinStunde: "yes", + ersatzflugLandenZweiStunden: "yes", + }; + const result = getConnectionDetails(userData); + + expect(result).toEqual({ + info: `Gar nicht vor Abflug mitgeteilt.\n${OFFERED_REPLACEMENT_FLIGHT} ${MORE_THAN} 1 Stunde ${EARLIER_STARTED} und ${MORE_THAN} 2 Stunden ${LATER_ARRIVED}`, + timeTable: ["--", "--", "--"], + }); + }); + + it("should return the correct given no for ersatzflugStartenEinStunde and ersatzflugLandenZweiStunden", () => { + const userData: FluggastrechtContext = { + bereich: "annullierung", + ankuendigung: "no", + ersatzflug: "yes", + ersatzflugStartenEinStunde: "no", + ersatzflugLandenZweiStunden: "no", + }; + const result = getConnectionDetails(userData); + + expect(result).toEqual({ + info: `Gar nicht vor Abflug mitgeteilt.\n${OFFERED_REPLACEMENT_FLIGHT} ${LESS_THAN} 1 Stunde ${EARLIER_STARTED} und ${LESS_THAN} 2 Stunden ${LATER_ARRIVED}`, + timeTable: ["--", "--", "--"], + }); + }); + + it("should return the correct given yes for ersatzflugStartenEinStunde and no ersatzflugLandenZweiStunden", () => { + const userData: FluggastrechtContext = { + bereich: "annullierung", + ankuendigung: "no", + ersatzflug: "yes", + ersatzflugStartenEinStunde: "yes", + ersatzflugLandenZweiStunden: "no", + }; + const result = getConnectionDetails(userData); + + expect(result).toEqual({ + info: `Gar nicht vor Abflug mitgeteilt.\n${OFFERED_REPLACEMENT_FLIGHT} ${MORE_THAN} 1 Stunde ${EARLIER_STARTED} und ${LESS_THAN} 2 Stunden ${LATER_ARRIVED}`, + timeTable: ["--", "--", "--"], + }); + }); + + it("should return the correct given no for ersatzflugStartenEinStunde and yes ersatzflugLandenZweiStunden", () => { + const userData: FluggastrechtContext = { + bereich: "annullierung", + ankuendigung: "no", + ersatzflug: "yes", + ersatzflugStartenEinStunde: "no", + ersatzflugLandenZweiStunden: "yes", + }; + const result = getConnectionDetails(userData); + + expect(result).toEqual({ + info: `Gar nicht vor Abflug mitgeteilt.\n${OFFERED_REPLACEMENT_FLIGHT} ${LESS_THAN} 1 Stunde ${EARLIER_STARTED} und ${MORE_THAN} 2 Stunden ${LATER_ARRIVED}`, + timeTable: ["--", "--", "--"], + }); + }); + }); + + describe("ankuendigung until6Days", () => { + it("should return the correct given yes for ersatzflugStartenEinStunde and ersatzflugLandenZweiStunden", () => { + const userData: FluggastrechtContext = { + bereich: "annullierung", + ankuendigung: "until6Days", + ersatzflug: "yes", + ersatzflugStartenEinStunde: "yes", + ersatzflugLandenZweiStunden: "yes", + }; + const result = getConnectionDetails(userData); + + expect(result).toEqual({ + info: `0 bis 6 Tage vor Abflug mitgeteilt.\n${OFFERED_REPLACEMENT_FLIGHT} ${MORE_THAN} 1 Stunde ${EARLIER_STARTED} und ${MORE_THAN} 2 Stunden ${LATER_ARRIVED}`, + timeTable: ["--", "--", "--"], + }); + }); + + it("should return the correct given no for ersatzflugStartenEinStunde and ersatzflugLandenZweiStunden", () => { + const userData: FluggastrechtContext = { + bereich: "annullierung", + ankuendigung: "until6Days", + ersatzflug: "yes", + ersatzflugStartenEinStunde: "no", + ersatzflugLandenZweiStunden: "no", + }; + const result = getConnectionDetails(userData); + + expect(result).toEqual({ + info: `0 bis 6 Tage vor Abflug mitgeteilt.\n${OFFERED_REPLACEMENT_FLIGHT} ${LESS_THAN} 1 Stunde ${EARLIER_STARTED} und ${LESS_THAN} 2 Stunden ${LATER_ARRIVED}`, + timeTable: ["--", "--", "--"], + }); + }); + + it("should return the correct given yes for ersatzflugStartenEinStunde and no ersatzflugLandenZweiStunden", () => { + const userData: FluggastrechtContext = { + bereich: "annullierung", + ankuendigung: "until6Days", + ersatzflug: "yes", + ersatzflugStartenEinStunde: "yes", + ersatzflugLandenZweiStunden: "no", + }; + const result = getConnectionDetails(userData); + + expect(result).toEqual({ + info: `0 bis 6 Tage vor Abflug mitgeteilt.\n${OFFERED_REPLACEMENT_FLIGHT} ${MORE_THAN} 1 Stunde ${EARLIER_STARTED} und ${LESS_THAN} 2 Stunden ${LATER_ARRIVED}`, + timeTable: ["--", "--", "--"], + }); + }); + + it("should return the correct given no for ersatzflugStartenEinStunde and yes ersatzflugLandenZweiStunden", () => { + const userData: FluggastrechtContext = { + bereich: "annullierung", + ankuendigung: "until6Days", + ersatzflug: "yes", + ersatzflugStartenEinStunde: "no", + ersatzflugLandenZweiStunden: "yes", + }; + const result = getConnectionDetails(userData); + + expect(result).toEqual({ + info: `0 bis 6 Tage vor Abflug mitgeteilt.\n${OFFERED_REPLACEMENT_FLIGHT} ${LESS_THAN} 1 Stunde ${EARLIER_STARTED} und ${MORE_THAN} 2 Stunden ${LATER_ARRIVED}`, + timeTable: ["--", "--", "--"], + }); + }); + }); + + describe("ankuendigung between7And13Days", () => { + it("should return the correct given yes for ersatzflugStartenZweiStunden and ersatzflugLandenVierStunden", () => { + const userData: FluggastrechtContext = { + bereich: "annullierung", + ankuendigung: "between7And13Days", + ersatzflug: "yes", + ersatzflugStartenZweiStunden: "yes", + ersatzflugLandenVierStunden: "yes", + }; + const result = getConnectionDetails(userData); + + expect(result).toEqual({ + info: `7-13 Tage vor Abflug mitgeteilt.\n${OFFERED_REPLACEMENT_FLIGHT} ${MORE_THAN} 2 Stunden ${EARLIER_STARTED} und ${MORE_THAN} 4 Stunden ${LATER_ARRIVED}`, + timeTable: ["--", "--", "--"], + }); + }); + + it("should return the correct given no for ersatzflugStartenZweiStunden and ersatzflugLandenVierStunden", () => { + const userData: FluggastrechtContext = { + bereich: "annullierung", + ankuendigung: "between7And13Days", + ersatzflug: "yes", + ersatzflugStartenZweiStunden: "no", + ersatzflugLandenVierStunden: "no", + }; + const result = getConnectionDetails(userData); + + expect(result).toEqual({ + info: `7-13 Tage vor Abflug mitgeteilt.\n${OFFERED_REPLACEMENT_FLIGHT} ${LESS_THAN} 2 Stunden ${EARLIER_STARTED} und ${LESS_THAN} 4 Stunden ${LATER_ARRIVED}`, + timeTable: ["--", "--", "--"], + }); + }); + + it("should return the correct given yes for ersatzflugStartenZweiStunden and no ersatzflugLandenVierStunden", () => { + const userData: FluggastrechtContext = { + bereich: "annullierung", + ankuendigung: "between7And13Days", + ersatzflug: "yes", + ersatzflugStartenZweiStunden: "yes", + ersatzflugLandenVierStunden: "no", + }; + const result = getConnectionDetails(userData); + + expect(result).toEqual({ + info: `7-13 Tage vor Abflug mitgeteilt.\n${OFFERED_REPLACEMENT_FLIGHT} ${MORE_THAN} 2 Stunden ${EARLIER_STARTED} und ${LESS_THAN} 4 Stunden ${LATER_ARRIVED}`, + timeTable: ["--", "--", "--"], + }); + }); + + it("should return the correct given no for ersatzflugStartenZweiStunden and yes ersatzflugLandenVierStunden", () => { + const userData: FluggastrechtContext = { + bereich: "annullierung", + ankuendigung: "between7And13Days", + ersatzflug: "yes", + ersatzflugStartenZweiStunden: "no", + ersatzflugLandenVierStunden: "yes", + }; + const result = getConnectionDetails(userData); + + expect(result).toEqual({ + info: `7-13 Tage vor Abflug mitgeteilt.\n${OFFERED_REPLACEMENT_FLIGHT} ${LESS_THAN} 2 Stunden ${EARLIER_STARTED} und ${MORE_THAN} 4 Stunden ${LATER_ARRIVED}`, + timeTable: ["--", "--", "--"], + }); + }); }); }); }); diff --git a/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/getConnectionDetails.ts b/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/getConnectionDetails.ts index e98e4e8a5..353db5de5 100644 --- a/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/getConnectionDetails.ts +++ b/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/getConnectionDetails.ts @@ -1,10 +1,106 @@ import type { FluggastrechtContext } from "~/domains/fluggastrechte/formular/context"; +import type { FluggastrechtAnkuendigungType } from "~/domains/fluggastrechte/vorabcheck/context"; import { calculateDuration } from "./calculateDuration"; +const announcementMapping = { + no: "Gar nicht vor Abflug mitgeteilt.", + until6Days: "0 bis 6 Tage vor Abflug mitgeteilt.", + between7And13Days: "7-13 Tage vor Abflug mitgeteilt.", + moreThan13Days: "", +}; + +type ConnectionDetailsType = { + info: string; + timeTable: string[]; +}; + export const NOT_MEASURE_DID_NOT_ARRIVE_TEXT = "Nicht messbar, weil gar nicht angekommen."; -export function getConnectionDetails(userData: FluggastrechtContext) { +export const OFFERED_REPLACEMENT_FLIGHT = "Angebot der Ersatzverbindung ist"; +export const MORE_THAN = "mehr als"; +export const LESS_THAN = "weniger als"; +export const LATER_ARRIVED = "später angekommen."; +export const EARLIER_STARTED = "früher gestartet"; +export const NO_OFFER_REPLACEMENT_RECEIVED_TEXT = + "Kein Angebot einer Ersatzverbindung erhalten."; + +const getReplacementFlightLandedDescription = ( + userData: FluggastrechtContext, +): string => { + const { + ersatzflugLandenZweiStunden, + ersatzflugLandenVierStunden, + ankuendigung, + } = userData; + + if (ankuendigung === "between7And13Days") { + return ersatzflugLandenVierStunden === "yes" + ? `${MORE_THAN} 4 Stunden ${LATER_ARRIVED}` + : `${LESS_THAN} 4 Stunden ${LATER_ARRIVED}`; + } + + return ersatzflugLandenZweiStunden === "yes" + ? `${MORE_THAN} 2 Stunden ${LATER_ARRIVED}` + : `${LESS_THAN} 2 Stunden ${LATER_ARRIVED}`; +}; + +const getReplacementFlightDepartureDescription = ( + userData: FluggastrechtContext, +): string => { + const { + ersatzflugStartenEinStunde, + ersatzflugStartenZweiStunden, + ankuendigung, + } = userData; + + if (ankuendigung === "between7And13Days") { + return ersatzflugStartenZweiStunden === "yes" + ? `${MORE_THAN} 2 Stunden ${EARLIER_STARTED}` + : `${LESS_THAN} 2 Stunden ${EARLIER_STARTED}`; + } + + return ersatzflugStartenEinStunde === "yes" + ? `${MORE_THAN} 1 Stunde ${EARLIER_STARTED}` + : `${LESS_THAN} 1 Stunde ${EARLIER_STARTED}`; +}; + +const getReplacementFlightDescription = ( + userData: FluggastrechtContext, +): string => { + const { ersatzflug } = userData; + + if (ersatzflug === "no") { + return NO_OFFER_REPLACEMENT_RECEIVED_TEXT; + } + + const replacementDeparture = + getReplacementFlightDepartureDescription(userData); + const replacementLanded = getReplacementFlightLandedDescription(userData); + + return `${OFFERED_REPLACEMENT_FLIGHT} ${replacementDeparture} und ${replacementLanded}`; +}; + +const getConnectionDetailsCancel = ( + userData: FluggastrechtContext, +): ConnectionDetailsType => { + const { ankuendigung } = userData; + + const announcementDescription = + announcementMapping[(ankuendigung as FluggastrechtAnkuendigungType) ?? ""]; + + const replacementFlightDescription = + getReplacementFlightDescription(userData); + + return { + info: `${announcementDescription}\n${replacementFlightDescription}`, + timeTable: ["--", "--", "--"], // to be added in following tickets + }; +}; + +function getConnectionDetailsDelayOrNotMoved( + userData: FluggastrechtContext, +): ConnectionDetailsType { const { tatsaechlicherFlug, ersatzverbindungArt, @@ -71,3 +167,13 @@ export function getConnectionDetails(userData: FluggastrechtContext) { return { info: "error", timeTable: ["error", "error", "error"] }; } } + +export function getConnectionDetails(userData: FluggastrechtContext) { + const { bereich } = userData; + + if (bereich === "annullierung") { + return getConnectionDetailsCancel(userData); + } + + return getConnectionDetailsDelayOrNotMoved(userData); +} From fe88393994bb0408e09488225424bb622f21de56 Mon Sep 17 00:00:00 2001 From: aaschlote Date: Thu, 9 Jan 2025 16:03:57 +0100 Subject: [PATCH 2/5] fix: space on the Annullierung cell info --- .../services/pdf/sections/reason/factsOfCases/table/drawCell.ts | 2 +- .../reason/factsOfCases/table/drawTableColumnsValues.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/drawCell.ts b/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/drawCell.ts index 43c2372be..d144eb867 100644 --- a/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/drawCell.ts +++ b/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/drawCell.ts @@ -61,12 +61,12 @@ export function drawCell( if (regularText.length > 0) { const extraMarginSpace = boldText.length > 0 ? -8 : marginY + 4; + doc.fontSize(regularTextFontSize); const textToAlignVertically = (height - doc.heightOfString(regularText, options) - extraMarginSpace) / 2; doc - .fontSize(regularTextFontSize) .font(FONTS_BUNDESSANS_REGULAR) .text(regularText, textX, textY + textToAlignVertically, options); } diff --git a/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/drawTableColumnsValues.ts b/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/drawTableColumnsValues.ts index 4e53cb3e6..a04442c5b 100644 --- a/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/drawTableColumnsValues.ts +++ b/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/drawTableColumnsValues.ts @@ -63,7 +63,7 @@ export function drawTableColumnsValues( regularText: info, shouldAddSilverBackground: false, textAlign: "center", - regularTextFontSize: 10, + regularTextFontSize: 9, }); }), ); From 1d9e5c2239f9ed2731c7e9cb3015b9ff83603845 Mon Sep 17 00:00:00 2001 From: aaschlote Date: Thu, 9 Jan 2025 16:04:22 +0100 Subject: [PATCH 3/5] refactor: add and export new type --- app/domains/fluggastrechte/vorabcheck/context.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/app/domains/fluggastrechte/vorabcheck/context.ts b/app/domains/fluggastrechte/vorabcheck/context.ts index e1fdbc4ee..f78c0a42c 100644 --- a/app/domains/fluggastrechte/vorabcheck/context.ts +++ b/app/domains/fluggastrechte/vorabcheck/context.ts @@ -46,3 +46,4 @@ export const fluggastrechteVorabcheckContext = { const _contextObject = z.object(fluggastrechteVorabcheckContext).partial(); export type FluggastrechtVorabcheckContext = z.infer; export type FluggastrechtBereichType = z.infer; +export type FluggastrechtAnkuendigungType = z.infer; From 7d92abd559d1f9a587b1978ee5ecaa0ce6165383 Mon Sep 17 00:00:00 2001 From: aaschlote Date: Fri, 10 Jan 2025 16:42:18 +0100 Subject: [PATCH 4/5] refactor(getConnectionDetails): rename subfunction --- .../reason/factsOfCases/table/getConnectionDetails.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/getConnectionDetails.ts b/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/getConnectionDetails.ts index 353db5de5..9aa7f1746 100644 --- a/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/getConnectionDetails.ts +++ b/app/domains/fluggastrechte/services/pdf/sections/reason/factsOfCases/table/getConnectionDetails.ts @@ -98,7 +98,7 @@ const getConnectionDetailsCancel = ( }; }; -function getConnectionDetailsDelayOrNotMoved( +function getConnectionDetailsDelayOrNoBoarding( userData: FluggastrechtContext, ): ConnectionDetailsType { const { @@ -175,5 +175,5 @@ export function getConnectionDetails(userData: FluggastrechtContext) { return getConnectionDetailsCancel(userData); } - return getConnectionDetailsDelayOrNotMoved(userData); + return getConnectionDetailsDelayOrNoBoarding(userData); } From 694e34e87b78b4c946b9408b9a594f31d795c656 Mon Sep 17 00:00:00 2001 From: aaschlote Date: Fri, 10 Jan 2025 18:35:30 +0100 Subject: [PATCH 5/5] fix(createLocalCourtAndDate): align position to the court text and date --- .../firstPage/__test__/createLocalCourtAndDate.test.ts | 2 ++ .../pdf/sections/firstPage/createLocalCourtAndDate.ts | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/domains/fluggastrechte/services/pdf/sections/firstPage/__test__/createLocalCourtAndDate.test.ts b/app/domains/fluggastrechte/services/pdf/sections/firstPage/__test__/createLocalCourtAndDate.test.ts index 5332fabab..e35c1ccb9 100644 --- a/app/domains/fluggastrechte/services/pdf/sections/firstPage/__test__/createLocalCourtAndDate.test.ts +++ b/app/domains/fluggastrechte/services/pdf/sections/firstPage/__test__/createLocalCourtAndDate.test.ts @@ -57,6 +57,7 @@ describe("createLocalCourtAndDate", () => { ); expect(mockDoc.text).toHaveBeenCalledWith(TO_THE_COURT_TEXT, { align: "left", + continued: true, }); expect(mockDoc.text).toHaveBeenCalledWith(amtsgericht.BEZEICHNUNG, { @@ -80,6 +81,7 @@ describe("createLocalCourtAndDate", () => { expect(mockDoc.text).toHaveBeenCalledWith(TO_THE_COURT_TEXT, { align: "left", + continued: true, }); expect(mockDoc.text).toHaveBeenCalledWith("", { align: "left", diff --git a/app/domains/fluggastrechte/services/pdf/sections/firstPage/createLocalCourtAndDate.ts b/app/domains/fluggastrechte/services/pdf/sections/firstPage/createLocalCourtAndDate.ts index f57a1fdd9..aa4b719bd 100644 --- a/app/domains/fluggastrechte/services/pdf/sections/firstPage/createLocalCourtAndDate.ts +++ b/app/domains/fluggastrechte/services/pdf/sections/firstPage/createLocalCourtAndDate.ts @@ -21,17 +21,19 @@ export const createLocalCourtAndDate = ( const localCourtHeaderSect = doc.struct("Sect"); localCourtHeaderSect.add( doc.struct("P", {}, () => { - doc.fontSize(10).font(FONTS_BUNDESSANS_REGULAR).text(creationDate, { - align: "right", - }); doc .fontSize(10) .font(FONTS_BUNDESSANS_BOLD) - .text(TO_THE_COURT_TEXT, { align: "left" }); + .text(TO_THE_COURT_TEXT, { align: "left", continued: true }); + + doc.font(FONTS_BUNDESSANS_REGULAR).text(creationDate, { + align: "right", + }); doc .font(FONTS_BUNDESSANS_REGULAR) .text(amtsgericht?.BEZEICHNUNG ?? "", { align: "left" }); + doc.text(amtsgericht?.STR_HNR ?? "", { align: "left" }); doc.text(`${amtsgericht?.PLZ_ZUSTELLBEZIRK ?? ""} ${amtsgericht?.ORT}`, { align: "left",