diff --git a/src/clj/auto_ap/graphql.clj b/src/clj/auto_ap/graphql.clj index 6699e5ea..f55c7748 100644 --- a/src/clj/auto_ap/graphql.clj +++ b/src/clj/auto_ap/graphql.clj @@ -58,7 +58,6 @@ :check_number {:type 'Int} :name {:type 'String} :bank_code {:type 'String} - :routing {:type 'String} :bank_name {:type 'String} :yodlee_account_id {:type 'Int}}} :address @@ -521,5 +520,8 @@ (try (time (simplify (execute schema q v {:id id}))) (catch Exception e - (println e) + (if-let [v (:validation-error (ex-data e))] + (println "validation error" v) + (println e)) + (throw e))))) diff --git a/src/clj/auto_ap/graphql/clients.clj b/src/clj/auto_ap/graphql/clients.clj index 9b152bd3..0148e4ac 100644 --- a/src/clj/auto_ap/graphql/clients.clj +++ b/src/clj/auto_ap/graphql/clients.clj @@ -9,11 +9,21 @@ ":admin" :user-role/admin ":user" :user-role/user}) +(defn assert-client-code-is-unique [code] + (when (seq (d/query {:query {:find '[?id] + :in ['$ '?code] + :where ['[?id :client/code ?code]]} + :args [(d/db (d/connect uri)) code]})) + (throw (ex-info "Client is not unique" {:validation-error "Client is not unique"})))) + (defn edit-client [context {:keys [edit_client new_bank_accounts] :as args} value] (assert-admin (:id context)) + (when-not (:id edit_client) + (assert-client-code-is-unique (:code edit_client))) (let [client (when (:id edit_client) (d-clients/get-by-id (:id edit_client))) id (or (:db/id client) "new-client") + _ (println id) transactions [(remove-nils {:db/id id :client/code (if (str/blank? (:client/code client)) (:code edit_client) diff --git a/src/cljs/auto_ap/views/pages/admin/clients.cljs b/src/cljs/auto_ap/views/pages/admin/clients.cljs index e46f32c6..a01e7b5e 100644 --- a/src/cljs/auto_ap/views/pages/admin/clients.cljs +++ b/src/cljs/auto_ap/views/pages/admin/clients.cljs @@ -75,12 +75,16 @@ (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 (:edit-client client))] (:edit-client client)))})) + (assoc-in [:admin :adding-client?] false) + (update :admin dissoc :new-client) + + + (assoc-in [:admin :client] nil) + (assoc-in [:clients (:id (:edit-client client))] (:edit-client client)))})) (re-frame/reg-event-db ::save-error @@ -516,7 +520,7 @@ :on-click (dispatch-event [::save-new-client])} "Save"]]])) (defn admin-clients-page [] - (let [adding-client? @(re-frame/subscribe [::subs/admin])] + (let [{:keys [adding-client?]} @(re-frame/subscribe [::subs/admin])] [side-bar-layout {:side-bar [admin-side-bar {}] :main [admin-clients-content] :right-side-bar (when adding-client?