Skip to content
This repository has been archived by the owner on Feb 7, 2024. It is now read-only.

Commit

Permalink
AE-2015: Add all owner names to käskypäätös / kuulemiskirje document
Browse files Browse the repository at this point in the history
- In preview endpoint handlers add valvonta-id to toimenpide map so that the preview data structure is consistent with the creation endpoints
  • Loading branch information
Juholei committed Nov 21, 2023
1 parent bd42747 commit 4836adf
Show file tree
Hide file tree
Showing 6 changed files with 1,062 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
:parameters :keys [db whoami]}]
(api-response/pdf-response
(valvonta-service/preview-henkilo-toimenpide
db whoami id body henkilo-id)
db whoami id (assoc body :valvonta-id id) henkilo-id)
(valvonta-service/toimenpide-filename body)
(api-response/msg-404 "henkilo" id henkilo-id)))}}]
["/yritykset/:yritys-id/preview"
Expand All @@ -63,7 +63,7 @@
:parameters :keys [db whoami]}]
(api-response/pdf-response
(valvonta-service/preview-yritys-toimenpide
db whoami id body yritys-id)
db whoami id (assoc body :valvonta-id id) yritys-id)
(valvonta-service/toimenpide-filename body)
(api-response/msg-404 "yritys" id yritys-id)))}}]
["/:toimenpide-id"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
(ns solita.etp.service.valvonta-kaytto.toimenpide-type-specific-data
(:require [solita.etp.db :as db]
(:require [clojure.string :as string]
[solita.etp.db :as db]
[solita.etp.exception :as exception]
[solita.etp.service.valvonta-kaytto.osapuoli :as osapuoli]
[solita.etp.service.valvonta-kaytto.toimenpide :as toimenpide]))

(db/require-queries 'hallinto-oikeus)
(db/require-queries 'karajaoikeus)
(db/require-queries 'valvonta-kaytto)

(defmulti format-type-specific-data
(fn [_db toimenpide _osapuoli] (-> toimenpide :type-id toimenpide/type-key)))
Expand Down Expand Up @@ -98,5 +101,18 @@
(defmethod format-type-specific-data :penalty-decision-notice-bailiff [db toimenpide osapuoli]
(format-notice-bailiff db toimenpide osapuoli))

(defmethod format-type-specific-data :decision-order-hearing-letter [db toimenpide _osapuoli]
(let [henkilo-osapuolet (valvonta-kaytto-db/select-henkilot db {:valvonta-id (:valvonta-id toimenpide)})
yritys-osapuolet (valvonta-kaytto-db/select-yritykset db {:valvonta-id (:valvonta-id toimenpide)})
omistajat (filter osapuoli/omistaja? (concat henkilo-osapuolet yritys-osapuolet))
omistaja-strings (map (fn [omistaja]
(if (osapuoli/henkilo? omistaja)
(str (:sukunimi omistaja) " " (:etunimi omistaja))
(:nimi omistaja)))
omistajat)]
(println "format-type-specific-data" (keys toimenpide))
{:fine (-> toimenpide :type-specific-data :fine)
:omistajat (string/join ", " omistaja-strings)}))

(defmethod format-type-specific-data :default [_ toimenpide _]
(:type-specific-data toimenpide))
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
(ns solita.etp.valvonta-kaytto.kaskypaatos-kuulemiskirje-test
(:require
[clojure.java.io :as io]
[clojure.java.jdbc :as jdbc]
[clojure.test :as t]
[ring.mock.request :as mock]
Expand All @@ -13,6 +14,8 @@

(t/use-fixtures :each ts/fixture)

(def original-html->pdf pdf/html->pdf)

(t/deftest kaskypaatos-kuulemiskirje-test
;; Add the main user for the following tests
(test-kayttajat/insert-virtu-paakayttaja!
Expand Down Expand Up @@ -85,6 +88,100 @@
(t/is (true? @html->pdf-called?))
(t/is (= (:status response) 201))))))

(t/testing "Käskypäätös / Kuulemiskirje toimenpide is created successfully for two yksityishenkilö owners and both are mentioned in each document"
;; Add the valvonta and previous toimenpides
;; so that käskypäätös / kuulemiskirje toimenpide can be created
(let [valvonta-id (valvonta-service/add-valvonta! ts/*db* {:katuosoite "Testitie 5"
:postinumero "90100"
:ilmoituspaikka-id 0})
kehotus-timestamp (-> (LocalDate/of 2023 6 12)
(.atStartOfDay (ZoneId/systemDefault))
.toInstant)
varoitus-timestamp (-> (LocalDate/of 2023 7 13)
(.atStartOfDay (ZoneId/systemDefault))
.toInstant)
html->pdf-called? (atom 0)]

;; Add osapuoli to the valvonta
(valvonta-service/add-henkilo! ts/*db*
valvonta-id
{:toimitustapa-description nil
:toimitustapa-id 0
:email nil
:rooli-id 0
:jakeluosoite "Testikatu 12"
:postitoimipaikka "Helsinki"
:puhelin nil
:sukunimi "Talonomistaja"
:postinumero "00100"
:henkilotunnus "000000-0000"
:rooli-description ""
:etunimi "Testi"
:vastaanottajan-tarkenne nil
:maa "FI"})

;; Add second owner, both need to be mentioned in the document(s)
(valvonta-service/add-henkilo! ts/*db*
valvonta-id
{:toimitustapa-description nil
:toimitustapa-id 0
:email nil
:rooli-id 0
:jakeluosoite "Testikatu 12"
:postitoimipaikka "Helsinki"
:puhelin nil
:sukunimi "Talonomistaja"
:postinumero "00100"
:henkilotunnus "000000-0000"
:rooli-description ""
:etunimi "Tessa"
:vastaanottajan-tarkenne nil
:maa "FI"})

;; Add kehotus-toimenpide to the valvonta
(jdbc/insert! ts/*db* :vk_toimenpide {:valvonta_id valvonta-id
:type_id 2
:create_time kehotus-timestamp
:publish_time kehotus-timestamp
:deadline_date (LocalDate/of 2023 7 12)})
;; Add varoitus-toimenpide to the valvonta
(jdbc/insert! ts/*db* :vk_toimenpide {:valvonta_id valvonta-id
:type_id 3
:create_time varoitus-timestamp
:publish_time varoitus-timestamp
:deadline_date (LocalDate/of 2023 8 13)})

;; Mock the current time to ensure that the document has a fixed date
(with-bindings {#'time/clock (Clock/fixed (-> (LocalDate/of 2023 6 26)
(.atStartOfDay time/timezone)
.toInstant)
time/timezone)
#'pdf/html->pdf (fn [html-doc output-stream]
(when (= 0 @html->pdf-called?)
(t/is
(= html-doc
(slurp
(io/resource "documents/kaskypaatoskuulemiskirje-yksityishenkilo-two-owners-1.html")))))

(when (= 1 @html->pdf-called?)
(t/is
(= html-doc
(slurp
(io/resource "documents/kaskypaatoskuulemiskirje-yksityishenkilo-two-owners-2.html")))))
(swap! html->pdf-called? inc)
(original-html->pdf html-doc output-stream))}
(let [new-toimenpide {:type-id 7
:deadline-date (str (LocalDate/of 2023 7 22))
:template-id 5
:description "Lähetetään kuulemiskirje, kun myyjä ei ole hankkinut energiatodistusta eikä vastannut kehotukseen tai varoitukseen"
:type-specific-data {:fine 800}}
response (ts/handler (-> (mock/request :post (format "/api/private/valvonta/kaytto/%s/toimenpiteet" valvonta-id))
(mock/json-body new-toimenpide)
(test-kayttajat/with-virtu-user)
(mock/header "Accept" "application/json")))]
(t/is (= 2 @html->pdf-called?) "Two documents are created")
(t/is (= (:status response) 201))))))

(t/testing "Käskypäätös / Kuulemiskirje toimenpide is created successfully for yritys and document is generated with correct information"
;; Add the valvonta and previous toimenpides
;; so that käskypäätös / kuulemiskirje toimenpide can be created
Expand Down
Loading

0 comments on commit 4836adf

Please sign in to comment.