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

Feature/ae 2029 #1044

Merged
merged 3 commits into from
Nov 21, 2023
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
45 changes: 27 additions & 18 deletions etp-backend/src/main/clj/solita/etp/schema/valvonta_kaytto.clj
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,20 @@

(def KarajaoikeusId (apply schema/enum (range 0 20)))

(def henkilo "henkilo")
(def yritys "yritys")

(def OsapuoliType (schema/enum henkilo yritys))

(def OsapuoliSpecificDataOsapuoli
{:id common-schema/Key
:type OsapuoliType})

(def KaskypaatosVarsinainenPaatosOsapuoliSpecificData
(schema/conditional
;; Osapuoli has a document and has answered to kuulemiskirje, so all fields are required
(every-pred toimenpide/osapuoli-has-document? toimenpide/recipient-answered?)
{:osapuoli-id common-schema/Key
{:osapuoli OsapuoliSpecificDataOsapuoli
:hallinto-oikeus-id HallintoOikeusId
:document schema/Bool
:recipient-answered schema/Bool
Expand All @@ -63,15 +72,15 @@

;; Osapuoli has document but has not answered to kuulemiskirje, so answer and statement are not allowed
toimenpide/osapuoli-has-document?
{:osapuoli-id common-schema/Key
{:osapuoli OsapuoliSpecificDataOsapuoli
:hallinto-oikeus-id HallintoOikeusId
:document schema/Bool
:recipient-answered schema/Bool}

;; Osapuoli has no document so no other fields are allowed
:else
{:osapuoli-id common-schema/Key
:document schema/Bool}))
{:osapuoli OsapuoliSpecificDataOsapuoli
:document schema/Bool}))

(def KaskypaatosVarsinainenPaatosData {:fine common-schema/NonNegative
:osapuoli-specific-data [KaskypaatosVarsinainenPaatosOsapuoliSpecificData]
Expand All @@ -82,14 +91,14 @@
(def KaskypaatosTiedoksiantoHaastemiesOsapuoliSpecificData
(schema/conditional
toimenpide/osapuoli-has-document?
{:osapuoli-id common-schema/Key
{:osapuoli OsapuoliSpecificDataOsapuoli
:karajaoikeus-id KarajaoikeusId
:haastemies-email common-schema/Email
:document schema/Bool}

:else
{:osapuoli-id common-schema/Key
:document schema/Bool}))
{:osapuoli OsapuoliSpecificDataOsapuoli
:document schema/Bool}))

(def KaskypaatosTiedoksiantoHaastemiesData
{:osapuoli-specific-data [KaskypaatosTiedoksiantoHaastemiesOsapuoliSpecificData]})
Expand All @@ -101,19 +110,19 @@
;; Osapuoli has a document so all fields are required to have values
;; answer-commentary fields are optional but if present, values are required
toimenpide/osapuoli-has-document?
{:osapuoli-id common-schema/Key
:hallinto-oikeus-id HallintoOikeusId
:document schema/Bool
:recipient-answered schema/Bool
{:osapuoli OsapuoliSpecificDataOsapuoli
:hallinto-oikeus-id HallintoOikeusId
:document schema/Bool
:recipient-answered schema/Bool
(schema/optional-key :answer-commentary-fi) schema/Str
(schema/optional-key :answer-commentary-sv) schema/Str
:statement-fi schema/Str
:statement-sv schema/Str}
:statement-fi schema/Str
:statement-sv schema/Str}

;; Osapuoli has no document so no other fields are allowed
:else
{:osapuoli-id common-schema/Key
:document schema/Bool}))
{:osapuoli OsapuoliSpecificDataOsapuoli
:document schema/Bool}))

(def SakkopaatosVarsinainenPaatosData {:fine common-schema/NonNegative
:osapuoli-specific-data [SakkopaatosVarsinainenPaatosOsapuoliSpecificData]
Expand All @@ -124,14 +133,14 @@
(def SakkopaatosTiedoksiantoHaastemiesOsapuoliSpecificData
(schema/conditional
toimenpide/osapuoli-has-document?
{:osapuoli-id common-schema/Key
{:osapuoli OsapuoliSpecificDataOsapuoli
:karajaoikeus-id KarajaoikeusId
:haastemies-email common-schema/Email
:document schema/Bool}

:else
{:osapuoli-id common-schema/Key
:document schema/Bool}))
{:osapuoli OsapuoliSpecificDataOsapuoli
:document schema/Bool}))

(def SakkopaatosTiedoksiantoHaastemiesData
{:osapuoli-specific-data [SakkopaatosTiedoksiantoHaastemiesOsapuoliSpecificData]})
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
(ns solita.etp.service.valvonta-kaytto.asha
(:require [clojure.java.io :as io]
[clojure.string :as string]
(:require [clojure.string :as string]
[solita.common.time :as time]
[solita.etp.service.asha :as asha]
[solita.etp.schema.valvonta-kaytto :as vk-schema]
[solita.etp.service.valvonta-kaytto.hallinto-oikeus-attachment :as hao-attachment]
[solita.etp.service.valvonta-kaytto.previous-toimenpide-data :as previous-toimenpide]
[solita.etp.service.valvonta-kaytto.toimenpide :as toimenpide]
Expand Down Expand Up @@ -90,7 +90,11 @@
:tietopyynto {:tietopyynto-pvm (time/format-date (:rfi-request dokumentit))
:tietopyynto-kehotus-pvm (time/format-date (:rfi-order dokumentit))}
:tiedoksi (map (partial tiedoksi-saaja roolit) tiedoksi)
:tyyppikohtaiset-tiedot (type-specific-data/format-type-specific-data db toimenpide (:id osapuoli))
:tyyppikohtaiset-tiedot (type-specific-data/format-type-specific-data
db
toimenpide
{:id (:id osapuoli)
:type (osapuoli/osapuoli->osapuoli-type osapuoli)})
:aiemmat-toimenpiteet (previous-toimenpide/formatted-previous-toimenpide-data db toimenpide (:id valvonta))})

(defn- request-id [valvonta-id toimenpide-id]
Expand Down Expand Up @@ -250,16 +254,21 @@
:type-specific-data
:osapuoli-specific-data
(filter toimenpide/osapuoli-has-document?)
(map :osapuoli-id)
set)]
(filter #(contains? osapuolet-with-document (:id %)) osapuolet))
(map :osapuoli))
henkilo-osapuolet-with-documents (map :id (filter #(= (:type %) vk-schema/henkilo) osapuolet-with-document))
yritys-osapuolet-with-documents (map :id (filter #(= (:type %) vk-schema/yritys) osapuolet-with-document))]
(concat
(filter #(contains? (set henkilo-osapuolet-with-documents) (:id %)) (filter osapuoli/henkilo? osapuolet))
(filter #(contains? (set yritys-osapuolet-with-documents) (:id %)) (filter osapuoli/yritys? osapuolet))))
osapuolet))

(defn store-hallinto-oikeus-attachment! [db aws-s3-client valvonta-id toimenpide osapuoli]
(let [hallinto-oikeus-id (-> toimenpide
(let [osapuoli-type (osapuoli/osapuoli->osapuoli-type osapuoli)
hallinto-oikeus-id (-> toimenpide
:type-specific-data
:osapuoli-specific-data
(type-specific-data/find-administrative-court-id-from-osapuoli-specific-data (:id osapuoli)))
(type-specific-data/find-administrative-court-id-from-osapuoli-specific-data {:id (:id osapuoli)
:type osapuoli-type}))
attachment (hao-attachment/attachment-for-hallinto-oikeus-id db hallinto-oikeus-id)]
(store/store-hallinto-oikeus-attachment! aws-s3-client valvonta-id (:id toimenpide) osapuoli attachment)
attachment))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
(ns solita.etp.service.valvonta-kaytto.osapuoli)
(ns solita.etp.service.valvonta-kaytto.osapuoli
(:require [solita.etp.schema.valvonta-kaytto :as vk-schema]))

(def omistaja? #(= (:rooli-id %) 0))
(def tiedoksi? (complement omistaja?))
Expand All @@ -14,4 +15,11 @@
(def yritys? #(contains? % :nimi))

(defn ilmoituspaikka-other? [valvonta]
(= (:ilmoituspaikka-id valvonta) 2))
(= (:ilmoituspaikka-id valvonta) 2))

(defn osapuoli->osapuoli-type
"Given osapuoli map, returns whether the osapuoli is henkilo or yritys"
[osapuoli]
(if (henkilo? osapuoli)
vk-schema/henkilo
vk-schema/yritys))
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@
(db/require-queries 'karajaoikeus)

(defmulti format-type-specific-data
(fn [_db toimenpide _osapuoli-id] (-> toimenpide :type-id toimenpide/type-key)))
(fn [_db toimenpide _osapuoli] (-> toimenpide :type-id toimenpide/type-key)))

(defn- find-value-from-osapuoli-specific-data [key osapuoli-specific-data osapuoli-id]
(defn- find-value-from-osapuoli-specific-data [key osapuoli-specific-data osapuoli]
(->> osapuoli-specific-data
(filter #(= (:osapuoli-id %) osapuoli-id))
(filter #(= (:osapuoli %)
osapuoli))
first
key))

Expand All @@ -27,30 +28,30 @@
(exception/throw-ex-info!
{:message (str "Unknown hallinto-oikeus-id: " hallinto-oikeus-id)})))

(defn format-actual-decision-data [db toimenpide osapuoli-id]
(defn format-actual-decision-data [db toimenpide osapuoli]
(let [recipient-answered? (-> toimenpide
:type-specific-data
:osapuoli-specific-data
(find-recipient-answered-from-osapuoli-specific-data osapuoli-id))
(find-recipient-answered-from-osapuoli-specific-data osapuoli))
hallinto-oikeus-strings (hallinto-oikeus-id->formatted-strings
db
(-> toimenpide
:type-specific-data
:osapuoli-specific-data
(find-administrative-court-id-from-osapuoli-specific-data osapuoli-id)))]
(find-administrative-court-id-from-osapuoli-specific-data osapuoli)))]
{:recipient-answered recipient-answered?
:vastaus-fi (let [answer-commentary (-> toimenpide
:type-specific-data
:osapuoli-specific-data
((partial find-value-from-osapuoli-specific-data :answer-commentary-fi) osapuoli-id))
((partial find-value-from-osapuoli-specific-data :answer-commentary-fi) osapuoli))
recipient-answered-string (if recipient-answered?
"Asianosainen antoi vastineen kuulemiskirjeeseen. "
"Asianosainen ei vastannut kuulemiskirjeeseen. ")]
(str recipient-answered-string answer-commentary))
:vastaus-sv (let [answer-commentary (-> toimenpide
:type-specific-data
:osapuoli-specific-data
((partial find-value-from-osapuoli-specific-data :answer-commentary-sv) osapuoli-id))
((partial find-value-from-osapuoli-specific-data :answer-commentary-sv) osapuoli))
recipient-answered-string (if recipient-answered?
"gav ett bemötande till brevet om hörande. "
"svarade inte på brevet om hörande. ")]
Expand All @@ -61,40 +62,41 @@
:statement-fi (-> toimenpide
:type-specific-data
:osapuoli-specific-data
((partial find-value-from-osapuoli-specific-data :statement-fi) osapuoli-id))
((partial find-value-from-osapuoli-specific-data :statement-fi) osapuoli))
:statement-sv (-> toimenpide
:type-specific-data
:osapuoli-specific-data
((partial find-value-from-osapuoli-specific-data :statement-sv) osapuoli-id))
((partial find-value-from-osapuoli-specific-data :statement-sv) osapuoli))
:department-head-name (-> toimenpide :type-specific-data :department-head-name)
:department-head-title-fi (-> toimenpide :type-specific-data :department-head-title-fi)
:department-head-title-sv (-> toimenpide :type-specific-data :department-head-title-sv)}))

(defmethod format-type-specific-data :decision-order-actual-decision [db toimenpide osapuoli-id]
(format-actual-decision-data db toimenpide osapuoli-id))
(defmethod format-type-specific-data :decision-order-actual-decision [db toimenpide osapuoli]
(format-actual-decision-data db toimenpide osapuoli))

(defmethod format-type-specific-data :penalty-decision-actual-decision [db toimenpide osapuoli-id]
(format-actual-decision-data db toimenpide osapuoli-id))
(defmethod format-type-specific-data :penalty-decision-actual-decision [db toimenpide osapuoli]
(format-actual-decision-data db toimenpide osapuoli))

(defn- karajaoikeus-id->name [db id]
(first (karajaoikeus-db/find-karajaoikeus-name-by-id db {:karajaoikeus-id id})))

(defn- format-notice-bailiff [db toimenpide osapuoli-id]
(let [osapuoli (->> toimenpide
:type-specific-data
:osapuoli-specific-data
(filter #(= (:osapuoli-id %) osapuoli-id))
first)
karajaoikeus-id (:karajaoikeus-id osapuoli)
haastemies-email (:haastemies-email osapuoli)]
(defn- format-notice-bailiff [db toimenpide osapuoli]
(let [karajaoikeus-id (-> toimenpide
:type-specific-data
:osapuoli-specific-data
((partial find-value-from-osapuoli-specific-data :karajaoikeus-id) osapuoli))
haastemies-email (-> toimenpide
:type-specific-data
:osapuoli-specific-data
((partial find-value-from-osapuoli-specific-data :haastemies-email) osapuoli))]
{:karajaoikeus (karajaoikeus-id->name db karajaoikeus-id)
:haastemies-email haastemies-email}))

(defmethod format-type-specific-data :decision-order-notice-bailiff [db toimenpide osapuoli-id]
(format-notice-bailiff db toimenpide osapuoli-id))
(defmethod format-type-specific-data :decision-order-notice-bailiff [db toimenpide osapuoli]
(format-notice-bailiff db toimenpide osapuoli))

(defmethod format-type-specific-data :penalty-decision-notice-bailiff [db toimenpide osapuoli-id]
(format-notice-bailiff db toimenpide osapuoli-id))
(defmethod format-type-specific-data :penalty-decision-notice-bailiff [db toimenpide osapuoli]
(format-notice-bailiff db toimenpide osapuoli))

(defmethod format-type-specific-data :default [_ toimenpide _]
(:type-specific-data toimenpide))
Loading