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

Commit

Permalink
Merge pull request #1044 from solita/feature/AE-2029
Browse files Browse the repository at this point in the history
Feature/ae 2029
  • Loading branch information
Juholei authored Nov 21, 2023
2 parents f43f106 + a847354 commit 4416a54
Show file tree
Hide file tree
Showing 11 changed files with 443 additions and 111 deletions.
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

0 comments on commit 4416a54

Please sign in to comment.