Files
integreat/src/clj/auto_ap/graphql/clients.clj
2019-01-21 11:30:16 -08:00

63 lines
3.5 KiB
Clojure

(ns auto-ap.graphql.clients
(:require [auto-ap.datomic.clients :as d-clients]
[datomic.api :as d]
[auto-ap.datomic :refer [uri remove-nils]]
[auto-ap.graphql.utils :refer [->graphql assert-admin can-see-client?]]))
#_(def role->datomic-role {":none" :user-role/none
":admin" :user-role/admin
":user" :user-role/user})
(defn edit-client [context {:keys [edit_client new_bank_accounts] :as args} value]
(assert-admin (:id context))
(println (:address edit_client))
(let [client (d-clients/get-by-id (:id edit_client))
#_#_new-clients (set (map #(Long/parseLong %) (:clients edit_user)))
#_#_clients-to-remove (->> (:user/clients user)
(map :db/id)
(filter #(not (new-clients %)) ))]
(println edit_client)
@(d/transact (d/connect uri)
(doto (-> [(remove-nils {:db/id (:db/id client)
:client/name (:name edit_client)
:client/email (:email edit_client)
:client/locations (filter identity (:locations edit_client))
:client/address (remove-nils {
:address/street1 (:street1 (:address edit_client))
:address/street2 (:street2 (:address edit_client))
:address/city (:city (:address edit_client))
:address/state (:state (:address edit_client))
:address/zip (:zip (:address edit_client))})
:client/bank-accounts (map #(remove-nils
{:db/id (:id %)
:bank-account/bank-name (:bank_name %)
:bank-account/bank-code (:bank_code %)
:bank-account/routing (:routing %)
:bank-account/name (:name %)
:bank-account/number (:number %)
:bank-account/check-number (:check_number %)
:bank-account/yodlee-account-id (:yodlee_account_id %)
:bank-account/type :bank-account-type/check
}
) (:bank_accounts edit_client))
})]
#_(into (map (fn [c] [:db/retract (:db/id user) :user/clients c]) clients-to-remove)))
clojure.pprint/pprint))
(doto (->graphql
(d-clients/get-by-id (:id edit_client)))
println)))
(defn get-client [context args value]
(->graphql
(filter #(can-see-client? (:id context) %)
(d-clients/get-all))))