everything is audited.
This commit is contained in:
@@ -1,20 +1,26 @@
|
||||
(ns auto-ap.graphql.transaction-rules
|
||||
(:require [auto-ap.datomic.transaction-rules :as tr]
|
||||
[auto-ap.datomic.transactions :as t]
|
||||
[datomic.api :as d]
|
||||
[auto-ap.datomic :refer [remove-nils uri merge-query replace-nils-with-retract]]
|
||||
(:require [auto-ap.datomic
|
||||
:refer
|
||||
[audit-transact merge-query remove-nils replace-nils-with-retract uri]]
|
||||
[auto-ap.datomic.transaction-rules :as tr]
|
||||
[auto-ap.datomic.transactions :as d-transactions]
|
||||
[auto-ap.graphql.utils
|
||||
:refer
|
||||
[->graphql
|
||||
<-graphql
|
||||
assert-admin
|
||||
ident->enum-f
|
||||
limited-clients
|
||||
result->page
|
||||
snake->kebab]]
|
||||
[auto-ap.rule-matching :as rm]
|
||||
[auto-ap.utils :refer [dollars=]]
|
||||
[auto-ap.graphql.utils :refer [->graphql <-graphql limited-clients assert-admin result->page snake->kebab ident->enum-f]]
|
||||
[clj-time.coerce :as c]
|
||||
[clj-time.coerce :as coerce]
|
||||
[clojure.set :as set]
|
||||
[clojure.string :as str]
|
||||
[auto-ap.datomic.transactions :as d-transactions]
|
||||
[auto-ap.rule-matching :as rm]
|
||||
[clj-time.coerce :as coerce]
|
||||
[clojure.tools.logging :as log])
|
||||
(:import [java.time.temporal ChronoField]))
|
||||
|
||||
|
||||
[clojure.tools.logging :as log]
|
||||
[datomic.api :as d])
|
||||
(:import java.time.temporal.ChronoField))
|
||||
|
||||
(defn get-transaction-rule-page [context args value]
|
||||
(let [args (assoc args :id (:id context))
|
||||
@@ -52,7 +58,7 @@
|
||||
(when-not (:transaction-rule/description existing-transaction-rule)
|
||||
(throw (ex-info "Transaction rule not found" {:validation-error "Transaction Rule not found"})))
|
||||
|
||||
@(d/transact (d/connect uri) [[:db/retractEntity transaction_rule_id]])
|
||||
(audit-transact [[:db/retractEntity transaction_rule_id]] (:id context))
|
||||
transaction_rule_id))
|
||||
|
||||
(defn upsert-transaction-rule [context {{:keys [id description yodlee_merchant_id note client_id bank_account_id amount_lte amount_gte vendor_id accounts transaction_approval_status dom_gte dom_lte]} :transaction_rule :as z} value]
|
||||
@@ -67,9 +73,10 @@
|
||||
(nil? yodlee_merchant_id))
|
||||
(let [error (str "You must provide a description or a yodlee merchant")]
|
||||
(throw (ex-info error {:validation-error error}))))
|
||||
transaction (replace-nils-with-retract #:transaction-rule {:db/id (if id
|
||||
id
|
||||
"transaction-rule")
|
||||
rule-id (if id
|
||||
id
|
||||
"transaction-rule")
|
||||
transaction (replace-nils-with-retract #:transaction-rule {:db/id rule-id
|
||||
:description description
|
||||
:note note
|
||||
:client client_id
|
||||
@@ -84,16 +91,13 @@
|
||||
(some->> transaction_approval_status
|
||||
name
|
||||
snake->kebab
|
||||
(keyword "transaction-approval-status"))
|
||||
:accounts (map transaction-rule-account->entity accounts)}
|
||||
(keyword "transaction-approval-status"))}
|
||||
existing-transaction)
|
||||
|
||||
|
||||
transaction (into transaction
|
||||
(map (fn [d]
|
||||
[:db/retract id :transaction-rule/accounts d])
|
||||
deleted))
|
||||
transaction-result @(d/transact (d/connect uri) transaction)]
|
||||
transaction (conj transaction
|
||||
[:reset rule-id :transaction-rule/accounts (map transaction-rule-account->entity accounts)])
|
||||
transaction-result (audit-transact transaction (:id context))]
|
||||
(-> (tr/get-by-id (or (-> transaction-result :tempids (get "transaction-rule"))
|
||||
id))
|
||||
((ident->enum-f :transaction-rule/transaction-approval-status))
|
||||
|
||||
Reference in New Issue
Block a user