started work on bank comparisons.

This commit is contained in:
2024-04-26 21:51:56 -07:00
parent 227acba4e2
commit c8f438f616
10 changed files with 147 additions and 20 deletions

View File

@@ -15,6 +15,7 @@
[auto-ap.ssr.admin.transaction-rules :as admin-rules]
[auto-ap.ssr.admin.vendors :as admin-vendors]
[auto-ap.ssr.auth :as auth]
[auto-ap.ssr.dashboard :as dashboard]
[auto-ap.ssr.company :as company]
[auto-ap.ssr.company-dropdown :as company-dropdown]
[auto-ap.ssr.company.company-1099 :as company-1099]
@@ -98,6 +99,7 @@
(into admin-vendors/key->handler)
(into admin-clients/key->handler)
(into admin-rules/key->handler)
(into dashboard/key->handler)
(into indicators/key->handler)
(into payments/key->handler)
(into oin/route->handler)))

View File

@@ -0,0 +1,73 @@
(ns auto-ap.ssr.dashboard
(:require [auto-ap.datomic :refer [conn]]
[auto-ap.routes.dashboard :as d-routes]
[auto-ap.routes.utils :refer [wrap-admin
wrap-client-redirect-unauthenticated]]
[auto-ap.ssr-routes :as ssr-routes]
[auto-ap.ssr.components :as com]
[auto-ap.ssr.ui :refer [base-page]]
[auto-ap.ssr.utils :refer [apply-middleware-to-all-handlers]]
[bidi.bidi :as bidi]
[datomic.api :as dc]
[auto-ap.time :as atime]))
(defn- page-contents [request]
[:div
[:h1.text-2xl.font-bold "Bank Accounts"]
(com/card {:class "inline-block"}
[:div.inline-flex.flex-wrap
(for [c (:clients request)
b (:client/bank-accounts (dc/pull (dc/db conn) '[{ :client/bank-accounts
[:bank-account/current-balance
[ :bank-account/current-balance-synced :xform clj-time.coerce/from-date]
:bank-account/name
{:bank-account/intuit-bank-account [:intuit-bank-account/current-balance
[ :intuit-bank-account/last-synced :xform clj-time.coerce/from-date]]}
{:bank-account/yodlee-account [:yodlee-account/available-balance
[:yodlee-account/last-synced :xform clj-time.coerce/from-date]]}]}]
(:db/id c)))]
[:div.flex.flex-col.p-4.border-l-2
[:div (:client/name c)]
[:div (:bank-account/name b)]
[:div.inline-flex.justify-between [:div "Ledger Balance"] (format "$%,.2f" (or (:bank-account/current-balance b) 0.0)) ]
[:div.inline-flex.justify-end.text-xs.text-gray-400.it (some-> (:bank-account/current-balance-synced b)
(atime/unparse-local atime/standard-time)
(#(str "Synced " %))) ]
[:div.inline-flex.justify-between [:div "Source Balance"] (format "$%,.2f" (or (-> b :bank-account/intuit-bank-account :intuit-bank-account/current-balance)
(-> b :bank-account/yodlee-account :yodlee-account/available-balance)
0.0))]
[:div.inline-flex.justify-end.text-xs.text-gray-400.it (or (some-> (:bank-account/intuit-bank-account b)
(:intuit-bank-account/last-synced)
(atime/unparse-local atime/standard-time)
(#(str "Synced " %)))
(some-> (:bank-account/yodlee-account b)
(:yodlee-account/last-synced)
(atime/unparse-local atime/standard-time)
(#(str "Synced " %))))]])]) ])
(defn page [request]
(base-page
request
(com/page {:nav com/main-aside-nav
:client-selection (:client-selection request)
:clients (:clients request)
:client (:client request)
:identity (:identity request)
:app-params {:hx-get (bidi/path-for ssr-routes/only-routes
::d-routes/page)
:hx-trigger "clientSelected from:body"
:hx-select "#app-contents"
:hx-swap "outerHTML swap:300ms"}
:request request}
(com/breadcrumbs {}
[:a {:href (bidi/path-for ssr-routes/only-routes ::d-routes/page)}
"Dashboard"])
(page-contents request))
"Dashboard"))
(def key->handler
( apply-middleware-to-all-handlers
{::d-routes/page page}
(fn [h]
(wrap-client-redirect-unauthenticated (wrap-admin h)))))