From 9ee9855169f0bc6658d0c305b52bf19696665555 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Fri, 11 Dec 2020 17:47:51 -0800 Subject: [PATCH] you can change statuses in bulk! --- src/clj/auto_ap/graphql.clj | 11 ++++---- src/clj/auto_ap/graphql/transactions.clj | 7 ++--- .../auto_ap/views/pages/transactions.cljs | 27 +++++++++++-------- 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/src/clj/auto_ap/graphql.clj b/src/clj/auto_ap/graphql.clj index 10574bd8..04183915 100644 --- a/src/clj/auto_ap/graphql.clj +++ b/src/clj/auto_ap/graphql.clj @@ -831,10 +831,11 @@ :args {:invoices {:type '(list :id)}} :resolve :mutation/approve-invoices} - :unapprove_transactions {:type :message - :args {:filters {:type :transaction_filters} - :ids {:type '(list :id)}} - :resolve :mutation/unapprove-transactions} + :bulk_change_transaction_status {:type :message + :args {:filters {:type :transaction_filters} + :status {:type :transaction_approval_status} + :ids {:type '(list :id)}} + :resolve :mutation/bulk-change-transaction-status} :delete_external_ledger {:type :message :args {:filters {:type :ledger_filters} @@ -1190,7 +1191,7 @@ :mutation/edit-invoice gq-invoices/edit-invoice :mutation/edit-transaction gq-transactions/edit-transaction :mutation/unlink-transaction gq-transactions/unlink-transaction - :mutation/unapprove-transactions gq-transactions/unapprove-transactions + :mutation/bulk-change-transaction-status gq-transactions/bulk-change-status :mutation/delete-external-ledger gq-ledger/delete-external-ledger :mutation/delete-transactions gq-transactions/delete-transactions :mutation/upsert-transaction-rule gq-transaction-rules/upsert-transaction-rule diff --git a/src/clj/auto_ap/graphql/transactions.clj b/src/clj/auto_ap/graphql/transactions.clj index 75ed8d63..460d77c2 100644 --- a/src/clj/auto_ap/graphql/transactions.clj +++ b/src/clj/auto_ap/graphql/transactions.clj @@ -36,10 +36,11 @@ :start (:start args 0) :end (+ (:start args 0) (count transactions))})) -(defn unapprove-transactions [context args value] +(defn bulk-change-status [context args value] (let [_ (assert-admin (:id context)) args (assoc args :id (:id context)) ids (some-> (:filters args) + (assoc :id (:id context)) (<-graphql) (update :approval-status enum->keyword "transaction-approval-status") (assoc :per-page Integer/MAX_VALUE) @@ -53,10 +54,10 @@ (audit-transact-batch (mapv (fn [i] {:db/id i - :transaction/approval-status :transaction-approval-status/unapproved}) + :transaction/approval-status (enum->keyword (:status args) "transaction-approval-status")}) all-ids) (:id context)) - {:message (str "Succesfully unapproved " (count all-ids) " transactions.")})) + {:message (str "Succesfully changed " (count all-ids) " transactions to be " (name (:status args) ) ".")})) (defn delete-transactions [context args value] diff --git a/src/cljs/auto_ap/views/pages/transactions.cljs b/src/cljs/auto_ap/views/pages/transactions.cljs index b5716d33..3610a506 100644 --- a/src/cljs/auto_ap/views/pages/transactions.cljs +++ b/src/cljs/auto_ap/views/pages/transactions.cljs @@ -60,8 +60,8 @@ [::data-page/received ::page (:result result)])}})) (re-frame/reg-event-fx - ::unapprove-selected - (fn [cofx [_ params]] + ::bulk-change-transaction-status + (fn [cofx [_ status params]] (let [checked @(re-frame/subscribe [::data-page/checked ::page]) checked-params (get checked "header") specific-transactions (map :id (vals (dissoc checked "header")))] @@ -69,18 +69,18 @@ {:db (-> (:db cofx) (assoc-in [:status :loading] true)) :graphql {:token (-> cofx :db :user) - :owns-state {:single ::unapprove-selected} + :owns-state {:single ::bulk-change-transaction-status} :query-obj {:venia/operation {:operation/type :mutation - :operation/name "UnapproveTransactions"} + :operation/name "BulkChangeTransactionStatus"} :venia/queries [{:query/data - [:unapprove-transactions + [:bulk-change-transaction-status {:filters (some-> checked-params data-params->query-params) + :status status :ids specific-transactions} [:message]]}]} :on-success (fn [result] - [::params-change params] - #_[::data-page/received ::page (:result result)])}}))) + [::params-change params])}}))) (re-frame/reg-event-fx ::delete-selected @@ -136,7 +136,7 @@ checked @(re-frame/subscribe [::data-page/checked ::page])] [:div [:h1.title "Transactions"] - [status/status-notification {:statuses [[::status/single ::unapprove-selected] + [status/status-notification {:statuses [[::status/single ::bulk-change-transaction-status] [::status/single ::delete-selected] [::status/single ::manual-import]]}] (when is-admin? @@ -154,11 +154,16 @@ checked)) [:button.button.is-outlined.is-primary {:on-click (dispatch-event [::manual/opening])} "Manual Yodlee Import"] - [:button.button.is-warning {:on-click (dispatch-event [::unapprove-selected params]) - :class (status/class-for @(re-frame/subscribe [::status/single ::unapprove-selected])) - :disabled (or (status/disabled-for @(re-frame/subscribe [::status/single ::unapprove-selected])) + [:button.button.is-warning {:on-click (dispatch-event [::bulk-change-transaction-status :unapproved params]) + :class (status/class-for @(re-frame/subscribe [::status/single ::bulk-change-transaction-status])) + :disabled (or (status/disabled-for @(re-frame/subscribe [::status/single ::bulk-change-transaction-status])) (not (seq checked)))} "Unapprove selected"] + [:button.button.is-warning {:on-click (dispatch-event [::bulk-change-transaction-status :requires-feedback params]) + :class (status/class-for @(re-frame/subscribe [::status/single ::bulk-change-transaction-status])) + :disabled (or (status/disabled-for @(re-frame/subscribe [::status/single ::bulk-change-transaction-status])) + (not (seq checked)))} + "Client Review"] [:button.button.is-danger {:on-click (dispatch-event [::delete-selected params]) :class (status/class-for @(re-frame/subscribe [::status/single ::delete-selected])) :disabled (or (status/disabled-for @(re-frame/subscribe [::status/single ::delete-selected]))