Skip to content

Commit

Permalink
refactor on-hakemus-submit to use a transaction
Browse files Browse the repository at this point in the history
  • Loading branch information
wilbrt committed Jan 14, 2025
1 parent f422ac7 commit eefd527
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 46 deletions.
41 changes: 21 additions & 20 deletions server/src/clojure/oph/va/hakija/db.clj
Original file line number Diff line number Diff line change
Expand Up @@ -338,9 +338,8 @@
VALUES ((SELECT id FROM menoluokka WHERE avustushaku_id = ? AND type = ?), ?, ?)"
[avustushaku-id (name type) muutoshakemus-id amount])))

(defn store-normalized-hakemus [id hakemus answers]
(defn store-normalized-hakemus [tx id hakemus answers]
(log/info (str "Storing normalized fields for hakemus: " id))
(with-tx (fn [tx]
(execute! tx
"INSERT INTO virkailija.normalized_hakemus (
hakemus_id,
Expand Down Expand Up @@ -375,7 +374,7 @@
(form-util/find-answer-value answers "trusted-contact-name")
(form-util/find-answer-value answers "trusted-contact-email")
(form-util/find-answer-value answers "trusted-contact-phone")
])))
])
(log/info (str "Succesfully stored normalized fields for hakemus with id: " id)))

(defn- change-normalized-hakemus-contact-person-details [tx user-key hakemus-id contact-person-details]
Expand Down Expand Up @@ -436,8 +435,8 @@
(with-tx (fn [tx]
(update-hakemus-tx tx avustushaku-id user-key submission-id submission-version register-number answers budget-totals ))))

(defn- update-status [avustushaku-id user-key submission-id submission-version register-number answers budget-totals status status-change-comment]
(with-tx (fn [tx]
(defn- update-status
[tx avustushaku-id user-key submission-id submission-version register-number answers budget-totals status status-change-comment]
(let [new-hakemus (hakemus-copy/create-new-hakemus-version-from-user-key-form-submission-id tx user-key submission-id)
params (-> {:avustushaku_id avustushaku-id
:version (:version new-hakemus)
Expand All @@ -453,30 +452,32 @@
:status_change_comment status-change-comment}
(merge (convert-budget-totals budget-totals))
(merge-calculated-params avustushaku-id answers))]

(queries/update-hakemus-status<! params {:connection tx})))))
(queries/update-hakemus-status<! params {:connection tx})))

(defn open-hakemus-applicant-edit [avustushaku-id hakemus-id submission-id submission-version register-number answers budget-totals]
(update-status avustushaku-id hakemus-id submission-id submission-version register-number answers budget-totals :applicant_edit nil))
(with-tx #(update-status % avustushaku-id hakemus-id submission-id submission-version register-number answers budget-totals :applicant_edit nil)))

(defn set-submitted-version [user-key form-submission-id]
(with-tx (fn [tx]
(let [new-hakemus (hakemus-copy/create-new-hakemus-version-from-user-key-form-submission-id tx user-key form-submission-id)
params {:user_key user-key
:form_submission_id form-submission-id
:version (:version new-hakemus) }]
(defn set-submitted-version
([user-key form-submission-id]
(with-tx (fn [tx]
(set-submitted-version tx user-key form-submission-id))))
([tx user-key form-submission-id]
(let [new-hakemus (hakemus-copy/create-new-hakemus-version-from-user-key-form-submission-id tx user-key form-submission-id)
params {:user_key user-key
:form_submission_id form-submission-id
:version (:version new-hakemus) }]

(queries/set-application-submitted-version<! params {:connection tx})))))
(queries/set-application-submitted-version<! params {:connection tx}))))

(defn verify-hakemus [avustushaku-id hakemus-id submission-id submission-version register-number answers budget-totals]
(update-status avustushaku-id hakemus-id submission-id submission-version register-number answers budget-totals :draft nil))
(with-tx #(update-status % avustushaku-id hakemus-id submission-id submission-version register-number answers budget-totals :draft nil)))

(defn submit-hakemus [avustushaku-id hakemus-id submission-id submission-version register-number answers budget-totals]
(update-status avustushaku-id hakemus-id submission-id submission-version register-number answers budget-totals :submitted nil)
(set-submitted-version hakemus-id submission-id))
(defn submit-hakemus [tx avustushaku-id hakemus-id submission-id submission-version register-number answers budget-totals]
(update-status tx avustushaku-id hakemus-id submission-id submission-version register-number answers budget-totals :submitted nil)
(set-submitted-version tx hakemus-id submission-id))

(defn cancel-hakemus [avustushaku-id hakemus-id submission-id submission-version register-number answers budget-totals comment]
(update-status avustushaku-id hakemus-id submission-id submission-version register-number answers budget-totals :cancelled comment))
(with-tx #(update-status % avustushaku-id hakemus-id submission-id submission-version register-number answers budget-totals :cancelled comment)))

(defn unrefuse-application [tx id]
(let [new-hakemus (hakemus-copy/create-new-hakemus-version tx id)]
Expand Down
49 changes: 27 additions & 22 deletions server/src/clojure/oph/va/hakija/handlers.clj
Original file line number Diff line number Diff line change
Expand Up @@ -171,13 +171,13 @@
(let [{:keys [hakemus submission validation parent-hakemus]} (get-current-answers haku-id hakemus-id form-key)]
(hakemus-ok-response hakemus submission validation parent-hakemus)))

(defn try-store-normalized-hakemus [hakemus-id hakemus answers haku-id]
(defn try-store-normalized-hakemus [tx hakemus-id hakemus answers haku-id]
(try
(va-db/store-normalized-hakemus hakemus-id hakemus answers)
(va-db/store-normalized-hakemus tx hakemus-id hakemus answers)
true
(catch Exception e
(log/info "Could not normalize necessary hakemus fields for hakemus: " hakemus-id " Error: " (.getMessage e))
false)))
false)) )

(defn can-update-hakemus [haku-id user-key answers identity]
(let [hakemus (va-db/get-hakemus user-key)
Expand Down Expand Up @@ -215,8 +215,8 @@
(:version updated-submission)
(:register_number hakemus)
answers
budget-totals)
normalized-hakemus-success (try-store-normalized-hakemus (:id hakemus) hakemus answers haku-id)]
budget-totals)]
(try-store-normalized-hakemus tx (:id hakemus) hakemus answers haku-id)
(hakemus-ok-response updated-hakemus updated-submission validation nil))
(hakemus-conflict-response hakemus))
(bad-request! security-validation))))
Expand Down Expand Up @@ -265,31 +265,33 @@
:else (hakemus-conflict-response hakemus))))

(defn on-hakemus-submit [haku-id hakemus-id base-version answers]
(let [avustushaku (get-open-avustushaku haku-id {})
form-id (:form avustushaku)
form (form-db/get-form form-id)
hakemus (va-db/get-hakemus hakemus-id)
attachments (va-db/get-attachments (:user_key hakemus) (:id hakemus))
budget-totals (va-budget/calculate-totals-hakija answers avustushaku form)
validation (merge (validation/validate-form form answers attachments)
(va-budget/validate-budget-hakija answers budget-totals form))]
(with-tx (fn [tx]
(let [avustushaku (get-open-avustushaku-tx tx haku-id {})
form-id (:form avustushaku)
form (form-db/get-form-tx tx form-id)
hakemus (va-db/get-hakemus hakemus-id)
attachments (va-db/get-attachments (:user_key hakemus) (:id hakemus))
budget-totals (va-budget/calculate-totals-hakija answers avustushaku form)
validation (merge (validation/validate-form form answers attachments)
(va-budget/validate-budget-hakija answers budget-totals form))]
(if (every? empty? (vals validation))
(if (= base-version (:version hakemus))
(let [submission-id (:form_submission_id hakemus)
saved-submission (:body (update-form-submission form-id submission-id answers))
saved-submission (:body (update-form-submission-tx tx form-id submission-id answers))
submission-version (:version saved-submission)
submitted-hakemus (va-db/submit-hakemus haku-id
submitted-hakemus (va-db/submit-hakemus tx
haku-id
hakemus-id
submission-id
submission-version
(:register_number hakemus)
answers
budget-totals)
normalized-hakemus-success (try-store-normalized-hakemus (:id hakemus) hakemus answers haku-id)]
budget-totals)]
(try-store-normalized-hakemus tx (:id hakemus) hakemus answers haku-id)
(va-submit-notification/send-submit-notifications! va-email/send-hakemus-submitted-message! false answers submitted-hakemus avustushaku (:id hakemus))
(hakemus-ok-response submitted-hakemus saved-submission validation nil))
(hakemus-conflict-response hakemus))
(bad-request! validation))))
(bad-request! validation))))))

(defn on-hakemus-change-request-response [haku-id user-key base-version answers]
(let [hakemus (va-db/get-hakemus user-key)
Expand All @@ -305,13 +307,14 @@
(let [submission-id (:form_submission_id hakemus)
saved-submission (:body (update-form-submission form-id submission-id answers))
submission-version (:version saved-submission)
submitted-hakemus (va-db/submit-hakemus haku-id
submitted-hakemus (with-tx #(va-db/submit-hakemus %
haku-id
user-key
submission-id
submission-version
(:register_number hakemus)
answers
budget-totals)
budget-totals))
change-requests (va-db/list-hakemus-change-requests user-key)
email-of-virkailija (:user_email (last change-requests))]
(if email-of-virkailija
Expand All @@ -337,13 +340,15 @@
submission-id (:form_submission_id hakemus)
saved-submission (:body (update-form-submission form-id submission-id answers))
submission-version (:version saved-submission)
submitted-hakemus (va-db/submit-hakemus haku-id
submitted-hakemus (with-tx #(va-db/submit-hakemus
%
haku-id
hakemus-id
submission-id
submission-version
(:register_number hakemus)
answers
budget-totals)
budget-totals))
submission (:body (get-form-submission
(:form avustushaku)
(:form_submission_id hakemus)))]
Expand Down
12 changes: 8 additions & 4 deletions server/src/clojure/oph/va/hakija/selvitys/routes.clj
Original file line number Diff line number Diff line change
Expand Up @@ -163,13 +163,15 @@
(if (= base-version (:version hakemus))
(let [submission-id (:form_submission_id hakemus)
saved-submission (:body (update-form-submission form-id submission-id answers))
submitted-hakemus (va-db/submit-hakemus avustushaku-id
submitted-hakemus (with-tx #(va-db/submit-hakemus
%
avustushaku-id
selvitys-user-key
submission-id
(:version saved-submission)
(:register_number hakemus)
answers
budget-totals)
budget-totals))
lang (keyword (:language hakemus))
parent-hakemus-id (:parent_id hakemus)
id (:id hakemus)
Expand Down Expand Up @@ -232,13 +234,15 @@
(if (= base-version (:version hakemus))
(let [submission-id (:form_submission_id hakemus)
saved-submission (:body (update-form-submission form-id submission-id answers))
submitted-hakemus (va-db/submit-hakemus haku-id
submitted-hakemus (with-tx #(va-db/submit-hakemus
%
haku-id
selvitys-user-key
submission-id
(:version saved-submission)
(:register_number hakemus)
answers
budget-totals)
budget-totals))
lang (keyword (:language hakemus))
parent_id (:parent_id hakemus)
contact-email (get-hakemus-contact-email parent_id)
Expand Down

0 comments on commit eefd527

Please sign in to comment.