From 9385624309a2bc397c4b75221e949ba5240a16db Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Mon, 21 Jan 2019 11:30:16 -0800 Subject: [PATCH] saving clients pretty much works. --- src/clj/auto_ap/graphql.clj | 1 + src/clj/auto_ap/graphql/clients.clj | 27 ++++++++++++++----- .../auto_ap/views/pages/admin/clients.cljs | 12 ++++++--- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/clj/auto_ap/graphql.clj b/src/clj/auto_ap/graphql.clj index 4ee85fc8..0ee47ac3 100644 --- a/src/clj/auto_ap/graphql.clj +++ b/src/clj/auto_ap/graphql.clj @@ -259,6 +259,7 @@ :check_number {:type 'Int} :name {:type 'String} :bank_code {:type 'String} + :routing {:type 'String} :bank_name {:type 'String} :yodlee_account_id {:type 'Int}}} :edit_user diff --git a/src/clj/auto_ap/graphql/clients.clj b/src/clj/auto_ap/graphql/clients.clj index a45fbcb0..577d9b98 100644 --- a/src/clj/auto_ap/graphql/clients.clj +++ b/src/clj/auto_ap/graphql/clients.clj @@ -8,7 +8,7 @@ ":admin" :user-role/admin ":user" :user-role/user}) -(defn edit-client [context {:keys [edit_client] :as args} value] +(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)) @@ -16,6 +16,7 @@ #_#_clients-to-remove (->> (:user/clients user) (map :db/id) (filter #(not (new-clients %)) ))] + (println edit_client) @(d/transact (d/connect uri) @@ -23,15 +24,29 @@ (doto (-> [(remove-nils {:db/id (:db/id client) :client/name (:name edit_client) :client/email (:email edit_client) - :client/address (remove-nils - { + :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)) - - }) + :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)) diff --git a/src/cljs/auto_ap/views/pages/admin/clients.cljs b/src/cljs/auto_ap/views/pages/admin/clients.cljs index 586ff915..8f69c9c3 100644 --- a/src/cljs/auto_ap/views/pages/admin/clients.cljs +++ b/src/cljs/auto_ap/views/pages/admin/clients.cljs @@ -30,8 +30,13 @@ :query-obj {:venia/operation {:operation/type :mutation :operation/name "EditClient"} :venia/queries [{:query/data [:edit-client - {:edit-client edited-client} - [:id :name] + {:edit-client + ;; TODO - hard code fields we want + (-> edited-client + (update :bank-accounts #(into % (map (fn [ba] (dissoc ba :is-new?)) (:new-bank-accounts edited-client)))) + (dissoc :new-bank-accounts)) + } + [:id :name [:address [:street1 :street2 :city :state :zip]] [:bank-accounts [:id :number :check-number :name]]] ]}]} :on-success [::save-complete] :on-error [::save-error]}}))) @@ -39,11 +44,12 @@ (re-frame/reg-event-fx ::save-complete (fn [{:keys [db]} [_ client]] + (println client) {:dispatch [::events/modal-completed :auto-ap.views.pages.admin.clients/edit] :db (-> db (assoc-in [:admin :client] nil) - (assoc-in [:clients (:id client)] client))})) + (assoc-in [:clients (:id (:edit-client client))] (:edit-client client)))})) (re-frame/reg-event-db ::save-error