allow custom sales export.
This commit is contained in:
@@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
(defroutes api-routes
|
(defroutes api-routes
|
||||||
(context "/api" []
|
(context "/api" []
|
||||||
exports/routes
|
exports/export-routes
|
||||||
yodlee/routes
|
yodlee/routes
|
||||||
yodlee2/routes
|
yodlee2/routes
|
||||||
invoices/routes
|
invoices/routes
|
||||||
|
|||||||
@@ -4,22 +4,42 @@
|
|||||||
[auto-ap.datomic.ledger :as d-ledger]
|
[auto-ap.datomic.ledger :as d-ledger]
|
||||||
[auto-ap.datomic.transactions :as d-transactions]
|
[auto-ap.datomic.transactions :as d-transactions]
|
||||||
[auto-ap.datomic.vendors :as d-vendors]
|
[auto-ap.datomic.vendors :as d-vendors]
|
||||||
|
[buddy.sign.jwt :as jwt]
|
||||||
[auto-ap.graphql :as graphql]
|
[auto-ap.graphql :as graphql]
|
||||||
[auto-ap.graphql.utils :refer [->graphql <-graphql assert-admin]]
|
[auto-ap.graphql.utils :refer [->graphql <-graphql assert-admin assert-can-see-client]]
|
||||||
[auto-ap.routes.utils :refer [wrap-secure]]
|
[auto-ap.routes.utils :refer [wrap-secure]]
|
||||||
[clojure.tools.logging :as log]
|
[clojure.tools.logging :as log]
|
||||||
[auto-ap.logging :refer [error-event info-event warn-event]]
|
[auto-ap.logging :refer [error-event info-event warn-event]]
|
||||||
[clj-time.coerce :as coerce :refer [to-date]]
|
[clj-time.coerce :as coerce :refer [to-date]]
|
||||||
[clj-time.core :as time]
|
[clj-time.core :as time]
|
||||||
[compojure.core :refer [context defroutes GET wrap-routes]]
|
[config.core :refer [env]]
|
||||||
|
[compojure.core :refer [context defroutes GET wrap-routes routes]]
|
||||||
[datomic.api :as d]
|
[datomic.api :as d]
|
||||||
[ring.middleware.json :refer [wrap-json-response]]
|
[ring.middleware.json :refer [wrap-json-response]]
|
||||||
[venia.core :as venia]
|
[venia.core :as venia]
|
||||||
[yang.time :refer [time-it]]))
|
[yang.time :refer [time-it]]))
|
||||||
|
|
||||||
(defroutes routes
|
(def api-key-authed-routes
|
||||||
(wrap-routes
|
(context "/" []
|
||||||
(wrap-routes
|
(GET "/sales/aggregated/export" {:keys [query-params identity :as params]}
|
||||||
|
(let [client-id (Long/parseLong (get query-params "client-id"))
|
||||||
|
identity (jwt/unsign (get query-params "key") (:jwt-secret env) {:alg :hs512})]
|
||||||
|
(assert-can-see-client identity client-id)
|
||||||
|
(into (list)
|
||||||
|
(d/query {:query {:find '[?d4 (sum ?total) (sum ?tax) (sum ?tip) (sum ?service-charge)]
|
||||||
|
:in '[$ ?c]
|
||||||
|
:where '[[?s :sales-order/client ?c]
|
||||||
|
[?s :sales-order/date ?d]
|
||||||
|
[?s :sales-order/total ?total]
|
||||||
|
[?s :sales-order/tax ?tax]
|
||||||
|
[?s :sales-order/tip ?tip]
|
||||||
|
[?s :sales-order/service-charge ?service-charge]
|
||||||
|
[(clj-time.coerce/to-date-time ?d) ?d2]
|
||||||
|
[(auto-ap.time/localize ?d2) ?d3]
|
||||||
|
[(auto-ap.time/unparse ?d3 auto-ap.time/normal-date) ?d4]]}
|
||||||
|
:args [(d/db conn) client-id]}))))))
|
||||||
|
|
||||||
|
(def admin-only-routes
|
||||||
(context "/" []
|
(context "/" []
|
||||||
(GET "/invoices/export" {:keys [query-params identity] :as request}
|
(GET "/invoices/export" {:keys [query-params identity] :as request}
|
||||||
(assert-admin identity)
|
(assert-admin identity)
|
||||||
@@ -50,8 +70,9 @@
|
|||||||
payments (graphql/query identity (venia/graphql-query {:venia/queries (->graphql query)}))]
|
payments (graphql/query identity (venia/graphql-query {:venia/queries (->graphql query)}))]
|
||||||
(list (:all-payments (:data payments)))))
|
(list (:all-payments (:data payments)))))
|
||||||
|
|
||||||
(GET "/sales/export" {:keys [query-params identity]}
|
(GET "/sales/export" {:keys [query-params identity :as params]}
|
||||||
(assert-admin identity)
|
(assert-admin identity)
|
||||||
|
(println params)
|
||||||
(let [query [[:all_sales_orders
|
(let [query [[:all_sales_orders
|
||||||
(cond-> {:client-code (query-params "client-code")}
|
(cond-> {:client-code (query-params "client-code")}
|
||||||
(query-params "after") (assoc :date-range {:start (query-params "after")
|
(query-params "after") (assoc :date-range {:start (query-params "after")
|
||||||
@@ -98,6 +119,8 @@
|
|||||||
charges)))))
|
charges)))))
|
||||||
(:all-sales-orders (:data payments))))))
|
(:all-sales-orders (:data payments))))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(GET "/expected-deposit/export" {:keys [query-params identity]}
|
(GET "/expected-deposit/export" {:keys [query-params identity]}
|
||||||
(assert-admin identity)
|
(assert-admin identity)
|
||||||
(let [query [[:all_expected_deposits
|
(let [query [[:all_expected_deposits
|
||||||
@@ -213,8 +236,12 @@
|
|||||||
(GET "/raw" {:keys [query-params identity]}
|
(GET "/raw" {:keys [query-params identity]}
|
||||||
(assert-admin identity)
|
(assert-admin identity)
|
||||||
(log/info "Executing raw query " (get query-params "query" ))
|
(log/info "Executing raw query " (get query-params "query" ))
|
||||||
(into (list) (apply d/q (clojure.edn/read-string (get query-params "query" )) (into [(d/db conn)] (clojure.edn/read-string (get query-params "args" "[]")))))))
|
(into (list) (apply d/q (clojure.edn/read-string (get query-params "query" )) (into [(d/db conn)] (clojure.edn/read-string (get query-params "args" "[]"))))))))
|
||||||
|
(defroutes export-routes
|
||||||
|
(wrap-routes
|
||||||
|
(routes
|
||||||
|
api-key-authed-routes
|
||||||
|
|
||||||
|
(wrap-routes admin-only-routes wrap-secure))
|
||||||
|
|
||||||
wrap-secure)
|
|
||||||
wrap-json-response))
|
wrap-json-response))
|
||||||
|
|||||||
Reference in New Issue
Block a user