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

Commit

Permalink
AE-2029: Refactor osapuoli-id and osapuoli-type to osapuoli-map in os…
Browse files Browse the repository at this point in the history
…apuoli-specific-data

- Makes it clearer that both need to be checked for osapuoli to matxh
  • Loading branch information
Juholei committed Nov 20, 2023
1 parent 1f59fb3 commit 166fbba
Show file tree
Hide file tree
Showing 10 changed files with 147 additions and 154 deletions.
39 changes: 17 additions & 22 deletions etp-backend/src/main/clj/solita/etp/schema/valvonta_kaytto.clj
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,15 @@

(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-type OsapuoliType
{:osapuoli OsapuoliSpecificDataOsapuoli
:hallinto-oikeus-id HallintoOikeusId
:document schema/Bool
:recipient-answered schema/Bool
Expand All @@ -69,17 +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-type OsapuoliType
{: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
:osapuoli-type OsapuoliType
:document schema/Bool}))
{:osapuoli OsapuoliSpecificDataOsapuoli
:document schema/Bool}))

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

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

(def KaskypaatosTiedoksiantoHaastemiesData
{:osapuoli-specific-data [KaskypaatosTiedoksiantoHaastemiesOsapuoliSpecificData]})
Expand All @@ -111,8 +110,7 @@
;; 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
:osapuoli-type OsapuoliType
{:osapuoli OsapuoliSpecificDataOsapuoli
:hallinto-oikeus-id HallintoOikeusId
:document schema/Bool
:recipient-answered schema/Bool
Expand All @@ -123,9 +121,8 @@

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

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

:else
{:osapuoli-id common-schema/Key
:osapuoli-type OsapuoliType
: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
Expand Up @@ -93,8 +93,8 @@
:tyyppikohtaiset-tiedot (type-specific-data/format-type-specific-data
db
toimenpide
(:id osapuoli)
(osapuoli/osapuoli->osapuoli-type osapuoli))
{: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 @@ -254,9 +254,9 @@
:type-specific-data
:osapuoli-specific-data
(filter toimenpide/osapuoli-has-document?)
(map #(select-keys % [:osapuoli-id :osapuoli-type])))
henkilo-osapuolet-with-documents (map :osapuoli-id (filter #(= (:osapuoli-type %) vk-schema/henkilo) osapuolet-with-document))
yritys-osapuolet-with-documents (map :osapuoli-id (filter #(= (:osapuoli-type %) vk-schema/yritys) osapuolet-with-document))]
(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))))
Expand All @@ -267,7 +267,8 @@
hallinto-oikeus-id (-> toimenpide
:type-specific-data
:osapuoli-specific-data
(type-specific-data/find-administrative-court-id-from-osapuoli-specific-data (:id osapuoli) osapuoli-type))
(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
Expand Up @@ -7,12 +7,12 @@
(db/require-queries 'karajaoikeus)

(defmulti format-type-specific-data
(fn [_db toimenpide _osapuoli-id _osapuoli-type] (-> 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 osapuoli-type]
(defn- find-value-from-osapuoli-specific-data [key osapuoli-specific-data osapuoli]
(->> osapuoli-specific-data
(filter #(= ((juxt :osapuoli-id :osapuoli-type) %)
[osapuoli-id osapuoli-type]))
(filter #(= (:osapuoli %)
osapuoli))
first
key))

Expand All @@ -28,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 osapuoli-type]
(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 osapuoli-type))
(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 osapuoli-type)))]
(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 osapuoli-type))
((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 osapuoli-type))
((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 @@ -62,41 +62,41 @@
:statement-fi (-> toimenpide
:type-specific-data
:osapuoli-specific-data
((partial find-value-from-osapuoli-specific-data :statement-fi) osapuoli-id osapuoli-type))
((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 osapuoli-type))
((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 osapuoli-type]
(format-actual-decision-data db toimenpide osapuoli-id osapuoli-type))
(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 osapuoli-type]
(format-actual-decision-data db toimenpide osapuoli-id osapuoli-type))
(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 osapuoli-type]
(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-id osapuoli-type))
((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-id osapuoli-type))]
((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 osapuoli-type]
(format-notice-bailiff db toimenpide osapuoli-id osapuoli-type))
(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 osapuoli-type]
(format-notice-bailiff db toimenpide osapuoli-id osapuoli-type))
(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 _ _]
(defmethod format-type-specific-data :default [_ toimenpide _]
(:type-specific-data toimenpide))
Loading

0 comments on commit 166fbba

Please sign in to comment.