cleans up grids
This commit is contained in:
@@ -2,32 +2,31 @@
|
||||
(:require
|
||||
[auto-ap.datomic :refer [apply-pagination-raw conn]]
|
||||
[auto-ap.graphql.utils :refer [assert-can-see-client]]
|
||||
[auto-ap.query-params :refer [wrap-copy-qp-pqp]]
|
||||
[auto-ap.routes.utils
|
||||
:refer [wrap-client-redirect-unauthenticated wrap-secure]]
|
||||
[auto-ap.ssr-routes :as ssr-routes]
|
||||
[auto-ap.ssr.components :as com]
|
||||
[auto-ap.ssr.form-cursor :as fc]
|
||||
[auto-ap.ssr.grid-page-helper :as helper]
|
||||
[auto-ap.ssr.grid-page-helper :as helper :refer [wrap-apply-sort]]
|
||||
[auto-ap.ssr.nested-form-params :refer [wrap-nested-form-params]]
|
||||
[auto-ap.ssr.svg :as svg]
|
||||
[auto-ap.ssr.utils
|
||||
:refer [apply-middleware-to-all-handlers
|
||||
entity-id
|
||||
html-response
|
||||
main-transformer
|
||||
modal-response
|
||||
ref->enum-schema
|
||||
ref->select-options
|
||||
strip
|
||||
wrap-entity
|
||||
wrap-form-4xx-2
|
||||
wrap-schema-enforce]]
|
||||
:refer [apply-middleware-to-all-handlers default-grid-fields-schema
|
||||
entity-id html-response main-transformer modal-response
|
||||
ref->enum-schema ref->select-options strip wrap-entity
|
||||
wrap-form-4xx-2 wrap-merge-prior-hx wrap-schema-enforce]]
|
||||
[bidi.bidi :as bidi]
|
||||
[clojure.string :as str]
|
||||
[datomic.api :as dc]
|
||||
[hiccup.util :refer [url]]
|
||||
[malli.core :as mc]))
|
||||
|
||||
(def query-schema (mc/schema
|
||||
[:maybe
|
||||
(into [:map {} ]
|
||||
default-grid-fields-schema)]))
|
||||
|
||||
(def vendor-read '[:db/id
|
||||
:vendor/name
|
||||
{:vendor/legal-entity-1099-type [:db/ident]}
|
||||
@@ -59,7 +58,7 @@
|
||||
client-id
|
||||
vendor-id)))
|
||||
|
||||
(defn fetch-page [{:keys [trimmed-clients parsed-query-params] :as request user :identity}]
|
||||
(defn fetch-page [{:keys [trimmed-clients query-params] :as request user :identity}]
|
||||
(let [results (dc/q '[:find
|
||||
(pull ?c [:client/code :db/id])
|
||||
(pull ?v vendor-read)
|
||||
@@ -83,8 +82,8 @@
|
||||
(sort-by (fn [[client _ amount]]
|
||||
[(:client/code client ) amount]))
|
||||
(into []))
|
||||
paginated (apply-pagination-raw {:start (:start parsed-query-params)
|
||||
:per-page (:per-page parsed-query-params)} all)]
|
||||
paginated (apply-pagination-raw {:start (:start query-params)
|
||||
:per-page (:per-page query-params)} all)]
|
||||
[(:entries paginated) (:count paginated)]))
|
||||
|
||||
(def grid-page
|
||||
@@ -102,6 +101,7 @@
|
||||
"1099 Vendor Info"]]
|
||||
:title "1099 Vendors"
|
||||
:entity-name "Vendors"
|
||||
:query-schema query-schema
|
||||
:route :company-1099-vendor-table
|
||||
:row-buttons (fn [request e]
|
||||
[(com/icon-button {:hx-get (url (bidi/path-for ssr-routes/only-routes
|
||||
@@ -358,27 +358,31 @@
|
||||
(def page (helper/page-route grid-page))
|
||||
|
||||
(def key->handler
|
||||
(apply-middleware-to-all-handlers
|
||||
(->>
|
||||
{
|
||||
:company-1099 page
|
||||
:company-1099-vendor-table vendor-table
|
||||
:company-1099-vendor-dialog (-> vendor-dialog
|
||||
(wrap-entity [:route-params :vendor-id] default-vendor-read)
|
||||
(wrap-schema-enforce :route-schema [:map [:vendor-id entity-id]]
|
||||
:query-schema [:map [:client-id entity-id]]))
|
||||
:company-1099-vendor-save (-> vendor-save
|
||||
(wrap-entity [:form-params :db/id] default-vendor-read)
|
||||
(wrap-schema-enforce :form-schema form-schema
|
||||
:route-schema [:map [:vendor-id entity-id]]
|
||||
:query-schema [:map [:client-id entity-id]])
|
||||
(wrap-nested-form-params)
|
||||
(wrap-form-4xx-2 (-> vendor-dialog
|
||||
(wrap-entity [:form-params :db/id] default-vendor-read)
|
||||
(wrap-entity [:route-params :vendor-id] default-vendor-read)
|
||||
(wrap-schema-enforce :route-schema [:map [:vendor-id entity-id]]
|
||||
:query-schema [:map [:client-id entity-id]]))))})
|
||||
(fn [h]
|
||||
(-> h
|
||||
(wrap-secure)
|
||||
(wrap-client-redirect-unauthenticated)))))
|
||||
(apply-middleware-to-all-handlers
|
||||
(->>
|
||||
{:company-1099 page
|
||||
:company-1099-vendor-table vendor-table
|
||||
:company-1099-vendor-dialog (-> vendor-dialog
|
||||
(wrap-entity [:route-params :vendor-id] default-vendor-read)
|
||||
(wrap-schema-enforce :route-schema [:map [:vendor-id entity-id]]
|
||||
:query-schema [:map [:client-id entity-id]]))
|
||||
:company-1099-vendor-save (-> vendor-save
|
||||
(wrap-entity [:form-params :db/id] default-vendor-read)
|
||||
(wrap-schema-enforce :form-schema form-schema
|
||||
:route-schema [:map [:vendor-id entity-id]]
|
||||
:query-schema [:map [:client-id entity-id]])
|
||||
(wrap-nested-form-params)
|
||||
(wrap-form-4xx-2 (-> vendor-dialog
|
||||
(wrap-entity [:form-params :db/id] default-vendor-read)
|
||||
(wrap-entity [:route-params :vendor-id] default-vendor-read)
|
||||
(wrap-schema-enforce :route-schema [:map [:vendor-id entity-id]]
|
||||
:query-schema [:map [:client-id entity-id]]))))})
|
||||
(fn [h]
|
||||
(-> h
|
||||
(wrap-copy-qp-pqp)
|
||||
(wrap-apply-sort grid-page)
|
||||
(wrap-merge-prior-hx)
|
||||
(wrap-schema-enforce :query-schema query-schema)
|
||||
(wrap-schema-enforce :hx-schema query-schema)
|
||||
(wrap-secure)
|
||||
(wrap-client-redirect-unauthenticated)))))
|
||||
|
||||
@@ -1,23 +1,33 @@
|
||||
(ns auto-ap.ssr.company.plaid
|
||||
(:require [auto-ap.datomic
|
||||
(:require
|
||||
[auto-ap.datomic
|
||||
:refer [add-sorter-fields apply-pagination apply-sort-3 conn merge-query
|
||||
pull-attr pull-many-by-id query2]]
|
||||
[auto-ap.graphql.utils :refer [assert-can-see-client]]
|
||||
[auto-ap.logging :as alog]
|
||||
[auto-ap.plaid.core :as p]
|
||||
[auto-ap.ssr-routes :as ssr-routes]
|
||||
[auto-ap.ssr.components :as com]
|
||||
[auto-ap.ssr.grid-page-helper :as helper]
|
||||
[auto-ap.ssr.hx :as hx]
|
||||
[auto-ap.ssr.svg :as svg]
|
||||
[auto-ap.ssr.utils :refer [html-response]]
|
||||
[auto-ap.time :as atime]
|
||||
[bidi.bidi :as bidi]
|
||||
[clj-time.coerce :as coerce]
|
||||
[clj-time.core :as time]
|
||||
[clojure.string :as str]
|
||||
[datomic.api :as dc]
|
||||
[hiccup2.core :as hiccup]))
|
||||
[auto-ap.graphql.utils :refer [assert-can-see-client]]
|
||||
[auto-ap.logging :as alog]
|
||||
[auto-ap.plaid.core :as p]
|
||||
[auto-ap.query-params :refer [wrap-copy-qp-pqp]]
|
||||
[auto-ap.routes.utils :refer [wrap-client-redirect-unauthenticated
|
||||
wrap-secure]]
|
||||
[auto-ap.ssr-routes :as ssr-routes]
|
||||
[auto-ap.ssr.components :as com]
|
||||
[auto-ap.ssr.grid-page-helper :as helper :refer [wrap-apply-sort]]
|
||||
[auto-ap.ssr.svg :as svg]
|
||||
[auto-ap.ssr.utils :refer [apply-middleware-to-all-handlers
|
||||
default-grid-fields-schema html-response
|
||||
wrap-merge-prior-hx wrap-schema-enforce]]
|
||||
[auto-ap.time :as atime]
|
||||
[bidi.bidi :as bidi]
|
||||
[clj-time.coerce :as coerce]
|
||||
[clj-time.core :as time]
|
||||
[clojure.string :as str]
|
||||
[datomic.api :as dc]
|
||||
[hiccup2.core :as hiccup]
|
||||
[malli.core :as mc]))
|
||||
(def query-schema (mc/schema
|
||||
[:maybe
|
||||
(into [:map {} ]
|
||||
default-grid-fields-schema)]))
|
||||
|
||||
(def default-read '[:db/id
|
||||
:plaid-item/external-id
|
||||
@@ -37,21 +47,21 @@
|
||||
:plaid-account/name]}])
|
||||
|
||||
(defn fetch-ids [db request]
|
||||
(let [query-params (:parsed-query-params request)
|
||||
(let [query-params (:query-params request)
|
||||
query (cond-> {:query {:find []
|
||||
:in ['$ '[?xx ...]]
|
||||
:where ['[?e :plaid-item/client ?xx]]}
|
||||
:args [db (:trimmed-clients request)]}
|
||||
|
||||
(:sort query-params) (add-sorter-fields {"external-id" ['[?e :plaid-item/external-id ?sort-external-id]]
|
||||
"status" ['[?e :plaid-item/status ?sort-status]]}
|
||||
query-params)
|
||||
"plaid-bank-status" ['[?e :plaid-item/status ?sort-plaid-bank-status]]
|
||||
"status" ['[?e :plaid-item/status ?sort-status]]}
|
||||
query-params)
|
||||
|
||||
true
|
||||
(merge-query {:query {:find ['?e]
|
||||
:where ['[?e :plaid-item/external-id]]}}))]
|
||||
|
||||
(clojure.pprint/pprint query-params)
|
||||
(cond->> (query2 query)
|
||||
true (apply-sort-3 query-params)
|
||||
true (apply-pagination query-params))))
|
||||
@@ -145,6 +155,7 @@
|
||||
"Plaid"]]
|
||||
:title "Plaid Accounts"
|
||||
:entity-name "Plaid accounts"
|
||||
:query-schema query-schema
|
||||
:route :company-plaid-table
|
||||
:action-buttons (fn [request]
|
||||
(when-let [client-code (:client/code (:client request))]
|
||||
@@ -172,7 +183,6 @@
|
||||
:render :plaid-item/external-id}
|
||||
{:key "integreat-plaid-status"
|
||||
:name "Integreat ↔ Plaid status"
|
||||
:sort-key "integreat-plaid-status"
|
||||
:render (fn [e]
|
||||
|
||||
(let [bad-integration (->> (:plaid-item/accounts e)
|
||||
@@ -229,3 +239,21 @@
|
||||
(def page (helper/page-route grid-page))
|
||||
(def table (helper/table-route grid-page))
|
||||
|
||||
(def key->handler
|
||||
(apply-middleware-to-all-handlers
|
||||
{
|
||||
:company-plaid page
|
||||
:company-plaid-table table
|
||||
:company-plaid-link link
|
||||
:company-plaid-relink relink
|
||||
|
||||
}
|
||||
(fn [h]
|
||||
(-> h
|
||||
(wrap-copy-qp-pqp)
|
||||
(wrap-apply-sort grid-page)
|
||||
(wrap-merge-prior-hx)
|
||||
(wrap-schema-enforce :query-schema query-schema)
|
||||
(wrap-schema-enforce :hx-schema query-schema)
|
||||
(wrap-client-redirect-unauthenticated)
|
||||
(wrap-secure)))))
|
||||
@@ -1,30 +1,45 @@
|
||||
(ns auto-ap.ssr.company.reports
|
||||
(:require [amazonica.aws.s3 :as s3]
|
||||
[auto-ap.datomic
|
||||
(:require
|
||||
[amazonica.aws.s3 :as s3]
|
||||
[auto-ap.datomic
|
||||
:refer [add-sorter-fields apply-pagination apply-sort-3 conn merge-query
|
||||
pull-many query2]]
|
||||
[auto-ap.graphql.utils :refer [assert-can-see-client is-admin?]]
|
||||
[auto-ap.routes.utils :refer [wrap-client-redirect-unauthenticated
|
||||
wrap-secure]]
|
||||
[auto-ap.ssr-routes :as ssr-routes]
|
||||
[auto-ap.ssr.company.reports.expense :as company-expense-report]
|
||||
[auto-ap.ssr.company.reports.reconciliation :as company-reconciliation-report]
|
||||
[auto-ap.ssr.components :as com]
|
||||
[auto-ap.ssr.grid-page-helper :as helper]
|
||||
[auto-ap.ssr.svg :as svg]
|
||||
[auto-ap.ssr.utils :refer [apply-middleware-to-all-handlers
|
||||
html-response]]
|
||||
[auto-ap.time :as atime]
|
||||
[bidi.bidi :as bidi]
|
||||
[clojure.set :as set]
|
||||
[config.core :refer [env]]
|
||||
[datomic.api :as dc]))
|
||||
[auto-ap.graphql.utils :refer [assert-can-see-client is-admin?]]
|
||||
[auto-ap.query-params :refer [wrap-copy-qp-pqp]]
|
||||
[auto-ap.routes.utils :refer [wrap-client-redirect-unauthenticated
|
||||
wrap-secure]]
|
||||
[auto-ap.ssr-routes :as ssr-routes]
|
||||
[auto-ap.ssr.company.reports.expense :as company-expense-report]
|
||||
[auto-ap.ssr.company.reports.reconciliation :as company-reconciliation-report]
|
||||
[auto-ap.ssr.components :as com]
|
||||
[auto-ap.ssr.grid-page-helper :as helper :refer [wrap-apply-sort]]
|
||||
[auto-ap.ssr.svg :as svg]
|
||||
[auto-ap.ssr.utils :refer [apply-middleware-to-all-handlers clj-date-schema
|
||||
default-grid-fields-schema html-response
|
||||
wrap-merge-prior-hx wrap-schema-enforce]]
|
||||
[auto-ap.time :as atime]
|
||||
[bidi.bidi :as bidi]
|
||||
[clojure.set :as set]
|
||||
[config.core :refer [env]]
|
||||
[datomic.api :as dc]
|
||||
[malli.core :as mc]))
|
||||
|
||||
(def query-schema (mc/schema
|
||||
[:maybe
|
||||
(into [:map {:date-range [:date-range :start-date :end-date]}
|
||||
|
||||
[:start-date {:optional true}
|
||||
[:maybe clj-date-schema]]
|
||||
[:end-date {:optional true}
|
||||
[:maybe clj-date-schema]]
|
||||
[:client {:optional true :default nil} [:maybe [:entity-map {:pull [:db/id :client/name]}]]]
|
||||
]
|
||||
default-grid-fields-schema)]))
|
||||
(def default-read '[:db/id :report/client [:report/created :xform clj-time.coerce/from-date] :report/url :report/name :report/creator])
|
||||
|
||||
(defn fetch-ids [db request]
|
||||
|
||||
(let [query-params (:parsed-query-params request)
|
||||
(let [query-params (:query-params request)
|
||||
query (cond-> {:query {:find []
|
||||
:in '[$ [?c ...]]
|
||||
:where '[[?e :report/client ?c]]}
|
||||
@@ -80,6 +95,7 @@
|
||||
"Reports"]]
|
||||
:title "Reports"
|
||||
:entity-name "Reports"
|
||||
:query-schema query-schema
|
||||
:route :company-reports-table
|
||||
:row-buttons (fn [request e]
|
||||
[(com/a-icon-button {:href (:report/url e)}
|
||||
@@ -143,5 +159,10 @@
|
||||
(into company-reconciliation-report/key->handler))
|
||||
(fn [h]
|
||||
(-> h
|
||||
(wrap-copy-qp-pqp)
|
||||
(wrap-apply-sort grid-page)
|
||||
(wrap-merge-prior-hx)
|
||||
(wrap-schema-enforce :query-schema query-schema)
|
||||
(wrap-schema-enforce :hx-schema query-schema)
|
||||
(wrap-secure)
|
||||
(wrap-client-redirect-unauthenticated)))))
|
||||
|
||||
@@ -1,19 +1,28 @@
|
||||
(ns auto-ap.ssr.company.yodlee
|
||||
(:require [auto-ap.datomic
|
||||
(:require
|
||||
[auto-ap.datomic
|
||||
:refer [add-sorter-fields apply-pagination apply-sort-3 conn merge-query
|
||||
pull-attr pull-many query2]]
|
||||
[auto-ap.graphql.utils :refer [assert-can-see-client is-admin?]]
|
||||
[auto-ap.ssr-routes :as ssr-routes]
|
||||
[auto-ap.ssr.components :as com]
|
||||
[auto-ap.ssr.grid-page-helper :as helper]
|
||||
[auto-ap.ssr.svg :as svg]
|
||||
[auto-ap.ssr.utils :refer [html-response modal-response]]
|
||||
[auto-ap.time :as atime]
|
||||
[auto-ap.yodlee.core2 :as yodlee]
|
||||
[bidi.bidi :as bidi]
|
||||
[config.core :refer [env]]
|
||||
[datomic.api :as dc]
|
||||
[hiccup2.core :as hiccup]))
|
||||
[auto-ap.graphql.utils :refer [assert-can-see-client is-admin?]]
|
||||
[auto-ap.permissions :refer [wrap-must]]
|
||||
[auto-ap.query-params :refer [wrap-copy-qp-pqp]]
|
||||
[auto-ap.routes.utils :refer [wrap-client-redirect-unauthenticated
|
||||
wrap-secure]]
|
||||
[auto-ap.ssr-routes :as ssr-routes]
|
||||
[auto-ap.ssr.components :as com]
|
||||
[auto-ap.ssr.grid-page-helper :as helper :refer [wrap-apply-sort]]
|
||||
[auto-ap.ssr.svg :as svg]
|
||||
[auto-ap.ssr.utils :refer [apply-middleware-to-all-handlers
|
||||
default-grid-fields-schema entity-id
|
||||
html-response modal-response wrap-merge-prior-hx
|
||||
wrap-schema-enforce]]
|
||||
[auto-ap.time :as atime]
|
||||
[auto-ap.yodlee.core2 :as yodlee]
|
||||
[bidi.bidi :as bidi]
|
||||
[config.core :refer [env]]
|
||||
[datomic.api :as dc]
|
||||
[hiccup2.core :as hiccup]
|
||||
[malli.core :as mc]))
|
||||
|
||||
(def default-read '[:db/id
|
||||
[:yodlee-provider-account/last-updated :xform clj-time.coerce/from-date]
|
||||
@@ -23,11 +32,15 @@
|
||||
{:yodlee-provider-account/accounts [:yodlee-account/name :yodlee-account/number]
|
||||
:yodlee-provider-account/client [:client/code]}])
|
||||
|
||||
|
||||
(def query-schema (mc/schema
|
||||
[:maybe
|
||||
(into [:map {}
|
||||
[:client-id {:optional true} [:maybe entity-id]] ]
|
||||
default-grid-fields-schema)]))
|
||||
|
||||
(defn fetch-ids [db request]
|
||||
(let [query-params (:parsed-query-params request)]
|
||||
(->> (cond-> {:query {:find []
|
||||
(let [query-params (:query-params request)
|
||||
query (cond-> {:query {:find []
|
||||
:in ['$ '[?xx ...]]
|
||||
:where ['[?e :yodlee-provider-account/id]
|
||||
'[?e :yodlee-provider-account/client ?xx]]}
|
||||
@@ -35,11 +48,15 @@
|
||||
|
||||
|
||||
(:sort query-params) (add-sorter-fields {"status" ['[?e :yodlee-provider-account/status ?sort-status]]
|
||||
"last-updated" ['[?e :yodlee-provider-account/last-updated ?sort-last-updated]]}
|
||||
"client" ['[?e :yodlee-provider-account/client ?c]
|
||||
'[?c :client/code ?sort-client]]
|
||||
"provider-account" ['[?e :yodlee-provider-account/id ?sort-provider-account]]
|
||||
"last-updated" ['[?e :yodlee-provider-account/last-updated ?sort-last-updated]]}
|
||||
query-params)
|
||||
true
|
||||
(merge-query {:query {:find ['?e ]
|
||||
:where ['[?e :yodlee-provider-account/id]]}}))
|
||||
:where ['[?e :yodlee-provider-account/id]]}}))]
|
||||
(->> query
|
||||
|
||||
(query2)
|
||||
(apply-sort-3 query-params)
|
||||
@@ -133,6 +150,7 @@ fastlink.open({fastLinkURL: '%s',
|
||||
"Yodlee"]]
|
||||
:title "Yodlee Accounts"
|
||||
:entity-name "Yodlee accounts"
|
||||
:query-schema query-schema
|
||||
:route :company-yodlee-table
|
||||
:action-buttons (fn [request]
|
||||
[[:div.flex.flex-col.flex-shrink
|
||||
@@ -211,3 +229,21 @@ fastlink.open({fastLinkURL: '%s',
|
||||
identity
|
||||
provider-account
|
||||
{:flash? true}))))
|
||||
|
||||
|
||||
(def key->handler
|
||||
(apply-middleware-to-all-handlers
|
||||
{
|
||||
:company-yodlee page
|
||||
:company-yodlee-table table
|
||||
:company-yodlee-fastlink-dialog fastlink-dialog
|
||||
}
|
||||
(fn [h]
|
||||
(-> h
|
||||
(wrap-copy-qp-pqp)
|
||||
(wrap-apply-sort grid-page)
|
||||
(wrap-merge-prior-hx)
|
||||
(wrap-schema-enforce :query-schema query-schema)
|
||||
(wrap-schema-enforce :hx-schema query-schema)
|
||||
(wrap-client-redirect-unauthenticated)
|
||||
(wrap-secure)))))
|
||||
Reference in New Issue
Block a user